mysql第五章实现索引

一、索引作用

索引:用于更快的从表中获取数据。

二、索引简介,创建和管理索引

1.五种索引简介

a.主键

对应索引的列值必须唯一,列值不能包含NULL值。

b.外键

定义表之间的关系,并确保这些表中数据的一致性,即一个表中的数据依赖于另一个表中的数据。

c.唯一

与主键相似,但可以包含NULL值。

d.常规

与主键相反,可在列值重复和包含NULL值的列上定义。

e.全文

可在可以接受字符串值(例char、varchar、txt)的列上定义,与常规相比可以加快搜索列数据中字符串的速度。

2.创建五种索引

a.创建常规索引:
CREATE TABLE 表名
(
...
INDEX|KEY 索引名(列名)#如果需要在多个列上创建常规索引,要用逗号隔开,即(列名),(列名)...
)
#例如:
create table Books(
  BookID int primary key,
  Title varchar(40) not null,
  AuthorID int not null,
  language varchar(20) not null,
  index idx_lang(language)#创建常规索引
);
b.创建全文索引:
CREATE TABLE 表名
(
...
FULLTEXT [KEY|INDEX] 索引名(列名)#key与index可以不加
)
c.创建唯一索引:
CREATE TABLE 表名
(
...
UNIQUE [KEY|INDEX] 索引名(列名)#key与index可以不加
)
#例如:
create table Author(
  AuthorID int primary key,
  AuthorName varchar(30) not null,
  Email varchar(30) not null,
  UNIQUE   idx_unq_email(Email)
);
d.主键
CREATE TABLE 表名
(
...
[constraint constraint_name]PRIMARY KEY (COLUMN_NAME)#[]内容可不加
)
e.外键
CREATE TABLE 表名
(
...
[constraint constraint_name]FOREIGN KEY (COLUMN_NAME)#[]内容可不加
)

2.在现有表上创建索引

ALTER TABLE 语句

该语句允许在现有表上创建五种类型的索引

对应的创建常规索引的语法是

alter table 表名 add index|key [索引名] (列名)#[]内容可不加,如果不加索引名,则索引名默认为列名

创建全文索引

alter table 表名 add fulltext [index] [索引名] (列名)#[]内容可不加
CREATE INDEX语句

该语句也可以在现有表上创建索引,与alter table语句不同的是,它不能创建主键和外键索引

对应的创建唯一索引的语法是(全文索引将unique改为fulltext)

create unique index 索引名 on 表名(列名)

创建常规索引的语法是

create  index 索引名 on 表名(列名)

3.查看索引

语法:

show indexes from 表名[数据库名称]#[]内容可不加,数据库名称用于指定数据库

4.删除索引

alter table语句

语法:

alter table 表名 drop index 索引名

当实际使用中某个索引使用较少时,可考虑删除。

drop index语句

语法:

drop index 索引名 on 表名