mysql索引和唯一索引的创建和删除

一、本机环境
二、索引的创建删除
三、唯一索引的创建和删除


一、本机环境

系统环境: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

猜你喜欢

转载自blog.51cto.com/13006632/2496743