结构化查询语言 约束


结构化查询语言 约束

文章插图
约束(结构化查询语言)【结构化查询语言 约束】约束有缠缚,束缚,按照约定(特定)条件限制,管束等意思 。约束的作用是添加、删除 。
基本介绍中文名:约束
类型:结构化查询语言
作用:添加、删除
约束类型:主键约束等
约束类型主键约束(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 。