网站大量收购独家精品文档,联系QQ:2885784924

课件:MySQL索引与完整性约束.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.3.3 参照完整性约束 当指定一个外键的时候,以下的规则适用: (1)被参照表必须已经用一条CREATE TABLE语句创建了,或者必须是当前正在创建的表。在后一种情况下,参照表是同一个表。 (2)必须为被参照表定义主键。 (3)必须在被参照表的表名后面指定列名(或列名的组合)。这个列(或列组合)必须是这个表的主键或替代键。 (4)尽管主键是不能够包含空值的,但允许在外键中出现一个空值。这意味着,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 (5)外键中的列的数目必须和被参照表的主键中的列的数目相同。 (6)外键中的列的数据类型必须和被参照表的主键中的列的数据类型对应相等。 5.3.3 参照完整性约束 与外键相关的被参照表和参照表可以是同一个表。这样的表称为自参照表(Self-referencing Table),这种结构称为自参照完整性(Self-referential Integrity)。例如,可以创建这样的xs2表: create table xs2 ( 学号 varchar(6) not null, 姓名 varchar(8) not null, 出生日期 datetime null, primary key (学号), foreign key (学号) references xs1 (学号) ); 5.3.3 参照完整性约束 【例5.12】创建带有参照动作ASCADE的xs1表。 create table xs1 ( 学号 varchar(6) not null, 姓名 varchar(8) not null, 出生日期 datetime null, primary key (学号), foreign key (学号) references xs (学号) on update cascade ); 5.3.4 CHECK完整性约束 CHECK完整性约束在创建表的时候定义。可以定义为列完整性约束,也可定义为表完整性约束。 语法格式: CHECK(expr) 【例5.13】创建表student,只包括学号和性别两列,性别只能是男或女。 create table student ( 学号 char(6) not null, 性别 char(1) not null check(性别 in (男, 女)) ); 5.3.4 CHECK完整性约束 【例5.14】创建表student1,只包括学号和出生日期两列,出生日期必须大于1990年1月1日。 create table student1 ( 学号 char(6) not null, 出生日期 date not null check(出生日期1990-01-01) ); 5.3.4 CHECK完整性约束 前面的CHECK完整性约束中使用的表达式都很简单,MySQL还允许使用更为复杂的表达式。例如,可以在条件中加入子查询,下面举个例子。 【例5.15】创建表student2,只包括学号和性别两列,并且确认性别列中的所有值都来源于student表的性别列中。 create table student2 ( 学号 char(6) not null, 性别 char(1) not null check( 性别 in ( select 性别 from student) ) ); 5.3.4 CHECK完整性约束 如果指定的完整性约束中,要相互比较一个表的两个或多个列,那么该列完整性约束必须定义表完整性约束。 【例5.16】创建表student3,有学号、最好成绩和平均成绩3列,要求最好成绩必须大于平均成绩。 create table student3 ( 学号 char(6) not null, 最好成绩 int(1) not null, 平均成绩 int(1) not null, check(最好成绩平均成绩) ); 5.3.5 命名完整性约束 CONSTRAINT关键字用来指定完整性约束的名字,语法格式为: CONSTRAINT [symbol] symbol为指定的名字,这个名字在完整性约束的前面被定义,在数据库里这个名字必须是唯一的。如果它没有被给出,则MySQL自动创建这个名字。只能给表完整性约束指定名字,而无法给

文档评论(0)

iuad + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档