转载自 https://www.cnblogs.com/CreateMyself/p/6104345.html
唯一约束
对字符串和文本类型无法添加唯一约束(索引字节最大为900,所以这里我们取的max会出错,而不是针对于类型)
(*)主键约束和唯一约束的区别?
主键约束:通过对列强制唯一性,此时主键在列上创建一个聚集索引且主键不能为空。
唯一约束:通过对列强制唯一性,此时在列上创建的唯一键为非聚集索引,唯一约束仅仅允许一个NULL值。
二者最大区别在于:主键约束强调的是行的唯一性来标识行,不允许重复,而唯一约束强调的是列的唯一性不允许重复。
(*)唯一约束和唯一索引区别
唯一约束不能筛选,而唯一索引能进行筛选,如下
CREATE UNIQUE NONCLUSTERED INDEX uq_code_filter
ON test(Code) WHERE Code is not null;
外键约束
外键必须是另一张表的主键或者是唯一约束
check约束
ALTER TABLE dbo.Employees
ADD CONSTRAINT CHK_Employees_salary
CHECK(salary > 0.00)
如果试图插入非正值,将会被数据库所拒绝。我们需要注意的是Check约束只是对于结果为false才会拒绝,如果结果为True或者UNKNOWN是会被接受,即当结果为NULL时也会插入或者修改成功。
默认约束
ALTER TABLE dbo.Employees
ADD CONSTRAINT DFT_Employees_updateTime
DEFAULT(GETDATE()) FOR UpdateTime
浙公网安备 33010602011771号