版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章索引《MySQL数据库应用教程》刘瑞新主编配套资源目录第6章索引6.1索引概述6.2查看索引6.3创建索引6.4使用索引6.5删除索引6.1.1表中数据的搜索方式1.全表搜索方式2.索引搜索方式6.1索引概述6.1.2索引的概念6.1.3索引的类型1.按数据结构分类(1)B树索引(2)Hash索引6.1索引概述2.按逻辑区分类(1)普通索引(INDEX)(2)唯一(UNIQUE)索引(3)主键(PRIMARYKEY)索引(4)全文(FULLTEXT)索引(5)空间(SPATIAL)索引6.1索引概述3.按使用时分类(1)单列索引(2)多列索引6.1索引概述4.聚簇索引和非聚簇索引(1)聚簇索引(2)非聚簇索引6.1索引概述使用SHOWINDEX语句查看表上建立的索引名、索引类型及相关参数,其语法格式为:SHOWINDEXFROMtb_name[FROMdb_name];SHOWINDEXFROM[db_name.]tb_name;6.2查看索引【例6-1】在studentinfo数据库中,查看selectcourse表上建立的索引。USEstudentinfo;SHOWINDEXFROMselectcourse;6.2查看索引6.3.1创建索引的语句1.使用CREATETABLE语句创建索引CREATE[TEMPORARY]TABLE[db_name.]tb_name(column_namedata_type[列级完整性约束条件,][…,][表级完整性约束条件,][CONSTRAINTindex_name][UNIQUE|FULLTEXT][INDEX][index_name](index_column));6.3创建索引index_column索引列的语法格式如下:index_column_name[(length)][ASC|DESC]6.3创建索引2.使用CREATEINDEX语句创建索引CREATE[UNIQUE|FULLTEXT][INDEX]index_nameONtb_name(index_column_name[(length)][ASC|DESC]);6.3创建索引3.使用ALTERTABLE语句创建索引ALTERTABLEtb_nameADD[UNIQUE|FULLTEXT][INDEX][index_name](index_column_name[(length)][ASC|DESC]);4.自动创建索引6.3创建索引6.3.2创建索引实例1.没有索引【例6-2】在studentinfo数据库中,重新创建系表department,列定义有系编号DepartmentID、CHAR(2);系名称DepartmentName、VARCHAR(10);系电话Telephone、VARCHAR(20)。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2),DepartmentNameVARCHAR(10),TelephoneCHAR(20));SHOWINDEXFROMdepartment;6.3创建索引2.普通索引【例6-3】重新创建department表,在定义表的同时为DepartmentID列定义普通索引,并按升序排列;创建表后为该表的DepartmentName列添加普通索引。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2),DepartmentNameVARCHAR(10),TelephoneCHAR(20),INDEXindex_id(IDASC));6.3创建索引CREATEINDEXindex_nameONdepartment(DepartmentName);SHOWINDEXFROMdepartment;6.3创建索引3.列值前缀普通索引【例6-4】在department表中,为DepartmentName列添加前3个字符的列值前缀普通索引;为Telephone列添加前14个字符的列值前缀普通索引。CREATEINDEXindex_name3ONdepartment(DepartmentName(3)DESC);ALTERTABLEdepartmentADDINDEXindex_telephone14(Telephone(14));SHOWINDEXFROMdepartment;6.3创建索引4.唯一索引【例6-5】重新创建department表,定义表的Telephone列是唯一键约束,在表的DepartmentName列上创建名为name的唯一索引。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2),DepartmentNameVARCHAR(10),TelephoneCHAR(20)UNIQUE,UNIQUEINDEXname(DepartmentName));6.3创建索引SHOWINDEXFROMdepartment;6.3创建索引【例6-6】使用CREATEINDEX在表department的DepartmentID列上创建唯一索引。CREATEUNIQUEINDEXdepartmentIDONdepartment(DepartmentID);6.3创建索引【例6-7】使用ALTERTABLE语句在表department的电话列Telephone上创建唯一索引。ALTERTABLEdepartmentADDUNIQUEINDEX(TelephoneDESC);6.3创建索引5.多列索引【例6-8】创建teacher表,列有TeacherID、CHAR(6);TeacherName、CHAR(20);Age、INT;DepartmentName、VARCHAR(10),DepartmentID、CHAR(2)。CREATETABLEteacher(TeacherIDCHAR(6),TeacherNameCHAR(20),AgeINT,DepartmentNameVARCHAR(10),DepartmentIDCHAR(2),INDEXname(DepartmentNameASC,TeacherNameDESC));6.3创建索引SHOWINDEXFROMteacher;CREATEINDEXname2ONteacher(DepartmentName,TeacherName);6.3创建索引6.全文索引【例6-9】在teacher表中添加简历列Note、VARCHAR(50),并指定Note列为全文索引。ALTERTABLEteacherADDCOLUMNNoteVARCHAR(50),ADDFULLTEXTINDEXindex_note(Note);6.3创建索引7.主键索引和外键索引【例6-10】重新创建department表,在定义列时对DepartmentID列设置主键约束,对Telephone列设置唯一键,对DepartmentName列创建唯一索引。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2)PRIMARYKEY,#设置主键约束
DepartmentNameVARCHAR(10),TelephoneCHAR(20)UNIQUE,#设置唯一约束
UNIQUEINDEXname(DepartmentName)#创建唯一索引);6.3创建索引SHOWINDEXdepartment;6.3创建索引【例6-11】在teacher表中,给TeacherID列添加主键约束。ALTERTABLEteacherADDPRIMARYKEY(TeacherID);6.3创建索引【例6-12】重新创建teacher表,设置TeachertID列为主键约束,设置外键约束FK_teacher,通过外键DepartmentID列与department表建立外键关系。DROPTABLEIFEXISTSteacher;CREATETABLEteacher(TeacherIDCHAR(6),TeacherNameCHAR(20),AgeINT,DepartmentIDCHAR(2),CONSTRAINTPK_teacherPRIMARYKEY(TeacherID),
CONSTRAINTFK_teacherFOREIGNKEY(DepartmentID)REFERENCESdepartment(DepartmentID));6.3创建索引SHOWINDEXFROMteacher;6.3创建索引6.4.1EXPLAIN语句的使用1.EXPLAIN语句的语法EXPLAINSQL_statement;【例6-13】在studentinfo数据库中,显示student表的索引,然后用EXPLAIN语句执行查询,了解EXPLAIN运行的结果。SHOWINDEXFROMstudent;6.4使用索引6.4使用索引6.4使用索引6.4使用索引6.4使用索引2.使用EXPLAIN语句查看分析结果【例6-14】在studentinfo数据库中,创建一个新表tb3,表结构为:ID列、INT型、非空、主键、自动递增,Name列、VARCHAR(20)型,Age列、INT型,在表的Name列上建立普通索引;并添加几条记录。USEstudentinfo;CREATETABLEtb3(IDINTNOTNULLPRIMARYKEYAUTO_INCREMENT,NameVARCHAR(20),AgeINT,INDEXindex_name(NameASC));6.4使用索引INSERTINTOtb3(Name,Age)VALUES('Jack',18),('Lily',19),('Tom',17),('Tina',18),('Alina',18);SELECT*FROMtb3;SHOWINDEXFROMtb3;6.4使用索引EXPLAINSELECT*FROMtb3WHEREID=3;EXPLAINSELECT*FROMtb3WHEREName='Lily';6.4使用索引EXPLAINSELECT*FROMtb3WHEREAge=19;6.4使用索引【例6-15】使用ALTERTABLE命令在tb3表的Name列的前4个字节上创建降序排序。ALTERTABLEtb3ADDINDEXindex_name4(name(4)DESC);6.4使用索引EXPLAINSELECT*FROMtb3WHEREName='abcdefg';EXPLAINSELECT*FROMtb3WHEREName='abc';6.4使用索引6.4.2指定使用的索引SELECT表达式列表FROMTABLE[{USE|IGNORE|FORCE}INDEX(key_list)]WHERE条件;【例6-16】指定使用index_name4索引用于Name查询。SELECT*FROMtb3USEINDEX(index_name4)WHEREName='abcdefg';EXPLAINSELECT*FROMtb3USEINDEX(index_name4)WHEREName='abcdefg';6.4使用索引1.使用DROPINDEX语句删除索引DROPINDEXindex_nameONtb_name;【例6-17】删除tb3表中创建的索引index_name4。DROPINDEXindex_name4ONtb3;6.5删除索引2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南文理学院《DataStructuresandAlgorithms》2021-2022学年第一学期期末试卷
- 湖南科技学院《书法》2023-2024学年第一学期期末试卷
- 我的家乡云南玉溪
- 山东省淄博市重点高中2025届高三上学期10月月考地理试题含答案
- 围城读书分享课件
- 《信息科学类专业英语》课件第3章
- 关于银行实习心得(30篇)
- 2024至2030年中国毛线手套行业投资前景及策略咨询研究报告
- 2024至2030年中国推拿机行业投资前景及策略咨询研究报告
- 2024中学团委工作计划报告
- 建筑劳务分包二次结构合同
- 河北省石家庄市鹿泉一中2025届物理高三第一学期期中学业水平测试模拟试题含解析
- 2024年国网公司企业文化与职业道德试考试题库(含答案)
- 通信线路定期巡检制度
- 汽车保养与维修服务方案
- 2024院感年终总结报告
- 厂中厂承租方对出租方日常安全检查记录表
- 2024-2025学年高三上学期期中家长会 课件
- 生产计划管理年终总结
- 创新创业实战学习通超星期末考试答案章节答案2024年
- 2024年退车退款协议书(710字)
评论
0/150
提交评论