单元7 索引与数据完整性约束.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
替代键约束 在关系模型中,替代键像主键一样,是表的一列或一组列,它们的值在任何时候都是唯一的。替代键是没有被选做主键的候选键。定义替代键的关键字是UNIQUE。 【例7.11】 在表book_copy1中将图书编号作为主键,书名列定义为一个替代键。 CREATE TABLE book_copy1 ( 图书编号 varchar(20) NOT NULL, 书名 varchar(20) NOT NULL UNIQUE, 出版日期 date NULL, PRIMARY KEY(图书编号) ); 替代键和主键的区别 在MySQL中替代键和主键的区别主要有以下几点。 (1)一个数据表只能创建一个主键。但一个表可以有若干个UNIQUE键,并且它们甚至可以重合,例如,在C1和C2列上定义了一个替代键,并且在C2和C3上定义了另一个替代键,这两个替代键在C2列上重合了,而MySQL允许这样。 (2)主键字段的值不允许为NULL,而UNIQUE字段的值可取NULL,但是必须使用NULL或NOT NULL声明。 (3)一般创建PRIMARY KEY约束时,系统会自动产生PRIMARY KEY索引。创建UNIQUE约束时,系统自动产生UNIQUE索引。 引用完整性 河南新乡 赵可以 0010016 河南新乡 张丽鹃 0010015 江西南昌 雷铜 0010014 湖南新田 吴兰 0010013 山东定陶 李山 0010012 … 地址 姓名 学号 98 0010021 数学 × 约束方法:外键约束 科目 学号 分数 … 数学 0010012 88 数学 0010013 74 语文 0010012 67 语文 0010013 81 数学 0010016 98 主表(父表) 参照表(子表) 参照完整性约束 在本书所举例的Bookstore数据库中,有很多规则是和表之间的关系有关的。例如,只有图书目录表中有的图书才可以销售,因此,在Sell表中的所有图书(由图书编号来标识)必须是Book表有的图书,也就是说存储在Sell表中的所有图书编号必须存在于Book表的图书编号列中。同样Sell表中的所有身份证号也必须出现在Members表的身份证号列中。这种类型的关系就是参照完整性约束(referential integrity constraint)。参照完整性约束是一种特殊的完整性约束,实现为一个外键。所以Sell表中的图书编号列和身份证号列都可以定义为一个外键。可以在创建表或修改表时定义一个外键声明。 定义外键的reference_definition语法格式如下: REFERENCES 表名 [(列名 [(长度)] [ASC | DESC],...)] [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}] RESTRICT:当要删除或更新父表中被参照列上在外键中出现的值时,拒绝对父表的删除或更新操作。如要当要删除xs表中081102记录时,因为cj中还有081102记录,拒绝对xs表的删除操作。 CASCADE:从父表删除或更新行时自动删除或更新子表中匹配的行。如从xs表更新081102学号为801102时自动更新cj表中学号为081102行为801102 。 学号 姓名 … 081102 程明 081103 王燕 … …. …. 学号 姓名 成绩 081102 程明 80 081103 王燕 90 …. Xs表(父表) Cj表(子表) 参照完整性约束说明 SET NULL:当从父表删除或更新行时,设置子表中与之对应的外键列为NULL。当从xs表删除081103行时,设置cj表中081103项为NULL。 NO ACTION:NO ACTION意味着不采取动作,就是如果有一个相关的外键值在被参考的表里,删除或更新父表中主要键值的企图不被允许,和RESTRICT一样。 SET DEFAULT:作用和SET NULL一样,只不过SET DEFAULT是指定子表中的外键列为默认值。 如果没有指定动作,两个参照动作就会默认地使用RESTRICT。 学号 姓名 … 081102 程明 081103 王燕 … …. …. 学号 姓名 成绩 081102 程明 80 081103 王燕 90 …. Xs表(父表) Cj表(子表) 参照完整性约束说明 参照完整性约束举例 外键目前只可以用在那些使用InnoDB存储引擎创建的表中,对于其他类型的表,MySQL服务器能够解析CREATE TABLE语句中的FOR

文档评论(0)

zipzoom + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档