关键字:constraint 约束是保证数据正确的最后一道防线。
增加约束:add
删除约束:drop
更新约束:先drop后add
种类:(非空也算约束一种)
1)主键(PK) primary key :该属性能唯一标识一条记录
2)外键(FK) foreign key:外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持
数据的一致性。 比如A表中的一个字段UserID是B表的主键,那UserID就可以是A表的外键。
4)唯一(UQ) unique
3)默认(DF) default
5)检查(CK) check
CREATE TABLE HR.Employees
(
empid INT NOT NULL IDENTITY,
lastname NVARCHAR(20) NOT NULL,
firstname NVARCHAR(10) NOT NULL,
title NVARCHAR(30) NOT NULL,
titleofcourtesy NVARCHAR(25) NOT NULL,
birthdate DATETIME NOT NULL,
hiredate DATETIME NOT NULL,
address NVARCHAR(60) NOT NULL,
city NVARCHAR(15) NOT NULL,
region NVARCHAR(15) NULL,
postalcode NVARCHAR(10) NULL,
country NVARCHAR(15) NOT NULL,
phone NVARCHAR(24) NOT NULL,
mgrid INT NULL,
CONSTRAINT PK_Employees PRIMARY KEY(empid),--主键约束
CONSTRAINT FK_Employees_Employees FOREIGN KEY(mgrid)
REFERENCES HR.Employees(empid),--外键约束
CONSTRAINT CHK_birthdate CHECK(birthdate <= CURRENT_TIMESTAMP)--check约束
);
alter table 表名 add constraint 约束名(约束简写_表名) primary key/unique 列名
CONSTRAINT PK_Employees PRIMARY KEY(empid)--主键约束
add constraint 约束名(约束简写_表名) foreign key 列名 references 父表(主键列)
CONSTRAINT FK_Employees_Employees FOREIGN KEY(mgrid)
REFERENCES HR.Employees(empid)--外键约束
add constraint 约束名(约束简写_表名) default 值/或函数 for 列名
CONSTRAINT DFT_Products_discontinued DEFAULT(0) FOR mgrid
add constraint 约束名(约束简写_表名) check (包要含约束列条件语句)
CONSTRAINT CHK_birthdate CHECK(birthdate <= CURRENT_TIMESTAMP)--check约束
2) 删除约束(每次删除时,也要指明要修改的表
alter table 表名) alter table 表名 drop constraint 约束名
3) 更新约束:1)+ 2)的组合