资源描述:
《第五章 索引及数据完整性约束》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章索引与数据完整性约束一、索引的用途与概念1.MySQL中访问表中的行,最常用的是顺序访问和索引访问。2.索引的概念:根据表中一列或若干列按照一定顺序建立的列值与记录之间的对应关系表。(存储在索引文件中)像不像图书的目录?3.索引的用途:在表的某些列上创建了索引之后查找数据时可以直接根据该列上的索引找到对应行的位置,从而加快了查找速度。4.一个表中可以创建多个索引,基于一个字段也可以创建多个索引。二、索引的分类1.B树索引:最常用a)普通索引i.只包含索引关键字indexii.对建立索引的列没有唯一性要求b)唯一性索引i.关键字uniqueii.创建索引的列,或列的组合值
2、必须唯一c)主键索引i.关键字primarykeyii.只能在创建主键约束时自动创建d)全文索引i.关键字fulltextii.只能在varchar或text类型的列上创建i.对于大规模的数据集,通过altertable或createtable命令创建全文索引要比把记录插入带有全文索引的空表更快。2.HASH(哈希)索引:速度较快a)不需要建立树结构,但是所有的值都保存在一个列表中,这个列表指向相关页和行。二、创建索引1.createindex语句创建索引a)格式:create[unique
3、fulltext
4、spatial]index索引名[usingbtree
5、hash]
6、ontable_name(索引列[(length)][asc
7、desc])其中:using子句表示索引的类型,默认为btree;length表示使用索引列的前多少个字符创建索引,这在索引列值较长的情况下比较有用。如在blob或text列上创建索引。b)例题:例5.1createindexstonstudent(stuname(4)asc);查看索引的命令:showindexfrom表名例如:showindexfromstudent;例5.2创建复合索引。createindexxskconstudentcourse(id,cno);删除索引的命令:dropindex索引名on表
8、名例如:dropindexxskconstudentcourse;createindexxskconstudentcourse(idasc,cnodesc);1.altertable语句创建索引a)格式:altertable表名addindex[索引名][索引类型](索引字段)//普通索引
9、add[constraint约束名]primarykey[索引类型](主键字段)//主键索引
10、add[constraint约束名]unique[索引名][索引类型](唯一键字段)//唯一性索引
11、add[constraint约束名]foreignkey[索引名](外键字段)reference
12、//外键索引
13、add[fulltext
14、spatial][索引名](索引字段)//全文索引或空间索引
15、disablekeys
16、enablekeys说明:因为表中只能有一个主键,所以主键索引的名字就是primary,不需要人为命名;disablekeys表示更新表时停止更新表中的非唯一性索引;enablekeys重新创建丢失的索引。b)例题:例5.3altertablestudentaddindexin_nameusingbtree(stuname);例5.4altertablestudentaddprimarykey(id),addindexmark(birthday,性se
17、x);2.createtable语句创建索引a)格式:createtable表名(字段的定义
18、约束的定义
19、索引的定义);b)例题:例5.5createtablexskc(stuidchar(6)notnull,cnochar(3)notnull,resulttinyint(1),credittinyint(1),primarykey(stuid,cno),//创建主键约束时自动生成的索引indexcj(result)//普通索引);一、删除索引1.drop命令删除索引:dropindex索引名on表名例5.6dropindexstonstudent;2.altertable命
20、令删除索引:a)格式:altertable表名
21、dropprimarykey
22、dropindex索引名
23、dropforeignkey索引名b)例题:例5.7altertablestudendropprimarykey,dropindexmark;二、图形化工具创建和删除索引三、索引的应用与弊端1.应用索引:系统自动根据条件选择已有的索引进行应用,不需要我们进行选择。对于我们来说,只需要在经常用于排序、分组、查询条件的字段上建立索引即可。2.索引的弊端:索引并不是越多越好,索引在以下方面存在弊端:1)占用