一、本机环境 二、索引的创建删除 三、唯一索引的创建和删除
一、本机环境
系统环境:linux centos 7.2
mysql版本:mysql-5.7.9
安装目录:/application/mysql
二、索引的创建和删除
1、索引的优缺点
- 优点:索引就像是目录一样,在字段上加了索引,那么以索引列为查询条件时,可以加快查询数据的速度
- 缺点:降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。更新表时,MySQL不仅要保存数据,还要保存一下索引文件
- 注意事项:创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
2、创建索引
1)建表时直接创建
格式:
CREATE TABLE (
ID INT NOT NULL,
col_name VARCHAR(16) NOT NULL,
INDEX index_name (col_name(length))
);
例子:
create table student (
id int not null,
name varchar(16) not null,
age tinyint(2),
dept varchar(16),
index index_name(name(8))
);
2)创建
格式:CREATE INDEX index_name ON tbl_name (index_col_name,...)
例子:create index index_name on student (name (8))
3)修改表结构创建
格式:ALTER TABLE tbl_name ADD INDEX index_name (index_col_name,...)
例子:alter table student add index index_name (name)
2、删除索引
格式:DROP INDEX index_name ON tbl_name
例子:drop index index_name on student
格式:ALTER TABLE tbl_name DROP INDEX index_name (index_col_name,...)
例子:alter table student drop index index_name
三、唯一索引的创建、删除
特点:索引列的值必须唯一,但允许有空值
1、创建表的时候直接指定
格式:
CREATE TABLE (
ID INT NOT NULL,
col_name VARCHAR(16) NOT NULL,
UNIQUE index_name (col_name(length))
);
例子:
create table student (
id int not null,
name varchar(16) not null,
age tinyint(2),
dept varchar(16),
unique index_name(name(8))
);
2、创建
格式:CREATE UNIQUE INDEX index_name ON tbl_name (index_col_name,...)
例子:create unique index un_dept on student(dept);
3、修改表时创建
格式:ALTER TABLE tbl_name ADD UNIQUE INDEX index_name (index_col_name,...)
例子:alter table student add unique index index_dept (dept)
4、删除
格式:DROP INDEX index_name ON tbl_name
例子:drop index index_dept on student
格式:ALTER TABLE tbl_name DROP INDEX index_name
例子:alter table student drop index un_dept
小技巧:在创建索引的时候可以先查看该列有多少唯一值,然后创建索引
SELECT COUNT (DISTINCT col_name) FROM tbl_name