约束,结构化查询语言

更新时间:2022-10-26 10:33:11 阅读: 评论:0

类型介绍

主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空。

唯一约束(Unique constraint):要求该列唯一,允许为空,但只能出现一个空值。

检查约束(Check constraint):某列取值范围限制,格式限制等,如有关年龄、邮箱(必须有@)的约束。

默认约束(Default constraint):某列的默认值,如在数据库里有一项数据很多重复,可以设为默认值。

外键约束(Foreign Key constraint):用于在两个表之间建立关系,需要指定引用主表的哪一列。

添加详情

语法:

ALTER TABLE 表名

ADD CONSTRAINT 约束名 约束 类型 具体的约束说明

上述语法表示修改某个表,添加某个约束。其中,约束名的命名规则推荐采用“约束类型_约束字段”这样的形式。

示例:

添加主键约束(将stuNo设为主键):

ALTER TABLE stuInfo

ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)

添加唯一约束(身份证号唯一):

ALTER TABLE stuInfo

ADD CONSTRAINT UQ_stuID UNIQUE (stuID)

添加默认约束(如果地址不填,默认为“地址不详”):

ALTER TABLE stuInfo

ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress

添加检查约束(要求年龄只能在 15~40岁之间)

ALTER TABLE stuInfo

ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)

添加外键约束(主表 stuInfo 和从表 stuGrade 建立关系,关联字段为 stuNo ):

ALTER TABLE stuGrade

ADD CONSTRAINT FK_stuNo

FOREIGN KEY (stuNo) REFERENCES stuInfo(stuNo)

GO

删除示范

语法

ALTER TABLE 表名

DROP CONSTRAINT 约束名

示例:

删除stuInfo表中地址默认约束的语句:

ALTER TABLE stuInfo

DROP CONSTRAINT DF_stuAddress

删除外键约束注意事项:

对于存在外键约束的表,如果进行删除非空的外键,可能会出现错误。

a.如果在FOREIGNKEY约束的列中输入非NULL值,则此值必须在被引用的列表中存在,否则将返回违反外键约束的错误信息。

b.FOREIGNKEY约束应用于前面所讲的列,除非指定了源列。

c.FOREIGNKEY约束仅能引用位于同一服务器上的同一数据库中的表。数据库间的引用完整性必须通过触发器实现。有关更多信息,请参见CREATETRIGGER。

d.FOREIGN KEY 可以引用同一表中的其它列(动引用用)。

e.列级FOREIGN KEY约束的 REFERENCES 子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。

f.表级FOREIGNKEY约束的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.设置空值如果表的所有外键列都可接受空值,则将该值设置为空。仅适用于SQLServer2005。

d.设置默认值如果表的所有外键列均已定义默认值,则将该值设置为列定义的默认值。仅适用于SQLServer 2005。

更新规则

指定当数据库的用户尝试更新某一行,而该行包含外键关系所涉及的数据时所发生的情况。如果设置为:

a.无操作显示一条错误信息,告知用户不允许执行该删除操作,DELETE将被回滚。

b.级联删除包含外键关系中所涉及的数据的所有行。

本文发布于:2022-10-26 10:33:11,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/83/380062.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:完整约束
下一篇:性的约束
标签:约束
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图