MySQL如何創(chuàng)建和刪除索引?

mysql索引,mysql創(chuàng)建索引,mysql刪除索引

1.在關(guān)系數(shù)據(jù)庫中,索引是一種與表有關(guān)的數(shù)據(jù)庫結(jié)構(gòu),它可以使對(duì)應(yīng)于表的SQL語句執(zhí)行得更快。今天就簡(jiǎn)單地給大家演示一下mysql中索引的創(chuàng)建,查詢以及刪除。

2.首先隨便建立一張表,SQL語句如下:

CREATE?TABLE?IF?NOT?EXISTS?`student`?(  ?`id`?int(11)?NOT?NULL?AUTO_INCREMENT?COMMENT?'學(xué)號(hào)',  ?`name`?varchar(64)?NOT?NULL?DEFAULT?''?COMMENT?'姓名',  ?`sex`?tinyint(1)?NOT?NULL?COMMENT?'性別',  ?`age`?tinyint(2)?NOT?NULL?COMMENT?'年齡',  ?`class`?varchar(64)?NOT?NULL?DEFAULT?''?COMMENT?'班級(jí)',  ?PRIMARY?KEY?(`id`)  ?)?ENGINE=MYISAM?DEFAULT?CHARSET=utf8?COMMENT='學(xué)生表';

MySQL如何創(chuàng)建和刪除索引?

3.可以看到,在創(chuàng)建表的SQL語句中,已經(jīng)建立了一個(gè)主鍵索引,此時(shí)查看表中索引:SHOW INDEX FROM `student`,結(jié)果如圖所示:

MySQL如何創(chuàng)建和刪除索引?


4.當(dāng)然,我們還可以在基礎(chǔ)上添加別的索引,比如說唯一索引。假設(shè)每個(gè)學(xué)生的名字是不可以重復(fù)的,那么就可以在name字段上添加一個(gè)唯一索引:

ALTER?TABLE?`student`?ADD?UNIQUE?`stu_name`?(`name`);

此時(shí),再次查看表中索引,SHOW INDEX FROM `student`,結(jié)果如圖所示:

MySQL如何創(chuàng)建和刪除索引?


5.然后再給班級(jí)添加一個(gè)普通索引:

ALTER?TABLE?`student`?ADD?INDEX?`stu_class`?(`class`);

查看表中索引,SHOW INDEX FROM `student`,結(jié)果如圖所示:

MySQL如何創(chuàng)建和刪除索引?


6.接下來是刪除索引,刪除掉唯一索引和普通索引:

ALTER?TABLE?`student`?DROP?INDEX?`stu_name`;  ALTER?TABLE?`student`?DROP?INDEX?`stu_class`;

然后查看表中索引,SHOW INDEX FROM `student`,結(jié)果如圖所示:

MySQL如何創(chuàng)建和刪除索引?

MySQL如何創(chuàng)建和刪除索引?

7.這時(shí),就剩下一個(gè)主鍵索引了,如果直接刪除的話將會(huì)報(bào)錯(cuò):

ALTER?TABLE?`student`?DROP?PRIMARY?KEY;

原因:因?yàn)橹麈I索引關(guān)聯(lián)的id鍵為自動(dòng)增長;

MySQL如何創(chuàng)建和刪除索引?

8.需要先將id鍵的自動(dòng)增長取消:

ALTER?TABLE?`student`??MODIFY?`id`??int(10)?NOT?NULL?COMMENT?'學(xué)號(hào)'

再次執(zhí)行:

?ALTER?TABLE?`student`?DROP?PRIMARY?KEY;

查看表中索引,SHOW INDEX FROM `student`,表中已經(jīng)沒有索引啦

MySQL如何創(chuàng)建和刪除索引?

MySQL如何創(chuàng)建和刪除索引?

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享