没有合适的资源?快使用搜索试试~ 我知道了~
第B章-MySQL索引与数据完整性约束优秀文档.ppt
0 下载量 185 浏览量
2022-12-01
01:08:37
上传
评论
收藏 378KB PPT 举报
温馨提示
试读
33页
第B章-MySQL索引与数据完整性约束优秀文档.ppt
资源推荐
资源详情
资源评论
第
第
5
5
章
章
索
索
引
引
与
与
数
数
据
据
完
完
整
整
性
性
约
约
束
束
5.1 索引
5.2 数据完整性约束
5.1
5.1
索
索
引
引
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
表中创建。
5.1.2
5.1.2
创
创
建
建
索
索
引
引
1. 使用CREATE INDEX语句
使用CREATE INDEX语句可以在一个已有表上创建索引,一个表可以创建多个索引
。
语法格式:
CREATE [UNIQUE | FULLTEXT] INDEX index_name
ON tbl_name (index_col_name,...)
其中,index_col_name格式为:col_name [(length)] [ASC | DESC]
说明:
● index_name:索引的名称,索引在一个表中名称必须是唯一的。
● index_col_name:col_name表示创建索引的列名。
length表示使用列的前length个字符创建索引。使用列的一部分创建索引可
以使索引文件大大减小,从而节省磁盘空间。在某些情况下,只能对列的前缀进行索引。
例如,索引列的长度有一个最大上限,因此,如果索引列的长度超过了这个上限,那么就
可能需要利用前缀进行索引。BLOB或TEXT列必须用前缀索引。
另外还可以规定索引按升序(ASC)还是降序(DESC)排列,默认为
ASC。如果一条SELECT语句中的某列按照降序排列,那么在该列上定义一个降序索引可
以加快处理速度。
● UNIQUE | FULLTEXT :UNIQUE表示创建的是唯一性索引;FULLTEXT
表示创建全文索引;
可以看出,CREATE INDEX语句并不能创建主键。
如果情况不是这样,用户或应用程序会接收到一条出错消息,并且更新被拒绝。
在这种情况下,应用程序获取几条出错消息。
同样地,如果例中的参照动作为ON DELETE SET NULL,则表示如果删除了XS表中的学号为“081101”的一行,则同时将XS1表中所
有学号为“081101”的列值改为NULL。
FULLTEXT表示创建全文索引;
其次,在更新表中索引列上的数据时,对索引也需要更新,这可能需要重新组织一个索引,如果表中的索引很多,这是很浪费时间的
。
索引也可以在界面工具MySQL Administrator上进行创建,创建表或修改表时都可以定义索引,操作步骤如下(以KC表为例):
ON UPDATE CASCADE
其中学号、课程号和毕业日期构成复合主键。
BLOB或TEXT列必须用前缀索引。
学号 char(6) NOT NULL,
[ ( [column_definition] , .
(4)如果从一个复合主键中删除一列后,剩下的列构成主键仍然满足唯一性原则,那么,这个复合主键是不正确的,这条规则称为最
小化规则(minimality rule)。
● UNIQUE | FULLTEXT :UNIQUE表示创建的是唯一性索引;
学号 char(6) NOT NULL,
在本书所举例的XSCJ数据库中,有很多规则是和表之间的关系有关的。
但是,每个数据库都还有一些专用的完整性约束。
5.1.2
5.1.2
创
创
建
建
索
索
引
引
【例】 根据XS表的学号列上的前5个字符建立一个升序索引XH_XS。
CREATE INDEX XH_XS
ON XS(学号(5) ASC);
可以在一个索引的定义中包含多个列,中间用逗号隔开,但是它们要属于同一个表。这
样的索引叫做复合索引。
【例】 在XS_KC表的学号列和课程号列上建立一个复合索引XSKC_IN。
CREATE INDEX XSKC_IN
ON XS_KC(学号,课程号);
5.1.2
5.1.2
创
创
建
建
索
索
引
引
2. 使用ALTER TABLE语句
第2章介绍了如何使用ALTER TABLE语句修改表,其中也包括向表中添加索引。
语法格式如下:
ALTER TABLE tbl_name
ADD INDEX [index_name] (index_col_name,...) /*添加索引*/
| ADD PRIMARY KEY [index_type] (index_col_name,...) /*添加主键*/
| ADD UNIQUE [index_name] (index_col_name,...) /*添加唯一性索引*/
| ADD FULLTEXT [index_name] (index_col_name,...) /*添加全文索引*/
剩余32页未读,继续阅读
资源评论
zzzzl333
- 粉丝: 674
- 资源: 7万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功