版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章數(shù)據(jù)庫(kù)和表的根本操作表的約束設(shè)置表的字段值自動(dòng)增加索引數(shù)據(jù)庫(kù)根底知識(shí)數(shù)據(jù)類型數(shù)據(jù)表的根本操作?學(xué)習(xí)目標(biāo)3了解數(shù)據(jù)類型2熟悉索引的作用,會(huì)創(chuàng)建和刪除索引掌握了解熟悉掌握數(shù)據(jù)庫(kù)的基本操作、數(shù)據(jù)表的基本操作、表的約束1數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)2.1?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)數(shù)據(jù)類型2.2?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)數(shù)據(jù)表的基本操作2.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)表的約束2.4?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)設(shè)置表的字段值自動(dòng)增加2.5索引2.6?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)知識(shí)架構(gòu)2.1數(shù)據(jù)庫(kù)根底知識(shí)返回目錄創(chuàng)立和查看數(shù)據(jù)庫(kù)修改數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)2.2數(shù)據(jù)類型返回目錄知識(shí)架構(gòu)整數(shù)類型浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型日期與時(shí)間類型字符串和二進(jìn)制類型2.3數(shù)據(jù)表的根本操作返回目錄知識(shí)架構(gòu)創(chuàng)立數(shù)據(jù)表查看數(shù)據(jù)表修改數(shù)據(jù)表刪除數(shù)據(jù)表2.4表的約束返回目錄知識(shí)架構(gòu)主鍵約束非空約束唯一約束默認(rèn)約束知識(shí)架構(gòu)返回目錄索引的概念創(chuàng)立索引刪除索引2.6索引2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.1創(chuàng)立和查看數(shù)據(jù)庫(kù)創(chuàng)立數(shù)據(jù)庫(kù)就是在數(shù)據(jù)庫(kù)系統(tǒng)中劃分一塊存儲(chǔ)數(shù)據(jù)的空間,MySQL中,創(chuàng)立數(shù)據(jù)庫(kù)的根本語(yǔ)法格式如下所示:【例2-1】創(chuàng)立一個(gè)名稱為itcast的數(shù)據(jù)庫(kù),SQL語(yǔ)句如下所示:執(zhí)行結(jié)果如下所示:CREATEDATABASE數(shù)據(jù)庫(kù)名稱;CREATEDATABASEitcast;2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.1創(chuàng)立和查看數(shù)據(jù)庫(kù)為了驗(yàn)證數(shù)據(jù)庫(kù)系統(tǒng)中是否創(chuàng)立了名稱為itcast的數(shù)據(jù)庫(kù),需要查看數(shù)據(jù)庫(kù),在MySQL中,查看數(shù)據(jù)庫(kù)的SQL語(yǔ)句如下所示:【例2-2】使用SHOW語(yǔ)句查看已經(jīng)存在的數(shù)據(jù)庫(kù),執(zhí)行結(jié)果如下所示:SHOWDATABASES;2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.1創(chuàng)立和查看數(shù)據(jù)庫(kù)創(chuàng)立好數(shù)據(jù)庫(kù)之后,要想查看某個(gè)已經(jīng)創(chuàng)立的數(shù)據(jù)庫(kù)信息,可以通過SHOWCREATEDATABASE語(yǔ)句查看,具體語(yǔ)法格式如下所示:SHOWCREATEDATABASE數(shù)據(jù)庫(kù)名稱;2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.1創(chuàng)立和查看數(shù)據(jù)庫(kù)【例2-3】查看創(chuàng)立好的數(shù)據(jù)庫(kù)itcast的信息,SQL語(yǔ)句如下所示:執(zhí)行結(jié)果如下所示:SHOWCREATEDATABASEitcast;2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.2修改數(shù)據(jù)庫(kù)MySQL數(shù)據(jù)庫(kù)一旦安裝成功,創(chuàng)立的數(shù)據(jù)庫(kù)編碼也就確定了。但如果想修改數(shù)據(jù)庫(kù)的編碼,可以使用ALTERDATABASE語(yǔ)句實(shí)現(xiàn)。修改數(shù)據(jù)庫(kù)編碼的根本語(yǔ)法格式如下所示:在上述格式中,“數(shù)據(jù)庫(kù)名稱〞指的是要修改的數(shù)據(jù)庫(kù),“編碼方式〞指的是修改后的數(shù)據(jù)庫(kù)編碼。ALTERDATABASE數(shù)據(jù)庫(kù)名稱DEFAULTCHARACTERSET
編碼方式COLLATE編碼方式_bin2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.2修改數(shù)據(jù)庫(kù)
【例2-4】將數(shù)據(jù)庫(kù)itcast的編碼修改為gbk,SQL語(yǔ)句如下所示:為了驗(yàn)證數(shù)據(jù)庫(kù)的編碼是否修改成功,接下來(lái),使用SHOWCREATEDATABASE語(yǔ)句查看修改后的數(shù)據(jù)庫(kù),執(zhí)行結(jié)果如下:ALTERDATABASEitcastDEFAULTCHARACTERSET
gbkCOLLATEgbk_bin;說(shuō)明itcast數(shù)據(jù)庫(kù)的編碼信息修改成功了2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.3刪除數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)是將數(shù)據(jù)庫(kù)系統(tǒng)中已經(jīng)存在的數(shù)據(jù)庫(kù)刪除。成功刪除數(shù)據(jù)庫(kù)后,數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都將被去除,原來(lái)分配的空間也將被回收。在MySQL中,刪除數(shù)據(jù)庫(kù)的根本語(yǔ)法格式如下所示:需要注意的是,如果要?jiǎng)h除的數(shù)據(jù)庫(kù)不存在,那么刪除會(huì)失敗。DROPDATABASE數(shù)據(jù)庫(kù)名稱;2.1數(shù)據(jù)庫(kù)根底知識(shí)2.1.3刪除數(shù)據(jù)庫(kù)
【例2-5】刪除名稱為itcast的數(shù)據(jù)庫(kù),SQL語(yǔ)句如下所示:為了驗(yàn)證刪除數(shù)據(jù)庫(kù)的操作是否成功,接下來(lái),使用SHOWDATABASES語(yǔ)句查看已經(jīng)存在的數(shù)據(jù)庫(kù),執(zhí)行結(jié)果如下所示:DROPDATABASEitcast;2.2數(shù)據(jù)類型2.2.1整數(shù)類型根據(jù)數(shù)值取值范圍的不同,MySQL中的整數(shù)類型可分為5種,分別是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,表2-1列舉了MySQL不同整數(shù)類型所對(duì)應(yīng)的字節(jié)大小和取值范圍。從表2-1中可以看出,不同整數(shù)類型所占用的字節(jié)數(shù)和取值范圍都是不同的。數(shù)據(jù)類型字節(jié)數(shù)無(wú)符號(hào)數(shù)的取值范圍有符號(hào)數(shù)的取值范圍TINYINT10~255-128~127SMALLINT20~65535-32768~32768MEDIUMINT30~16777215-8388608~8388608INT40~4294967295-2147483648~2147483648BIGINT80~18446744073709551615-9223372036854775808~9223372036854775808表2-1MySQL整數(shù)類型2.2數(shù)據(jù)類型2.2.2浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型在MySQL數(shù)據(jù)庫(kù)中,存儲(chǔ)的小數(shù)都是使用浮點(diǎn)數(shù)和定點(diǎn)數(shù)來(lái)表示的。浮點(diǎn)數(shù)的類型有兩種,分別是單精度浮點(diǎn)數(shù)類型〔FLOAT〕和雙精度浮點(diǎn)類型〔DOUBLE〕。而定點(diǎn)數(shù)類型只有DECIMAL類型。表2-2列舉了MySQL中浮點(diǎn)數(shù)和定點(diǎn)數(shù)類型所對(duì)應(yīng)的字節(jié)大小及其取值范圍。表2-2MySQL浮點(diǎn)數(shù)和定點(diǎn)數(shù)類型2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型為了方便在數(shù)據(jù)庫(kù)中存儲(chǔ)日期和時(shí)間,MySQL提供了表示日期和時(shí)間的數(shù)據(jù)類型,分別是YEAR、DATE、TIME、DATETIME和TIMESTAMP,表2-3列舉了這些MySQL中日期和時(shí)間數(shù)據(jù)類型所對(duì)應(yīng)的字節(jié)數(shù)、取值范圍、日期格式以及零值。表2-3MySQL日期和時(shí)間類型2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型需要注意的是,如果插入的數(shù)值不合法,系統(tǒng)會(huì)自動(dòng)將對(duì)應(yīng)的零值插入數(shù)據(jù)庫(kù)中。為了大家更好地學(xué)習(xí)日期和時(shí)間類型,接下來(lái),將表2-3中的類型進(jìn)行詳細(xì)講解,具體如下:1、YEAR類型YEAR類型用于表示年份,在MySQL中,可以使用以下三種格式指定YEAR類型的值:〔1〕使用4位字符串或數(shù)字表示,范圍為‘1901’~‘2155’或1901~2155。2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型〔2〕使用2位字符串表示,范圍為‘00’~‘99’〔3〕使用2位數(shù)字表示,范圍為1~99需要注意的是,當(dāng)使用YEAR類型時(shí),一定要區(qū)分'0'和0。因?yàn)樽址袷降?0'表示的是YEAR值是2000,而數(shù)字格式的0表示的YEAR值是0000。2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型2、DATE類型DATE類型用于表示日期值,不包含時(shí)間局部。在MySQL中,可以使用以下四種格式指定DATE類型的值:〔1〕以‘YYYY-MM-DD’或者‘YYYYMMDD’字符串格式表示?!?〕以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示?!?〕以YY-MM-DD或者YYMMDD數(shù)字格式表示。〔4〕使用CURRENT_DATE或者NOW()表示當(dāng)前系統(tǒng)日期。2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型3、TIME類型TIME類型用于表示時(shí)間值,它的顯示形式一般為HH:MM:SS,其中,HH表示小時(shí),MM表示分,SS表示秒。在MySQL中,可以使用以下三種格式指定TIME類型的值:〔1〕以‘DHH:MM:SS’字符串格式表示?!?〕以‘HHMMSS’字符串格式或者HHMMSS數(shù)字格式表示?!?〕使用CURRENT_TIME或NOW()輸入當(dāng)前系統(tǒng)時(shí)間。2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型4、DATETIME類型DATETIME類型用于表示日期和時(shí)間,它的顯示形式為‘YYYY-MM-DDHH:MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小時(shí),MM表示分,SS表示秒。在MySQL中,可以使用以下四種格式指定DATETIME類型的值:〔1〕以‘YYYY-MM-DDHH:MM:SS’或者‘YYYYMMDDHHMMSS’字符串格式表示的日期和時(shí)間,取值范圍為‘1000-01-0100:00:00’~‘9999-12-323:59:59’。2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型〔2〕以‘YY-MM-DDHH:MM:SS’或者‘YYMMDDHHMMSS’字符串格式表示的日期和時(shí)間,其中YY表示年,取值范圍為‘00’~‘99’?!?〕以YYYYMMDDHHMMSS或者YYMMDDHHMMSS數(shù)字格式表示的日期和時(shí)間?!?〕使用NOW來(lái)輸入當(dāng)前系統(tǒng)的日期和時(shí)間。2.2數(shù)據(jù)類型2.2.3日期與時(shí)間類型5、TIMESTAMP類型TIMESTAMP類型用于表示日期和時(shí)間,它的顯示形式同DATETIME相同,但取值范圍比DATETIME小。下面介紹幾種TIMESTAMP類型與DATATIME類型不同的形式,具體如下:〔1〕使用CURRENT_TIMESTAMP來(lái)輸入系統(tǒng)當(dāng)前日期和時(shí)間。〔2〕輸入NULL時(shí),系統(tǒng)會(huì)輸入系統(tǒng)當(dāng)前日期和時(shí)間?!?〕無(wú)任何輸入時(shí),系統(tǒng)會(huì)輸入系統(tǒng)當(dāng)前日期和時(shí)間。2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型為了存儲(chǔ)字符串、圖片和聲音等數(shù)據(jù),MySQL提供了字符串和二進(jìn)制類型,表2-4列舉了MySQL中的字符串和二進(jìn)制類型。表2-4MySQL字符串和二進(jìn)制類型數(shù)據(jù)類型類型說(shuō)明CHAR用于表示固定長(zhǎng)度的字符串
VARCHAR用于表示可變長(zhǎng)度的字符串BINARY用于表示固定長(zhǎng)度的二進(jìn)制數(shù)據(jù)VARBINARY用于表示可變長(zhǎng)度的二進(jìn)制數(shù)據(jù)BOLB用于表示二進(jìn)制大數(shù)據(jù)TEXT用于表示大文本數(shù)據(jù)ENUM表示枚舉類型,只能存儲(chǔ)一個(gè)枚舉字符串值SET表示字符串對(duì)象,可以有零或多個(gè)值BIT表示位字段類型2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型表2-4列舉的字符串和二進(jìn)制類型中,不同數(shù)據(jù)類型具有不同的特點(diǎn),接下來(lái),針對(duì)這些數(shù)據(jù)類型進(jìn)行詳細(xì)地講解,具體如下:1、CHAR和VARCHAR類型CHAR和VARCHAR類型都用來(lái)表示字符串?dāng)?shù)據(jù),不同的是,VARCHAR可以存儲(chǔ)可變長(zhǎng)度的字符串。在MySQL中,定義CHAR和VARCHAR類型的方式如下所示:在上述定義方式中,M指的是字符串的最大長(zhǎng)度。CHAR(M)或VARCHAR(M)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型為了幫助大家更好地理解CHAR和VARCHAR之間的區(qū)別,接下來(lái),以CHAR(4)和VARCHAR(4)為例進(jìn)行說(shuō)明,具體如表2-5所示。從表2-5中可以看出,當(dāng)數(shù)據(jù)為CHAR(4)類型時(shí),不管插入值的長(zhǎng)度是多少,所占用的存儲(chǔ)空間都是4個(gè)字節(jié),而VARCHAR(4)所對(duì)應(yīng)的數(shù)據(jù)所占用的字節(jié)數(shù)為實(shí)際長(zhǎng)度加1。表2-5CHAR(4)和VARCHAR(4)比照插入值CHAR(4)存儲(chǔ)需求VARCHAR(4)存儲(chǔ)需求‘’‘’4個(gè)字節(jié)‘’1個(gè)字節(jié)‘a(chǎn)b’‘a(chǎn)b’4個(gè)字節(jié)‘a(chǎn)b’3個(gè)字節(jié)‘a(chǎn)bc’‘a(chǎn)bc’4個(gè)字節(jié)‘a(chǎn)bc’4個(gè)字節(jié)‘a(chǎn)bcd’‘a(chǎn)bcd’4個(gè)字節(jié)‘a(chǎn)bcd’5個(gè)字節(jié)‘a(chǎn)bcdef’‘a(chǎn)bcd’4個(gè)字節(jié)‘a(chǎn)bcd’5個(gè)字節(jié)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型2、BINARY和VARBINARY類型BINARY和VARBINARY類型類似于CHAR和VARCHAR,不同的是,它們所表示的是二進(jìn)制數(shù)據(jù)。定義BINARY和VARBINARY類型的方式如下所示:需要注意的是,BINARY類型的長(zhǎng)度是固定的,如果數(shù)據(jù)的長(zhǎng)度缺乏最大長(zhǎng)度,將在數(shù)據(jù)的后面用“\0〞補(bǔ)齊,最終到達(dá)指定長(zhǎng)度。BINARY(M)或VARBINARY(M)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型3、TEXT類型TEXT類型用于表示大文本數(shù)據(jù),例如,文章內(nèi)容、評(píng)論等,它的類型分為四種,具體如表2-6所示。表2-6TEXT類型數(shù)據(jù)類型存儲(chǔ)范圍TINYTEXT0~255字節(jié)TEXT0~65535字節(jié)MEDIUMTEXT0~16777215字節(jié)LONGTEXT0~4294967295字節(jié)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型4、BLOB類型BLOB類型是一種特殊的二進(jìn)制類型,它用于表示數(shù)據(jù)量很大的二進(jìn)制數(shù)據(jù),例如圖片、PDF文檔等。BLOB類型分為四種,具體如表2-7所示。需要注意的是,BLOB類型與TEXT類型很相似,但BLOB類型數(shù)據(jù)是根據(jù)二進(jìn)制編碼進(jìn)行比較和排序,而TEXT類型數(shù)據(jù)是根據(jù)文本模式進(jìn)行比較和排序。表2-7BLOB類型數(shù)據(jù)類型存儲(chǔ)范圍TINYBLOB0~255字節(jié)BLOB0~65535字節(jié)MEDIUMBLOB0~16777215字節(jié)LONGBLOB0~4294967295字節(jié)2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型5、ENUM類型ENUM類型又稱為枚舉類型。定義ENUM類型的數(shù)據(jù)格式如下所示:在上述格式中,('值1','值2','值3'……'值n')稱為枚舉列表,ENUM類型的數(shù)據(jù)只能從枚舉列表中取,并且只能取一個(gè)。需要注意的是,枚舉列舉中的每個(gè)值都有一個(gè)順序編號(hào),MySQL中存入的就是這個(gè)順序編號(hào),而不是列表中的值。ENUM('值1','值2','值3'……'值n')2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型6、SET類型SET類型用于表示字符串對(duì)象,它的值可以有零個(gè)或多個(gè),SET類型數(shù)據(jù)的定義格式與ENUM類型類似,具體語(yǔ)法格式如下所示:
與ENUM類型相同,('值1','值2','值3'……'值n')列表中的每個(gè)值都有一個(gè)順序編號(hào),MySQL中存入的也是這個(gè)順序編號(hào),而不是列表中的值。SET('值1','值2','值3'……'值n')2.2數(shù)據(jù)類型2.2.4字符串和二進(jìn)制類型7、BIT類型BIT類型用于表示二進(jìn)制數(shù)據(jù)。定義BIT類型的根本語(yǔ)法格式如下所示:在上述格式中,M用于表示每個(gè)值的位數(shù),范圍為1~64。需要注意的是,如果分配的BIT(M)類型的數(shù)據(jù)長(zhǎng)度小于M,將在數(shù)據(jù)的左邊用0補(bǔ)齊。BIT(M)2.3數(shù)據(jù)表的根本操作2.3.1創(chuàng)立數(shù)據(jù)表需要注意的是,在操作數(shù)據(jù)表之前,應(yīng)該使用“USE數(shù)據(jù)庫(kù)名〞指定操作是在哪個(gè)數(shù)據(jù)庫(kù)中進(jìn)行,否那么會(huì)拋出“Nodatabaseselected〞錯(cuò)誤。創(chuàng)立數(shù)據(jù)表的根本語(yǔ)法格式如下所示:CREATETABLE表名(
字段名1,數(shù)據(jù)類型[完整性約束條件],字段名2,數(shù)據(jù)類型[完整性約束條件],......字段名n,數(shù)據(jù)類型[完整性約束條件],)2.3數(shù)據(jù)表的根本操作2.3.1創(chuàng)立數(shù)據(jù)表【例2-6】創(chuàng)立一個(gè)用于存儲(chǔ)學(xué)生成績(jī)的表tb_grade,如表2-8所示。tb_grade表的數(shù)據(jù)如表2-8所示。要想創(chuàng)立表2-8所示的數(shù)據(jù)表,需要首先創(chuàng)立一個(gè)數(shù)據(jù)庫(kù),SQL語(yǔ)句如下:選擇創(chuàng)立表的數(shù)據(jù)庫(kù),SQL語(yǔ)句如下:字段名稱數(shù)據(jù)類型備注說(shuō)明idINT(11)學(xué)生的編號(hào)nameVARCHAR(20)學(xué)生的姓名gradeFLOAT學(xué)生的成績(jī)表2-8tb_grade表CREATEDATABASEitcast;USEitcast;2.3數(shù)據(jù)表的根本操作2.3.1創(chuàng)立數(shù)據(jù)表創(chuàng)立數(shù)據(jù)表的SQL語(yǔ)句如下所示:為了驗(yàn)證數(shù)據(jù)表是否創(chuàng)立成功,需要使用SHOWTABLES語(yǔ)句進(jìn)行查看,具體執(zhí)行結(jié)果如下所示:2.3數(shù)據(jù)表的根本操作2.3.2查看數(shù)據(jù)表在MySQL中,查看數(shù)據(jù)表的方式有兩種,具體如下:1、使用SHOWCREATETABLE查看數(shù)據(jù)表在MySQL中,SHOWCREATETABLE語(yǔ)句不僅可以查看創(chuàng)立表時(shí)的定義語(yǔ)句,還可以查看表的字符編碼。SHOWCREATETABLE語(yǔ)句的根本語(yǔ)法格式如下所示:在上述格式中,“表名〞指的是要查詢數(shù)據(jù)表的名稱。SHOWCREATETABLE表名;2.3數(shù)據(jù)表的根本操作2.3.2查看數(shù)據(jù)表【例2-7】使用SHOWCREATETABLE語(yǔ)句查看tb_grade表,SQL語(yǔ)句如下所示:執(zhí)行結(jié)果如下所示:SHOWCREATETABLEtb_grade;2.3數(shù)據(jù)表的根本操作2.3.2查看數(shù)據(jù)表可以在SHOWCREATETABLE語(yǔ)句的表名之后加上參數(shù)“\G〞,使顯示結(jié)果整齊美觀,具體執(zhí)行結(jié)果如下所示:2.3數(shù)據(jù)表的根本操作2.3.2查看數(shù)據(jù)表2、使用DESCRIBE語(yǔ)句查看數(shù)據(jù)表在MySQL中,使用DESCRIBE語(yǔ)句可以查看表的字段信息,其中包括字段名、字段類型等信息。DESCRIBE語(yǔ)句的根本語(yǔ)法格式如下所示:或簡(jiǎn)寫為:DESCRIBE表名;DESC表名;2.3數(shù)據(jù)表的根本操作2.3.2查看數(shù)據(jù)表2、使用DESCRIBE語(yǔ)句查看數(shù)據(jù)表【例2-8】使用DESCRIBE語(yǔ)句查看tb_grade表,SQL語(yǔ)句如下所示:執(zhí)行結(jié)果如下所示:DESCRIBEtb_grade;2.3數(shù)據(jù)表的根本操作2.3.2查看數(shù)據(jù)表2、使用DESCRIBE語(yǔ)句查看數(shù)據(jù)表接下來(lái),針對(duì)執(zhí)行結(jié)果中的不同字段進(jìn)行詳細(xì)講解,具體如下:NULL:表示該列是否可以存儲(chǔ)NULL值。Key:表示該列是否已經(jīng)編制索引。Default:表示該列是否有默認(rèn)值。Extra:表示獲取到的與給定列相關(guān)的附加信息。2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表1、修改表名在數(shù)據(jù)庫(kù)中,不同的數(shù)據(jù)表是通過表名來(lái)區(qū)分的。在MySQL中,修改表名的根本語(yǔ)法格式如下所示:在上述格式中,“舊表名〞指的是修改前的表名,“新表名〞指的是修改后的表名,關(guān)鍵字TO是可選的,其在SQL語(yǔ)句中是否出現(xiàn)不會(huì)影響語(yǔ)句的執(zhí)行。ALTERTABLE舊表名RENAME[TO]新表名;2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表【例2-9】將數(shù)據(jù)庫(kù)itcast中的tb_grade表名改為grade表。在修改數(shù)據(jù)庫(kù)表名之前,首先使用SHOWTABLES語(yǔ)句查看數(shù)據(jù)庫(kù)中的所有表,執(zhí)行結(jié)果如下:上述語(yǔ)句執(zhí)行完畢后,使用ALTERTABLE將表名tb_grade修改為grade,SQL語(yǔ)句如下:ALTERTABLEtb_gradeRENAMETOgrade;2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表為了檢測(cè)表名是否修改正確,再次使用SHOWTABLES語(yǔ)句查看數(shù)據(jù)庫(kù)中的所有表,執(zhí)行結(jié)果如下所示:從上述執(zhí)行結(jié)果可以看出,數(shù)據(jù)庫(kù)中的tb_grade表名成功被修改為grade了。2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表2、修改字段名數(shù)據(jù)表中的字段是通過字段名來(lái)區(qū)分的。在MySQL中,修改字段名的根本語(yǔ)法格式如下所示:在上述格式中,“舊字段名〞指的是修改前的字段名,“新字段名〞指的是修改后的字段名,“新數(shù)據(jù)類型〞指的是修改后的數(shù)據(jù)類型。需要注意的是,新數(shù)據(jù)類型不能為空,即使新字段與舊字段的數(shù)據(jù)類型相同,也必須將新數(shù)據(jù)類型設(shè)置為與原來(lái)一樣的數(shù)據(jù)類型。ALTERTABLE表名CHANGE舊字段名
新字段名新數(shù)據(jù)類型;2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表2、修改字段名【例2-10】將數(shù)據(jù)表grade中的name字段改為username,數(shù)據(jù)類型保持不變,SQL語(yǔ)句如下所示:為了驗(yàn)證字段名是否修改成功,通過DECS語(yǔ)句查看grade表的結(jié)構(gòu),執(zhí)行結(jié)果如下所示:ALTERTABLEgradeCHANGEnameusernameVARCHAR(20);2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表3、修改字段的數(shù)據(jù)類型修改字段的數(shù)據(jù)類型,就是將字段的數(shù)據(jù)類型轉(zhuǎn)為另外一種數(shù)據(jù)類型。在MySQL中修改字段數(shù)據(jù)類型的根本語(yǔ)法格式如下所示:在上述格式中,“表名〞指的是要修改字段所在的表名,“字段名〞指的是要修改的字段,“數(shù)據(jù)類型〞指的是修改后的字段的數(shù)據(jù)類型。ALTERTABLE表名MODIFY字段名
數(shù)據(jù)類型;2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表3、修改字段的數(shù)據(jù)類型【例2-11】將數(shù)據(jù)表grade中的id字段的數(shù)據(jù)類型由INT(11)修改為INT(20)。在執(zhí)行修改字段的數(shù)據(jù)類型之前,首先使用DESC查看grade表的結(jié)構(gòu),如下所示:2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表3、修改字段的數(shù)據(jù)類型從上述執(zhí)行結(jié)果可以看出,id字段的數(shù)據(jù)類型為INT(11)。接下來(lái),使用ALTER語(yǔ)句修改id字段的數(shù)據(jù)類型,SQL語(yǔ)句如下所示:為了驗(yàn)證id字段的數(shù)據(jù)類型是否修改成功,再次使用DECS查看grade數(shù)據(jù)表,執(zhí)行結(jié)果如下:ALTERTABLEgradeMODIFYidINT(20);被修改成了INT(20)2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表4、添加字段在MySQL中,添加字段的根本語(yǔ)法格式如下所示:在上述格式中,“新字段名〞為添加字段的名稱,“FIRST〞為可選參數(shù),用于將新添加的字段設(shè)置為表的第一個(gè)字段,“AFTER〞也為可選參數(shù),用于將新添加的字段添加到指定的“已存在字段名〞的后面。ALTERTABLE表名ADD新字段名
數(shù)據(jù)類型[約束條件][FIRST|AFTER已存在字段名]2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表4、添加字段【例2-12】在數(shù)據(jù)表grade中添加一個(gè)沒有約束條件的INT類型的字段age,SQL語(yǔ)句如下:為了驗(yàn)證字段age是否添加成功,接下來(lái),使用DESC語(yǔ)句查看數(shù)據(jù)表grade,執(zhí)行結(jié)果如下:ALTERTABLEgradeADDageINT(10);2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表5、刪除字段所謂刪除字段指的是將某個(gè)字段從表中刪除。在MySQL中,刪除字段的根本語(yǔ)法格式如下所示:在上述格式中,“字段名〞指的是要?jiǎng)h除的字段的名稱。ALTERTABLE表名DROP字段名;2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表5、刪除字段【例2-13】刪除grade表中的age字段,SQL語(yǔ)句如下:為了驗(yàn)證age字段是否刪除,接下來(lái),使用DESC語(yǔ)句查看grade表,執(zhí)行結(jié)果如下:從上述執(zhí)行結(jié)果可以看出,grade表中已經(jīng)不存在age字段,說(shuō)明age字段被成功刪除了。ALTERTABLEgradeDROPage;2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表6、修改字段的排列位置在MySQL中,修改字段排列位置的根本語(yǔ)法格式如下:在上述格式中,“字段名1〞指的是修改位置的字段,“數(shù)據(jù)類型〞指的是字段1的數(shù)據(jù)類型,“FIRST〞為可選參數(shù),指的是將字段1修改為表的第一個(gè)字段,“AFTER字段名2〞是將字段1插入到字段2的后面。ALTERTABLE表名MODIFY字段名1數(shù)據(jù)類型FIRST|AFTER字段名22.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表6、修改字段的排列位置【例2-14】將數(shù)據(jù)表grade的username字段修改為表的第一個(gè)字段,執(zhí)行的SQL語(yǔ)句如下:為了驗(yàn)證username字段是否修改為表的第一個(gè)字段,接下來(lái),使用DESC語(yǔ)句查看數(shù)據(jù)表,執(zhí)行結(jié)果如下:ALTERTABLEgradeMODIFYusernameVARCHAR(20)FIRST;username字段為表的第一個(gè)字段,說(shuō)明username字段的排列位置被成功修改了。2.3數(shù)據(jù)表的根本操作2.3.3修改數(shù)據(jù)表6、修改字段的排列位置【例2-15】將數(shù)據(jù)表grade的id字段插入grade字段后面,執(zhí)行的SQL語(yǔ)句如下:為了驗(yàn)證id字段是否插入到grade字段后面,接下來(lái),使用DESC語(yǔ)句查看數(shù)據(jù)表,執(zhí)行結(jié)果如下:ALTERTABLEgradeMODIFYidINT(20)AFTERgrade;id字段位于grade字段后面,說(shuō)明id字段的排列位置被成功修改了。2.3數(shù)據(jù)表的根本操作2.3.4刪除數(shù)據(jù)表刪除數(shù)據(jù)表是指刪除數(shù)據(jù)庫(kù)中已存在的表,在刪除數(shù)據(jù)表的同時(shí),數(shù)據(jù)表中存儲(chǔ)的數(shù)據(jù)都將被刪除。在MySQL中,直接使用DROPTABLE語(yǔ)句就可以刪除沒有被其它表關(guān)聯(lián)的數(shù)據(jù)表,其根本的語(yǔ)法格式如下所示:在上述格式中,“表名〞指的是要?jiǎng)h除的數(shù)據(jù)表。DROPTABLE表名;2.3數(shù)據(jù)表的根本操作2.3.4刪除數(shù)據(jù)表【例2-16】刪除數(shù)據(jù)表grade,SQL語(yǔ)句如下:為了驗(yàn)證數(shù)據(jù)表grade是否被刪除成功,使用DESC語(yǔ)句查看數(shù)據(jù)表,執(zhí)行結(jié)果如下:從上述結(jié)果可以看出,grade表已經(jīng)不存在了,說(shuō)明數(shù)據(jù)表grade被成功刪除了。DROPTABLEgrade;2.4表的約束為了防止數(shù)據(jù)表中插入錯(cuò)誤的數(shù)據(jù),在MySQL中,定義了一些維護(hù)數(shù)據(jù)庫(kù)完整性的規(guī)那么,即表的約束。表2-9列舉了常見的表的約束。表2-9列舉的約束條件都是針對(duì)表中字段進(jìn)行限制,從而保證數(shù)據(jù)表中數(shù)據(jù)的正確性和唯一性。約束條件說(shuō)明PRIMARYKEY主鍵約束,用于唯一標(biāo)識(shí)對(duì)應(yīng)的記錄FOREIGNKEY外鍵約束NOTNULL非空約束UNIQUE唯一性約束
DEFAULT默認(rèn)值約束,用于設(shè)置字段的默認(rèn)值表2-9表的約束2.4表的約束
主鍵約束在MySQL中,為了快速查找表中的某條信息,可以通過設(shè)置主鍵來(lái)實(shí)現(xiàn)。主鍵約束是通過PRIMARYKEY定義的,它可以唯一標(biāo)識(shí)表中的記錄,這就好比身份證可以用來(lái)標(biāo)識(shí)人的身份一樣。在MySQL中,主鍵約束分為兩種,具體如下:1、單字段主鍵2、多字段主鍵2.4表的約束主鍵約束1、單字段主鍵單字段主鍵指的是由一個(gè)字段構(gòu)成的主鍵,其根本的語(yǔ)法格式如下所示:【例2-17】創(chuàng)立一個(gè)數(shù)據(jù)表example01,并設(shè)置id作為主鍵,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,example01表中創(chuàng)立了id、name和grade三個(gè)字段,其中,id字段是主鍵。字段名數(shù)據(jù)類型PRIMARYKEY2.4表的約束2.4.1主鍵約束2、多字段主鍵多字段主鍵指的是多個(gè)字段組合而成的主鍵,其根本的語(yǔ)法格式如下所示:【例2-18】創(chuàng)立一個(gè)數(shù)據(jù)表example02,在表中將stu_id和course_id兩個(gè)字段共同作為主鍵,SQL語(yǔ)句如下:PRIMARYKEY(字段名1,字段名2,……字段名n)需要注意的是:每個(gè)數(shù)據(jù)表中最多只能有一個(gè)主鍵約束,定義為PRIMARYKEY的字段不能有重復(fù)值且不能為NULL值。stu_id和course_id兩個(gè)字段組合可以唯一確定一條記錄2.4表的約束2.4.2非空約束非空約束指的是字段的值不能為NULL,在MySQL中,非空約束是通過NOTNULL定義的,其根本的語(yǔ)法格式如下所示:【例2-19】創(chuàng)立一個(gè)數(shù)據(jù)表example04,將表中的name字段設(shè)置為非空約束,SQL語(yǔ)句如下:需要注意的是,在同一個(gè)數(shù)據(jù)表中可以定義多個(gè)非空字段。字段名數(shù)據(jù)類型NOTNULL;2.4表的約束2.4.3唯一約束唯一約束用于保證數(shù)據(jù)表中字段的唯一性,即表中字段的值不能重復(fù)出現(xiàn)。唯一約束是通過UNIQUE定義的,其根本的語(yǔ)法格式如下所示:【例2-20】創(chuàng)立一個(gè)數(shù)據(jù)表example05,將表中的stu_id設(shè)置為唯一約束,SQL語(yǔ)句如下:字段名數(shù)據(jù)類型UNIQUE;2.4表的約束2.4.4默認(rèn)約束默認(rèn)約束用于給數(shù)據(jù)表中的字段指定默認(rèn)值,即當(dāng)在表中插入一條新記錄時(shí),如果沒有給這個(gè)字段賦值,那么,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)自動(dòng)為這個(gè)字段插入默認(rèn)值。默認(rèn)值是通過DEFAULT關(guān)鍵字定義的。默認(rèn)約束根本的語(yǔ)法格式如下所示:【例2-21】創(chuàng)立一個(gè)數(shù)據(jù)表example06,將表中的grade字段的默認(rèn)值設(shè)置為0,SQL語(yǔ)句如下:字段名數(shù)據(jù)類型DEFAULT默認(rèn)值;2.5設(shè)置表的字段值
自動(dòng)增加在數(shù)據(jù)表中,假設(shè)想為表中插入的新記錄自動(dòng)生成唯一的ID,可以使用AUTO_INCREMENT約束來(lái)實(shí)現(xiàn)。AUTO_INCREMENT約束的字段可以是任何整數(shù)類型。默認(rèn)情況下,該字段的值是從1開始自增的。使用AUTO_INCREMENT設(shè)置表字段值自動(dòng)增加的根本語(yǔ)法格式如下所示:【例2-22】創(chuàng)立一個(gè)數(shù)據(jù)表example05,將表中的id字段設(shè)置為自動(dòng)增加,SQL語(yǔ)句如下:字段名數(shù)據(jù)類型AUTO_INCREMENT;2.6索引2.6.1索引的概念數(shù)據(jù)庫(kù)的索引好比新華字典的音序表,它是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序后的一種結(jié)構(gòu),其作用就是提高表中數(shù)據(jù)的查詢速度。MySQL中的索引分為很多種,具體如下:1、普通索引2、唯一性索引3、全文索引4、單列索引5、多列索引6、空間索引2.6索引2.6.2創(chuàng)立索引創(chuàng)立索引的方式有三種,具體如下:一、創(chuàng)立表的時(shí)候創(chuàng)立索引二、使用CREATEINDEX語(yǔ)句在已經(jīng)存在的表上創(chuàng)立索引三、使用ALTERTABLE語(yǔ)句在已經(jīng)存在表上創(chuàng)立索引2.6索引2.6.2創(chuàng)立索引一、創(chuàng)立表的時(shí)候創(chuàng)立索引關(guān)于上述語(yǔ)法的相關(guān)解釋具體如下:UNIQUE:可選參數(shù),表示唯一性約束FULLTEXT:可選參數(shù),表示全文約束SPATIAL:可選參數(shù),表示空間約束INDEX和KEY:用來(lái)表示字段的索引,二者選一即可別名:可選參數(shù),表示創(chuàng)立的索引的名稱字段名1:指定索引對(duì)應(yīng)字段的名稱長(zhǎng)度:可選參數(shù),用于表示索引的長(zhǎng)度ASC和DESC:可選參數(shù),其中,ASC表示升序排列,DESC表示降序排列CREATETABLE表名〔字段名數(shù)據(jù)類型[完整性約束條件],字段名數(shù)據(jù)類型[完整性約束條件],......字段名數(shù)據(jù)類型[UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY[別名](字段名1[(長(zhǎng)度)])[ASC|DESC]));2.6索引2.6.2創(chuàng)立索引一、創(chuàng)立表的時(shí)候創(chuàng)立索引為了幫助大家更好地了解如何在創(chuàng)立表的時(shí)候創(chuàng)立索引,接下來(lái),通過具體的案例,分別對(duì)MySQL中的6種索引類型進(jìn)行講解,具體如下:1、創(chuàng)立普通索引【例2-23】在t1表中id字段上建立索引,SQL語(yǔ)句如下:2.6索引2.6.2創(chuàng)立索引1、創(chuàng)立普通索引上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:為了查看索引是否被使用,可以使用EXPLAIN語(yǔ)句進(jìn)行查看,SQL代碼如下:EXPLAINSELECT*FROMt1WHEREid=1\GSHOWCREATETABLEt1\G2.6索引2.6.2創(chuàng)立索引2、創(chuàng)立唯一性索引【例2-24】創(chuàng)立一個(gè)表名為t2的表,在表中的id字段上建立索引名為unique_id的唯一性索引,并且按照升序排列,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt2\G2.6索引2.6.2創(chuàng)立索引3、創(chuàng)立全文索引【例2-25】創(chuàng)立一個(gè)表名為t3的表,在表中的name字段上建立索引名為fulltext_name的全文索引,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt3\G2.6索引2.6.2創(chuàng)立索引4、創(chuàng)立單列索引【例2-26】創(chuàng)立一個(gè)表名為t4的表,在表中的name字段上建立索引名為single_name的單列索引,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt4\G2.6索引2.6.2創(chuàng)立索引5、創(chuàng)立多列索引【例2-27】創(chuàng)立一個(gè)表名為t5的表,在表中的id和name字段上建立索引名為multi的多列索引,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:SHOWCREATETABLEt5\G2.6索引2.6.2創(chuàng)立索引5、創(chuàng)立多列索引需要注意的是,在多列索引中,只有查詢條件中使用了這些字段中的第一個(gè)字段時(shí),多列索引才會(huì)被使用。為了驗(yàn)證這個(gè)說(shuō)法是否正確,將id字段作為查詢條件,通過EXPLAIN語(yǔ)句查看索引的使用情況,SQL代碼如下所示:如果只使用name字段作為查詢條件,SQL代碼如下所示:EXPLAINSELECT*FROMt5WHEREid=1\GEXPLAINSELECT*FROMt5WHEREname='Mike'\G2.6索引2.6.2創(chuàng)立索引6、創(chuàng)立空間索引【例2-28】創(chuàng)立一個(gè)表名為t6的表,在空間類型為GEOMETRY的字段上創(chuàng)立空間索引,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:需要注意的是,創(chuàng)立空間索引時(shí),所在字段的值不能為空值,并且表的存儲(chǔ)引擎為MyISAM。SHOWCREATETABLEt6\G2.6索引2.6.2創(chuàng)立索引二、使用CREATEINDEX語(yǔ)句在已經(jīng)存在的表上創(chuàng)立索引假設(shè)想在一個(gè)已經(jīng)存在的表上創(chuàng)立索引,可以使用CREATEINDEX語(yǔ)句,CREATEINDEX語(yǔ)句創(chuàng)立索引的具體語(yǔ)法格式如下所示:在上述語(yǔ)法格式中,UNIQUE、FULLTEXT和SPATIAL都是可選參數(shù),分別用于表示唯一性索引、全文索引和空間索引。INDEX用于指明字段為索引。CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名ON表名(字段名[(長(zhǎng)度)][ASC|DESC]);2.6索引2.6.2創(chuàng)立索引為了便于大家學(xué)習(xí)如何使用CREATEINDEX語(yǔ)句在已經(jīng)存在的表上創(chuàng)立索引,接下來(lái),創(chuàng)立一個(gè)book表,該表中沒有建立任何索引,創(chuàng)立book表的SQL語(yǔ)句如下所示:創(chuàng)立好數(shù)據(jù)表book后,通過具體的案例為大家演示如何使用CREATINDEX語(yǔ)句在已存在的數(shù)據(jù)表中創(chuàng)立索引,具體如下:CREATETABLEbook(
bookidINTNOTNULL,
booknameVARCHAR(255)NOTNULL,
authorsVARCHAR(255)NOTNULL,
infoVARCHAR(255)NULL,
commentVARCHAR(255)NULL,
publicyearYEARNOTNULL);2.6索引2.6.2創(chuàng)立索引1、創(chuàng)立普通索引【例2-29】在book表中的bookid字段上建立一個(gè)名稱為index_id的普通索引,SQL語(yǔ)句如下所示:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:CREATEINDEXindex_idONbook(bookid);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)立索引2、創(chuàng)立唯一性索引【例2-30】在book表中的bookid字段上建立一個(gè)名稱為uniqueidx的唯一性索引,SQL語(yǔ)句如下所示:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:CREATEUNIQUEINDEXuniqueidxONbook(bookid);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)立索引3、創(chuàng)立單列索引【例2-31】在book表中的comment字段上建立一個(gè)名稱為singleidx的單列索引,SQL語(yǔ)句如下所示:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:CREATEINDEXsingleidxONbook(comment);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)立索引4、創(chuàng)立多列索引【例2-32】在book表中的authors和info字段上建立一個(gè)名稱為mulitidx的多列索引,SQL語(yǔ)句如下所示:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:CREATEINDEXmulitidxONbook(authors(20),info(20));SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)立索引5、創(chuàng)立全文索引【例2-33】刪除表book,重新創(chuàng)立表book,在表中的info字段上創(chuàng)立全文索引。首先刪除表book,SQL語(yǔ)句如下:然后重新創(chuàng)立表book,SQL語(yǔ)句如下:DROPTABLEbook;2.6索引2.6.2創(chuàng)立索引5、創(chuàng)立全文索引使用CREATEINDEX語(yǔ)句在book表的info字段上創(chuàng)立名稱為fulltextidx的全文索引,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代碼如下:CREATEFULLTEXTINDEXfulltextidxONbook(info);SHOWCREATETABLEbook\G2.6索引2.6.2創(chuàng)立索引6、創(chuàng)立空間索引【例2-34】創(chuàng)立表t7,在表中的g字段上創(chuàng)立名稱為spatidx的空間索引。首先創(chuàng)立數(shù)據(jù)表t7,SQL語(yǔ)句如下:使用CREATEINDEX語(yǔ)句在t7表的g字段上創(chuàng)立名稱為spatidx的空間索引,SQL語(yǔ)句如下:為了驗(yàn)證空間索引spatidx是否創(chuàng)立成功,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),結(jié)果如下所示:CREATETABLEt7(gGEOMETRYNOTNULL)ENGINE=MyISAM;CREATESPATIALINDEXspatidxONt7(g);SHOWCREATETABLEt7\G2.6索引2.6.2創(chuàng)立索引三、使用ALTERTABLE語(yǔ)句在已經(jīng)存在表上創(chuàng)立索引在已經(jīng)存在的表中創(chuàng)立索引,除了可以使用CREATEINDEX語(yǔ)句外,還可以使用ALTERTABLE語(yǔ)句。使用ALTERTABLE語(yǔ)句在已經(jīng)存在表上創(chuàng)立索引的語(yǔ)法格式如下所示:在上述語(yǔ)法格式中,UNIQUE、FULLTEXT和SPATIAL都是可選參數(shù),分別用于表示唯一性索引、全文索引和空間索引,ADD表示向表中添加字段。ALTERTABLE表名ADD[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名(字段名[(長(zhǎng)度)][ASC|DESC])2.6索引2.6.2創(chuàng)立索引接下來(lái),同樣以book表為例,對(duì)不同類型的索引進(jìn)行詳細(xì)講解。為了使book表不包含任何索引,我們首先刪除表book,SQL語(yǔ)句如下:然后重新建立表book,SQL語(yǔ)句如下:創(chuàng)立好數(shù)據(jù)表book后,就可以使用ALTERTABLE語(yǔ)句在已存在的數(shù)據(jù)表中創(chuàng)立索引了,具體如下:DROPTABLEbook;2.6索引2.6.2創(chuàng)立索引1、創(chuàng)立普通索引【例2-35】在表中的bookid字段上創(chuàng)立名稱為index_id的普通索引,SQL語(yǔ)句如下:上述SQL語(yǔ)句執(zhí)行后,使用SHOWCREATETABLE語(yǔ)句查看表的結(jié)構(gòu),SQL代
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB51T 1578-2013 中華胭脂魚 配合飼料
- DB51T 1463-2012 楠竹(毛竹)商品材生產(chǎn)規(guī)程
- DB51T 1097-2010 牛奶中沙丁胺醇?xì)埩魴z測(cè)方法-酶聯(lián)免疫吸附測(cè)定(ELISA)法
- DB51T 1019-2010 無(wú)公害食品苦蕎粉
- 腰帶項(xiàng)目實(shí)施方案
- 年產(chǎn)xxx汽車電機(jī)類項(xiàng)目可行性分析報(bào)告
- 2024年生物制藥研發(fā)合作承攬合同
- 直流發(fā)電機(jī)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 纖維素生產(chǎn)加工項(xiàng)目可行性研究報(bào)告
- 2024-2030年智能疏導(dǎo)系統(tǒng)公司技術(shù)改造及擴(kuò)產(chǎn)項(xiàng)目可行性研究報(bào)告
- 小學(xué)勞動(dòng)教育實(shí)施情況調(diào)查問卷(含教師卷和學(xué)生卷)及調(diào)查結(jié)論
- 江西省南昌市雷式學(xué)校2024-2025學(xué)年八年級(jí)上學(xué)期第一次月考物理試卷
- 06《誡子書》理解性默寫-2022-2023學(xué)年七年級(jí)語(yǔ)文上冊(cè)知識(shí)梳理與能力訓(xùn)練
- 【幼兒的不良飲食習(xí)慣及影響因素探究11000字(論文)】
- 六年級(jí)趣味數(shù)學(xué)思維拓展題50道及答案
- 靜脈治療護(hù)理小組職責(zé)
- 第六章《發(fā)展與合作》課件-2024-2025學(xué)年人教版初中地理七年級(jí)上冊(cè)
- 醫(yī)院感染監(jiān)測(cè)規(guī)范
- 風(fēng)險(xiǎn)分級(jí)管控和隱患排查治理體系培訓(xùn)考試試題(附答案)
- 項(xiàng)目四任務(wù)1:認(rèn)識(shí)毫米波雷達(dá)(課件)
- 四川省住宅設(shè)計(jì)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論