完整性约束
详细内容见 https://www.cnblogs.com/geaozhang/p/6786105.html 和http://www.w3school.com.cn/sql/sql_primarykey.asp
1、primary key 主键约束
1.1 在创建表时创建主键约束
CREATE TABLE Persons( Id_P int NOT NULL PRIMARY KEY, Name varchar(255) NOT NULL, Address varchar(255), PRIMARY KEY (Id_P) ); 或者 CREATE TABLE Persons( Id_P int NOT NULL PRIMARY KEY, Name varchar(255) NOT NULL, Address varchar(255), ); 如果需要为主键约束命名,以及为多个列定义主键约束(联合主键), 请使用下面的 SQL 语法: CREATE TABLE Persons( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName) ); 即 constraint 主键名 primary key(列名); constraint 主键名 primary key(列名, 列名……);
1.2 给已存在的表添加主键
alter table Person add primary key (Id_P); 为主键命名或创建联合主键时: alter table Person add constraint 主键名 primary key (Id_P, LastName);
1.3 删除表的主键
alter table 表名 drop primary key;
2、foreign key 外键约束
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
2.1 在创建表时创建外键约束
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) ) # Persons是主表,Orders是从表,"Orders" 表中的 "Id_P" 列是 "Orders" 表中的外键。 如果需要为外键命名,以及为多个列定义外键约束,请使用下面的 SQL 语法: CREATE TABLE Orders( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), constraint 外键名 foreign key (Id_P) references Persons(Id_P) )
2.2 给已存在的表添加外键
alter table 表名 add foreign key (列名) references 主表名 (列名); 例: ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P); 当需要为外键命名或者为多个列定义外键时: alter table 表名 add constraint 外键名 foreign key (列名) references 主表名 (列名); 例: ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P);
1.3 删除表的外键
alter table 表名 drop foreign key 外键名; 例: ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders;
修改约束
可以添加或删除约束,但是不能修改一个已有的约束。
ALTER [IGNORE] TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY(col_name,...) |ADD [CONSTRAINT [symbol]] UNIQUE (col_name,...) |ADD [CONSTRAINT [symbol]] FOREIGN KEY (col_name,...) References parent_table(col_name) |DROP PRIMARY KEY |DROP FOREIGN KEY fk_symbo |DROP {INDEX|KEY} index_name --删除唯一性约束