MySQL認證教程:Alter Table怎么創建與刪除索引
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢MySQL認證教程:Alter Table怎么創建與刪除索引?為了給現有的表增加一個索引,可使用 ALTER TABLE 或 CREATE INDEX 語句。ALTER TABLE 最常用,因為可用它來創建普通索引、UNIQUE 索引或 PRIMARY KEY 索引,如:
ALTER TABLE tbl_name ADD INDEX index_name (column_list)
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list)
ALTER TABLE tbl_name ADD PRIMARY KEY index_name (column_list)
其中 tbl_name 是要增加索引的表名,而 column_list 指出對哪些列進行索引。一個(col1,col2,...)形式的列表創造一個多列索引。索引值有給定列的值串聯而成。如果索引由不止一列組成,各列名之間用逗號分隔。索引名 index_name 是可選的,因此可以不寫它,MySQL 將根據第一個索引列賦給它一個名稱。ALTER TABLE 允許在單個語句中指定多個表的更改,因此可以在同時創建多個索引。
同樣,也可以用ALTER TABLE語句產出列的索引:
ALTER TABLE tbl_name DROP INDEX index_name
ALTER TABLE tbl_name DROP PRIMARY KEY
注意上面第一條語句可以用來刪除各種類型的索引,而第三條語句只在刪除 PRIMARY KEY 索引時使用;在此情形中,不需要索引名,因為一個表只可能具有一個這樣的索引。如果沒有明確地創建作為 PRIMARY KEY 的索引,但該表具有一個或多個 UNIQUE 索引,則 MySQL 將刪除這些 UNIQUE 索引中的第一個。
如果從表中刪除了列,則索引可能會受到影響。如果所刪除的列為索引的組成部分,則該列也會從索引中刪除。如果組成索引的所有列都被刪除,則整個索引將被刪除。
例如,對于上面所使用的student為例,你可能想為之創建這樣的索引,以加速表的檢索速度:
mysql> ALTER TABLE student
-> ADD PRIMARY KEY(id),
-> ADD INDEX mark(english,Chinese,history);
這個例子,既包括PRIMARY索引,也包括多列索引。記住,使用PRIMARY索引的列,必須是一個具有NOT NULL屬性的列,如果你愿意產看創建的索引的情況,可以使用SHOW INDEX語句:
mysql> SHOW INDEX FROM student;
其結果為:
+---------+------------+----------+--------------+-------------+-
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
+---------+------------+----------+--------------+-------------+-
| student | 0 | PRIMARY | 1 | id |
| student | 1 | mark | 1 | english |
| student | 1 | mark | 2 | chinese |
| student | 1 | mark | 3 | history |
+---------+------------+----------+--------------+-------------+-
由于列數太多,上表并沒有包括所有的輸出,讀者可以試著自己查看。
再使用ALTER TABLE語句刪除索引,刪除索引需要知道索引的名字,你可以通過SHOW INDEX語句得到:
mysql> ALTER TABLE student DROP PRIMARY KEY,
-> DROP INDEX mark;
再產看表中的索引,其語句和輸出為:
mysql> SHOW INDEX FROM student;
Empty set (0.01 sec)