MySQL數(shù)據(jù)庫應(yīng)用教程 課件第6章 索引_第1頁
MySQL數(shù)據(jù)庫應(yīng)用教程 課件第6章 索引_第2頁
MySQL數(shù)據(jù)庫應(yīng)用教程 課件第6章 索引_第3頁
MySQL數(shù)據(jù)庫應(yīng)用教程 課件第6章 索引_第4頁
MySQL數(shù)據(jù)庫應(yīng)用教程 課件第6章 索引_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章索引《MySQL數(shù)據(jù)庫應(yīng)用教程》劉瑞新主編配套資源目錄第6章索引6.1索引概述6.2查看索引6.3創(chuàng)建索引6.4使用索引6.5刪除索引6.1.1表中數(shù)據(jù)的搜索方式1.全表搜索方式2.索引搜索方式6.1索引概述6.1.2索引的概念6.1.3索引的類型1.按數(shù)據(jù)結(jié)構(gòu)分類(1)B樹索引(2)Hash索引6.1索引概述2.按邏輯區(qū)分類(1)普通索引(INDEX)(2)唯一(UNIQUE)索引(3)主鍵(PRIMARYKEY)索引(4)全文(FULLTEXT)索引(5)空間(SPATIAL)索引6.1索引概述3.按使用時(shí)分類(1)單列索引(2)多列索引6.1索引概述4.聚簇索引和非聚簇索引(1)聚簇索引(2)非聚簇索引6.1索引概述使用SHOWINDEX語句查看表上建立的索引名、索引類型及相關(guān)參數(shù),其語法格式為:SHOWINDEXFROMtb_name[FROMdb_name];SHOWINDEXFROM[db_name.]tb_name;6.2查看索引【例6-1】在studentinfo數(shù)據(jù)庫中,查看selectcourse表上建立的索引。USEstudentinfo;SHOWINDEXFROMselectcourse;6.2查看索引6.3.1創(chuàng)建索引的語句1.使用CREATETABLE語句創(chuàng)建索引CREATE[TEMPORARY]TABLE[db_name.]tb_name(column_namedata_type[列級(jí)完整性約束條件,][…,][表級(jí)完整性約束條件,][CONSTRAINTindex_name][UNIQUE|FULLTEXT][INDEX][index_name](index_column));6.3創(chuàng)建索引index_column索引列的語法格式如下:index_column_name[(length)][ASC|DESC]6.3創(chuàng)建索引2.使用CREATEINDEX語句創(chuàng)建索引CREATE[UNIQUE|FULLTEXT][INDEX]index_nameONtb_name(index_column_name[(length)][ASC|DESC]);6.3創(chuàng)建索引3.使用ALTERTABLE語句創(chuàng)建索引ALTERTABLEtb_nameADD[UNIQUE|FULLTEXT][INDEX][index_name](index_column_name[(length)][ASC|DESC]);4.自動(dòng)創(chuàng)建索引6.3創(chuàng)建索引6.3.2創(chuàng)建索引實(shí)例1.沒有索引【例6-2】在studentinfo數(shù)據(jù)庫中,重新創(chuàng)建系表department,列定義有系編號(hào)DepartmentID、CHAR(2);系名稱DepartmentName、VARCHAR(10);系電話Telephone、VARCHAR(20)。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2),DepartmentNameVARCHAR(10),TelephoneCHAR(20));SHOWINDEXFROMdepartment;6.3創(chuàng)建索引2.普通索引【例6-3】重新創(chuàng)建department表,在定義表的同時(shí)為DepartmentID列定義普通索引,并按升序排列;創(chuàng)建表后為該表的DepartmentName列添加普通索引。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2),DepartmentNameVARCHAR(10),TelephoneCHAR(20),INDEXindex_id(IDASC));6.3創(chuàng)建索引CREATEINDEXindex_nameONdepartment(DepartmentName);SHOWINDEXFROMdepartment;6.3創(chuàng)建索引3.列值前綴普通索引【例6-4】在department表中,為DepartmentName列添加前3個(gè)字符的列值前綴普通索引;為Telephone列添加前14個(gè)字符的列值前綴普通索引。CREATEINDEXindex_name3ONdepartment(DepartmentName(3)DESC);ALTERTABLEdepartmentADDINDEXindex_telephone14(Telephone(14));SHOWINDEXFROMdepartment;6.3創(chuàng)建索引4.唯一索引【例6-5】重新創(chuàng)建department表,定義表的Telephone列是唯一鍵約束,在表的DepartmentName列上創(chuàng)建名為name的唯一索引。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2),DepartmentNameVARCHAR(10),TelephoneCHAR(20)UNIQUE,UNIQUEINDEXname(DepartmentName));6.3創(chuàng)建索引SHOWINDEXFROMdepartment;6.3創(chuàng)建索引【例6-6】使用CREATEINDEX在表department的DepartmentID列上創(chuàng)建唯一索引。CREATEUNIQUEINDEXdepartmentIDONdepartment(DepartmentID);6.3創(chuàng)建索引【例6-7】使用ALTERTABLE語句在表department的電話列Telephone上創(chuàng)建唯一索引。ALTERTABLEdepartmentADDUNIQUEINDEX(TelephoneDESC);6.3創(chuàng)建索引5.多列索引【例6-8】創(chuàng)建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創(chuàng)建索引SHOWINDEXFROMteacher;CREATEINDEXname2ONteacher(DepartmentName,TeacherName);6.3創(chuàng)建索引6.全文索引【例6-9】在teacher表中添加簡(jiǎn)歷列Note、VARCHAR(50),并指定Note列為全文索引。ALTERTABLEteacherADDCOLUMNNoteVARCHAR(50),ADDFULLTEXTINDEXindex_note(Note);6.3創(chuàng)建索引7.主鍵索引和外鍵索引【例6-10】重新創(chuàng)建department表,在定義列時(shí)對(duì)DepartmentID列設(shè)置主鍵約束,對(duì)Telephone列設(shè)置唯一鍵,對(duì)DepartmentName列創(chuàng)建唯一索引。DROPTABLEIFEXISTSdepartment;CREATETABLEdepartment(DepartmentIDCHAR(2)PRIMARYKEY,#設(shè)置主鍵約束

DepartmentNameVARCHAR(10),TelephoneCHAR(20)UNIQUE,#設(shè)置唯一約束

UNIQUEINDEXname(DepartmentName)#創(chuàng)建唯一索引);6.3創(chuàng)建索引SHOWINDEXdepartment;6.3創(chuàng)建索引【例6-11】在teacher表中,給TeacherID列添加主鍵約束。ALTERTABLEteacherADDPRIMARYKEY(TeacherID);6.3創(chuàng)建索引【例6-12】重新創(chuàng)建teacher表,設(shè)置TeachertID列為主鍵約束,設(shè)置外鍵約束FK_teacher,通過外鍵DepartmentID列與department表建立外鍵關(guān)系。DROPTABLEIFEXISTSteacher;CREATETABLEteacher(TeacherIDCHAR(6),TeacherNameCHAR(20),AgeINT,DepartmentIDCHAR(2),CONSTRAINTPK_teacherPRIMARYKEY(TeacherID),

CONSTRAINTFK_teacherFOREIGNKEY(DepartmentID)REFERENCESdepartment(DepartmentID));6.3創(chuàng)建索引SHOWINDEXFROMteacher;6.3創(chuàng)建索引6.4.1EXPLAIN語句的使用1.EXPLAIN語句的語法EXPLAINSQL_statement;【例6-13】在studentinfo數(shù)據(jù)庫中,顯示student表的索引,然后用EXPLAIN語句執(zhí)行查詢,了解EXPLAIN運(yùn)行的結(jié)果。SHOWINDEXFROMstudent;6.4使用索引6.4使用索引6.4使用索引6.4使用索引6.4使用索引2.使用EXPLAIN語句查看分析結(jié)果【例6-14】在studentinfo數(shù)據(jù)庫中,創(chuàng)建一個(gè)新表tb3,表結(jié)構(gòu)為:ID列、INT型、非空、主鍵、自動(dòng)遞增,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個(gè)字節(jié)上創(chuàng)建降序排序。ALTERTABLEtb3ADDINDEXindex_name4(name(4)DESC);6.4使用索引EXPLAINSELECT*FROMtb3WHEREName='abcdefg';EXPLAINSELECT*FROMtb3WHEREName='abc';6.4使用索引6.4.2指定使用的索引SELECT表達(dá)式列表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表中創(chuàng)建的索引index_name4。DROPINDEXindex_name4ONtb3;6.5刪除索引2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論