创建索引
如果是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 ;