主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空 唯一约束(Unique constraint):要求该列唯一,允许为空,但只能出现一个空值 检查约束(Check constraint):某列取值范围限制,格式限制等,如有关年龄、邮箱(必须有@)的约束 默认约束(Default constraint):某列的默认值,如在数据库里有一项数据很多重复,可以设为默认值 外键约束(Foreign Key constraint):用于在两个表之间建立关系,需要指定引用主表的哪一列 语法:ALTER TABLE 表名ADD CONSTRAINT 约束名 约束 类型 具体的约束说明上述语法表示修改某个表,添加某个约束 其中,约束名的命名规则推荐采用“约束类型_约束字段”这样的形式 示例:添加主键约束(将stuNo设为主键):ALTER TABLE stuInfoADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)添加唯一约束(身份证号唯一):ALTER TABLE stuInfoADD CONSTRAINT UQ_stuID UNIQUE (stuID)添加默认约束(如果地址不填,默认为“地址不详”):ALTER TABLE stuInfoADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress添加检查约束(要求年龄只能在 15~40岁之间)ALTER TABLE stuInfoADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)添加外键约束(主表 stuInfo 和从表 stuGrade 建立关系,关联字段为 stuNo ):ALTER TABLE stuGradeADD CONSTRAINT FK_stuNoFOREIGN KEY (stuNo) REFERENCES stuInfo(stuNo)GO语法ALTER TABLE 表名DROP CONSTRAINT 约束名示例:删除stuInfo表中地址默认约束的语句:ALTER TABLE stuInfoDROP CONSTRAINT DF_stuAddress删除外键约束注意事项:对于存在外键约束的表,如果进行删除非空的外键,可能会出现错误 a 如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息 b FOREIGN KEY 约束应用于前面所讲的列,除非指定了源列 c FOREIGN KEY 约束仅能引用位于同一服务器上的同一数据库中的表 数据库间的引用完整性必须通过触发器实现 有关更多信息,请参见 CREATE TRIGGER d FOREIGN KEY 可以引用同一表中的其它列(自引用) e 列级 FOREIGN KEY 约束的 REFERENCES 子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型 f 表级 FOREIGN KEY 约束的 REFERENCES 子句中引用列的数目必须与约束列列表中的列数相同 每个引用列的数据类型也必须与列表中相应列的数据类型相同 e 如果 timestamp 类型的列是外键或被引用键的一部分,则不能指定 CASCADE g 可以在相互间具有引用关系的表上组合使用 CASCADE 和 NO ACTION 如果 SQL Server 遇到 NO ACTION,将终止执行语句并回滚相关的 CASCADE 操作 当 DELETE 语句导致 CASCADE 和 NO ACTION 组合操作时,在 SQL Server 检查 NO ACTION 操作之前将执行所有 CASCADE 操作 h 一个表最多可包含 253 个 FOREIGN KEY 约束 i 对于临时表不强制 FOREIGN KEY 约束 j 每个表在其 FOREIGN KEY 约束中最多可以引用 253 个不同的表 k FOREIGN KEY 约束只能引用被引用表的 PRIMARY KEY 或 UNIQUE 约束中的列或被引用表上 UNIQUE INDEX 中的列 INSERT 和 UPDATE 规范类别展开以显示有关该关系的“删除规则”和“更新规则”的信息 删除规则指定当数据库的最终用户尝试删除某一行,而该行包含外键关系所涉及的数据时所发生的情况 如果设置为:a 无操作 显示一条错误信息,告知用户不允许执行该删除操作,DELETE 将被回滚 b 级联 删除包含外键关系中所涉及的数据的所有行 c 设置空 如果表的所有外键列都可接受空值,则将该值设置为空 仅适用于 SQL Server 2005 d 设置默认值 如果表的所有外键列均已定义默认值,则将该值设置为列定义的默认值 仅适用于 SQL Server 2005 更新规则指定当数据库的用户尝试更新某一行,而该行包含外键关系所涉及的数据时所发生的情况 如果设置为:a 无操作 显示一条错误信息,告知用户不允许执行该删除操作,DELETE 将被回滚 b 级联 删除包含外键关系中所涉及的数据的所有行 c 设置空 如果表的所有外键列都可接受空值,则将该值设置为空 仅适用于 SQL Server 2005 e 设置默认值 如果表的所有外键列均已定义默认值,则将该值设置为列定义的默认值 仅适用于 SQL Server 2005