mysql添加索引的方法:可以通過【create table】語句來添加,如【CONSTRAINT PRIMARY KEY | INDEX [] [] 】,表示創(chuàng)建一般索引。
在mysql中可以在創(chuàng)建表(CREATE TABLE)的同時創(chuàng)建索引;也可以在創(chuàng)建表后創(chuàng)建索引,使用CREATE INDEX語句或ALTER TABLE 語句。
(視頻教程推薦:mysql視頻教程)
1、使用CREATE INDEX語句
可以使用專門用于創(chuàng)建索引的 CREATE INDEX 語句在一個已有的表上創(chuàng)建索引,但該語句不能創(chuàng)建主鍵。
CREATE?INDEX?[]?ON??(?[]?[?ASC?|?DESC])
語法說明如下:
●?。褐付ㄋ饕?。一個表可以創(chuàng)建多個索引,但每個索引在該表中的名稱是唯一的。
● :指定要創(chuàng)建索引的表名。
●?。褐付ㄒ獎?chuàng)建索引的列名。通常可以考慮將查詢語句中在 JOIN 子句和 WHERE 子句里經(jīng)常出現(xiàn)的列作為索引列。
●?。嚎蛇x項。指定使用列前的 Length 個字符來創(chuàng)建索引。使用列的一部分創(chuàng)建索引有利于減小索引文件的大小,節(jié)省索引列所占的空間。在某些情況下,只能對列的前綴進行索引。索引列的長度有一個最大上限 255 個字節(jié)(MyISAM 和 InnoDB 表的最大上限為 1000 個字節(jié)),如果索引列的長度超過了這個上限,就只能用列的前綴進行索引。另外,BLOB 或 TEXT 類型的列也必須使用前綴索引。
● ASC|DESC:可選項。ASC指定索引按照升序來排列,DESC指定索引按照降序來排列,默認為ASC。
二、使用 CREATE TABLE 語句
索引可以在創(chuàng)建表(CREATE TABLE)的同時創(chuàng)建,語法格式:
1、創(chuàng)建主鍵索引
CONSTRAINT?PRIMARY?KEY?[索引類型]?(,…)
在使用 CREATE TABLE 語句定義列選項的時候,可以通過直接在某個列定義后面添加 PRIMARY KEY 的方式創(chuàng)建主鍵。而當主鍵是由多個列組成的多列索引時,則不能使用這種方法,只能用在語句的最后加上一個 PRIMARY KRY(,…) 子句的方式來實現(xiàn)。
2、創(chuàng)建一般索引
?KEY?|?INDEX?[]?[]?(,…)
3、創(chuàng)建唯一性索引
UNIQUE?[?INDEX?|?KEY]?[]?[]?(,…)
4、創(chuàng)建外鍵索引
FOREIGN?KEY??
示例1:創(chuàng)建一個表 tb_stu_info,在該表的 height 字段創(chuàng)建一般索引。
mysql>?CREATE?TABLE?tb_stu_info ????->?( ????->?id?INT?NOT?NULL, ????->?name?CHAR(45)?DEFAULT?NULL, ????->?dept_id?INT?DEFAULT?NULL, ????->?age?INT?DEFAULT?NULL, ????->?height?INT?DEFAULT?NULL, ????->?INDEX(height) ????->?);
示例2:創(chuàng)建一個表 tb_stu_info2,在該表的 id 字段上使用 UNIQUE 關鍵字創(chuàng)建唯一索引。
mysql>?CREATE?TABLE?tb_stu_info2 ????->?( ????->?id?INT?NOT?NULL, ????->?name?CHAR(45)?DEFAULT?NULL, ????->?dept_id?INT?DEFAULT?NULL, ????->?age?INT?DEFAULT?NULL, ????->?height?INT?DEFAULT?NULL, ????->?UNIQUE?INDEX(id) ????->?);
三、使用 ALTER TABLE 語句
在使用 ALTER TABLE 語句修改表的同時,可以向已有的表添加索引。具體的做法是在 ALTER TABLE 語句中添加以下語法成分的某一項或幾項。
1、創(chuàng)建主鍵索引
ADD?PRIMARY?KEY?[]?(,…)
2、創(chuàng)建一般索引
ADD?INDEX?[]?[]?(,…)
3、創(chuàng)建唯一性索引
ADD?UNIQUE?[?INDEX?|?KEY]?[]?[]?(,…)
4、創(chuàng)建外鍵索引
ADD?FOREIGN?KEY?[]?(,…)
示例1:創(chuàng)建一個表 tb_stu_info3后,在該表的 id 字段上使用 UNIQUE 關鍵字創(chuàng)建唯一索引。
mysql>?CREATE?TABLE?tb_stu_info3 ????->?( ????->?id?INT?NOT?NULL, ????->?name?CHAR(45)?DEFAULT?NULL, ????->?dept_id?INT?DEFAULT?NULL, ????->?age?INT?DEFAULT?NULL, ????->?height?INT?DEFAULT?NULL, ????->?); Query?OK,0?rows?affected?(0.40?sec) mysql>ALTER?TABLE?tb_stu_info3?ADD?UNIQUE?(id)?;
四、顯示索引信息
以使用 SHOW INDEX 命令來列出表中的相關的索引信息??梢酝ㄟ^添加 G 來格式化輸出信息。
示例:
mysql>?SHOW?CREATE?TABLE?tb_stu_infoG ***************************?1.?row?*************************** ???????Table:?tb_stu_info Create?Table:?CREATE?TABLE?`tb_stu_info`?( ??`id`?int(11)?NOT?NULL, ??`name`?char(45)?DEFAULT?NULL, ??`dept_id`?int(11)?DEFAULT?NULL, ??`age`?int(11)?DEFAULT?NULL, ??`height`?int(11)?DEFAULT?NULL, ??KEY?`height`?(`height`) )?ENGINE=InnoDB?DEFAULT?CHARSET=gb2312 1?row?in?set?(0.01?sec)