SQL高级应用--约束二--(PRIMARY KEY、FOREIGN KEY)

四、SQL PRIMARY KEY 约束

  PRIMARY KEY 约束唯一标识数据库表中的每条记录

  主键必须包含唯一的值

  主键列不能包含 NULL 值

  每个表都应该有一个主键,并且每个表只能有一个主键

下面的SQL 在 Persons 表创建时在 Id_P列创建PRIMARY KEY 约束

  MySQL

CREATE TABLE Persons
(
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    PRIMARY KEY(Id_P)
)

  SQL SERVER / Oracle / MS Access

CREATE TABLE Persons
(
    Id_P int NOT NULL PRIMARY KEY,
    LastName  varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
)

  如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL语法

  MySQL / SQL Server / Oracle / MS Access

CREATE TABLE Persons
(
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT pk_PersonID PRIMARY KEY (Id_P, LastName)
)

  

若在表已存在情况下为 Id_P列创建 PRIMARY KEY 约束,用下面的SQL

  MySQL / SQL Server / Oracle / MS Access

ALTER TABLE Persons
ADD PRIMARY KEY (Id_P)

  

若需命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请用下面的 SQL 

  MySQL / SQL Server / Oracle / MS Access

ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)

  如果使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL的值(在表首次创建时)

  

撤销 PRIMARY KEY 约束

  如需撤销 PRIMARY KEY 约束,请使用下面的 SQL

  MySQL

ALTER TABLE Persons
DROP PRIMARY KEY

  SQL Server / Oracle / MS Access

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

  

五、SQL FOREIGN KEY 约束

  一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY  

  下面有两个表

  "Persons" 表:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

  "Orders" 表:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

  请注意: Orders中的 Id_P 列指向 Persons 表中的 Id_P 列

  Persons 表中的 Id_P 列是 Persons表中的 PRIMARY KEY

  Orders 表中的Id_P 列是 Orders表中的 FOREIGN KEY

  FOREIGN KEY约束用于预防破坏表之间连接的动作

  FOREIGN KEY约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一

  

下面的SQL在Orders 表创建时为 Id_P列创建 FOREIGN KEY

  MySQL

CREATE TABLE Orders
(
    Id_O int NOT NULL,
    OrderNo int NOT NULL,
    Id_P int,
    PRIMARY KEY (Id_O),
    FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

  SQL Server / Oracle / MS Access

CREATE TABLE Orders
(
    Id_O int NOT NULL PRIMARY KEY,
    OrderNo int NOT NULL,
    Id_P int FOREIGN KEY REFERENCE Persons(Id_P)
)

  

如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的SQL

  MySQL / SQL Server / Oracle / MS Access

CREATE TABLE Orders
(
    Id_O int NOT NULL,
    OrderNo int NOT NULL,
    Id_P int,
    PRIMARY KEY (Id_O),
    CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons (Id_P)
)

  

如果在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束,请使用下面的 SQL

  MySQL / SQL Server / Oracle / MS Access

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

  如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:

  MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

  

撤销 FOREIGN KEY 约束

  如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:

  MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

  SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

  

时间: 2024-10-12 13:29:40

SQL高级应用--约束二--(PRIMARY KEY、FOREIGN KEY)的相关文章

oracle约束总结(not null/unique/primary key/foreign key/check)

约束(constraint):对创建的表的列属性.字段进行的限制.诸如:not null/unique/primary key/foreign key/check 作用范围: ①列级约束只能作用在一个列上 ②表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上) 定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义. - -NOT NULL:不为空约束,只能定义在列级 CREATE TABLE employees( employee_id NUMBER(6), --<sp

SQL高级应用--约束(NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT)

一.SQL约束 约束用于限制加入标的数据的类型 可以在创建表的时候规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE语句) 主要探讨以下的几种约束: 1) NOT NULL 2) UNIQUE 3) PRIMARY KEY 4) FOREIGN KEY 5) CHECK 6) DEFAULT 二.SQL NOT NULL 约束 NOT NULL约束强制列不接受 NULL值 NOT NULL约束强制字段始终包含值.这意味着,如果不向字段添加值,就

SQL高级应用--约束三--(CHECK、DEFAULT)

SQL CHECK 约束 CHECK 约束用于限制列中的值的范围 如果对单个列定义 CHECK 约束,那么该列只允许特定的值 如果对一个表定义 CHECK 约束,那么次约束会在特定的列中对值进行限制 下面的SQL在表创建时为列 创建CHECK约束 下面的SQL 在“Persons”表创建时为“Id_P”列创建 CHECK 约束.CHECK 约束规定“Id_P”列必须只包含大于0的整数 MySQL CREATE TABLE Persons ( Id_P int NOT NULL, LastName

SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主键. SQL PRIMARY KEY Constraint on CREATE TABLE 下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束: MySQL: CREATE TABLE Persons ( Id_P i

SQL FOREIGN KEY 约束

SQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY. 让我们通过一个例子来解释外键.请看下面两个表: "Persons" 表: Id_P LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing &qu

SQL 高级教程之约束

SQL 高级教程之约束 2015/5/8/星期五 9:21:40 我们将主要探讨以下几种约束: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT 补充知识: 使用MySQL数据库desc 表名时,我们看到Key那一栏,可能会有4种值,即 ' ','PRI','UNI','MUL'. 如果Key是空的,那么该列值的可以重复,表示该列没有索引,或者是一个非唯一的复合索引的非前导列: 如果Key是PRI,那么该列是主键的组成部分: 如果Key是

sql 高级 (四)(SQL 约束 (Constraints))

SQL 约束 NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证. 区别:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束. unique  sql  ?unique ?  Constraint   on   create   table(表未被创建) MySql   CREATE TABLE Persons ( Id_P

Database Primary key and Foreign key [From Internet]

Database Primary key and Foreign key --Create Referenced Table CREATE TABLE Department ( DeptID int PRIMARY KEY, --define primary key Name varchar (50) NOT NULL, Address varchar(100) NULL ) --Create Referencing Table CREATE TABLE Employee ( EmpID int

SQL 高级(3)

SQL 高级(3) SQL SELECT INTO 语句 SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档. SQL SELECT INTO 语法 您可以把所有的列插入新表: SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablen