第5章索引与数据完整性约束.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章索引与数据完整性约束

第5章 索引与数据完整性约束 5.1 索引 5.1.1 索引的分类 5.1.2 创建索引 5.1.2 创建索引 5.1.2 创建索引 5.1.2 创建索引 5.1.2 创建索引 5.1.2 创建索引 5.1.3 删除索引 5.1.4 界面方式创建和删除索引 5.1.4 界面方式创建和删除索引 5.1.4 界面方式创建和删除索引 5.1.4 界面方式创建和删除索引 5.1.5 索引对查询的影响 5.1.5 索引对查询的影响 5.1.6 索引的弊端 5.2 数据完整性约束 5.2.1 主键约束 5.2.1 主键约束 5.2.2 替代键约束 5.2.2 替代键约束 5.2.3 参照完整性约束 5.2.3 参照完整性约束 5.2.3 参照完整性约束 5.2.3 参照完整性约束 5.2.3 参照完整性约束 5.2.3 参照完整性约束 5.2.4 CHECK完整性约束 5.2.4 CHECK完整性约束 5.2.4 CHECK完整性约束 5.2.5 命名完整性约束 5.2.6 删除完整性约束 如果指定的完整性约束中,要相互比较一个表的两个或多个列,那么该列完整性约束必须定义表完整性约束。 【例5.17】 创建表student3,有学号、最好成绩和平均成绩3列,要求最好成绩必须大于平均成绩。 CREATE TABLE student3 ( 学号 char(6) NOT NULL, 最好成绩 INT(1) NOT NULL, 平均成绩 INT(1) NOT NULL, CHECK(最好成绩平均成绩) ); 也可以同时定义多个CHECK完整性约束,中间用逗号隔开。 然而,不幸的是,在目前的MySQL版本中,CHECK完整性约束还没有被强化,上面例子中定义的CHECK约束会被MySQL分析,但会被忽略,也就是说,这里的CHECK约束暂时只是一个注释,不会起任何作用。相信在未来的版本中它能得到扩展。 * * 5.1 索引 5.2 数据完整性约束 5.1.1 索引的分类 目前大部分MySQL索引都是以B-树(BTREE)方式存储的。BTREE方式构建为包含了多个节点的一棵树。顶部的节点构成了索引的开始点,叫做根。每个节点中含有索引列的几个值,节点中的每个值又都指向另一个节点或者指向表中的一行,一个节点中的值必须是有序排列的。指向一行的节点叫做叶子页。叶子页本身也是相互连接的,一个叶子页有一个指针指向下一组。这样,表中的每一行都会在索引中有一个对应值。查询的时候就可以根据索引值直接找到所在的行。 索引中的节点是存储在文件中的,所以索引也是要占用物理空间的,MySQL将一个表的索引都保存在同一个索引文件中。 如果更新表中的一个值或者向表中添加或删除一行,MySQL会自动地更新索引,因此索引树总是和表的内容保持一致。 按BTREE形式存储的主要索引类型介绍如下。 1. 普通索引(INDEX) 这是最基本的索引类型,它没有唯一性之类的限制。创建普通索引的关键字是INDEX。 2. 唯一性索引(UNIQUE) 这种索引和前面的普通索引基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须是唯一的。创建唯一性索引的关键字是UNIQUE。 3. 主键(PRIMARY KEY) 主键是一种唯一性索引,它必须指定为“PRIMARY KEY”。主键一般在创建表的时候指定,也可以通过修改表的方式加入主键。但是每个表只能有一个主键。 4. 全文索引(FULLTEXT) MySQL支持全文检索和全文索引。在MySQL中,全文索引的索引类型为FULLTEXT。全文索引只能在VARCHAR或TEXT类型的列上创建,并且只能在MyISAM表中创建。它可以通过CREATE TABLE命令创建,也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。 另外,当表类型为MEMORY或HEAP时,除了BTREE索引,MySQL还支持哈希索引(HASH)。使用哈希索引,不需要建立树结构,但是所有的值都保存在一个列表中,这个列表指向相关页和行。当根据一个值获取一个特定的行时,哈希索引非常快。 1. 使用CREATE INDEX语句 使用CREATE INDEX语句可以在一个已有表上创建索引,一个表可以创建多个索引。 语法格式: CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [USING index_type] ON

文档评论(0)

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

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

1亿VIP精品文档

相关文档