創建索引
如果是CHAR,VARCHAR類型,length可以小於字段實際長度
如果是BLOB和TEXT類型,必須指定 length。所以大多數情況下不需要指定length
用ALTER TABLE的最多
一、CREATE INDEX方法
CREATE INDEX <索引名> ON <表名> (<列名> [<長度>] [ ASC | DESC])
CREATE INDEX indexName ON mytable (username);
CREATE UNIQUE INDEX index_name ON mytable (username);
限制:只能增加普通索引INDEX和UNIQUE INDEX索引這兩種;不能創建PRIMARY KEY索引
二、ALTER TABLE方法
ALTER TABLE <表名> ADD INDEX [<索引名>] (<列名>,…)
ALTER TABLE <表名> ADD UNIQUE [ INDEX | KEY] [<索引名>] (<列名>,…)
ALTER TABLE <表名> ADD PRIMARY KEY (<列名>,…)
ALTER TABLE <表名> ADD FOREIGN KEY [<索引名>] (<列名>,…)
ALTER TABLE student ADD INDEX index_name (name);
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);傳說的組合索引
相當於分別建立了下面三組組合索引:
usernname,city,age
usernname,city
usernname
三、CREATE TABLE時候指定
CREATE TABLE 時指定
創建一般索引
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)
);
創建唯一索引
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(height)
);
創建主鍵(雖然ALTER TABLE也能創建,但主鍵一般都在創表時建立)
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
PRIMARY KEY(ID)
);
查看索引
SHOW INDEX FROM table_name; \G
SHOW INDEX FROM table_name FROM db_name;
\G 格式化輸出
刪除索引
drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;