索引

2、创建和查看普通索引
最基本的索引类型,普通索引的索引列值可以取空值或重复值,没有唯一性、非空等限制,可以创建在任何数据类型的字段上,普通索引的关键字是index或key。
(1)创建表时创建普通索引,语法格式如下:
create table 表名 (
字段名 数据类型,
字段名 数据类型,
…,
字段名 数据类型,
index│key [索引名] (字段名 [asc│desc])
);
a.index或key–参数是用来指定字段为索引的关键字;
b.“索引名”参数用来指定所创建索引的名称;
c.“asc”参数用来指定为升序;
d.“desc”参数用来指定为降序排序;
e.mysql所支持的存储引擎对每个表至少支持16个索引,单列索引长度最大为255;
f.索引名、asc|desc是可选项。

例子:执行sql语句index ,选择数据库company,创建表t_dept时,在字段deptno上创建索引,具体的sql如下:
create table t_dept
(deptno int,
dname varchar(20),
loc varchar(40),
index index_deptno(deptno asc));
其中,index index_deptno (deptno)是对该表中的deptno字段创建了普通索引。

(2)使用create在已经存在的表上创建普通索引,语法格式如下:
create index索引名 on 表名(字段名 [asc│desc]);
例子:执行sql语句index ,在数据库company中,在表t_dept的deptno字段上创建索引,sql语句如下:
create index index_deptno1 on t_dept (deptno);

(3)使用alter table在已经存在的表上创建普通索引,其语法格式如下:
alter table 表名 add index│key [索引名](字段名[asc│desc]);
例子:执行sql语句alter table,在表t_dept中创建关联字段deptno的普通索引对象index_deptno,具体语句如下:
alter table t_dept add index index_deptno2 (deptno desc);

(4)创建完成之后,可用语句查看所创建的索引:
show index from 表名 \g
例子:查看表t_dept中的索引;
show index from t_dept \g

3、创建唯一索引
所谓唯一索引,就是在创建索引时,限制索引的值必须是惟一的。通过该类型的索引可以更快速地查询某条记录,唯一索引的字段值允许空值。
(1)创建表时创建唯一索引,其语法格式如下:
create table 表名 (
字段名 数据类型,
字段名 数据类型,
…,
字段名 数据类型,
unique index│key [索引名] (字段名 [asc│desc])
);
unique index或unique key表示创建的唯一索引,或者在字段名 数据类型后加unique。
例子:在数据库company中,在表t_dept1的字段上创建唯一索引,具体sql语句如下:
create database company;
use company;
create table t_dept1
(
deptno int ,
dname varchar(20),
loc varchar(40),
unique index index_deptno (deptno )
);

(2)在已经存在的表上使用create创建唯一索引,语法格式如下:
create unique index 索引名 on 表名(字段名[asc│desc]);
例子:在数据库company中,在表t_dept1的deptno字段上创建唯一索引:
create unique index index_deptno1 on t_dept1 (deptno asc);

(3)通过sql语句alter table创建唯一索引,其语法格式如下:
alter table 表名add unique index│key [索引名](字段名[asc│desc]);
例子:在表t_dept1中创建关联字段deptno的唯一索引对象index_deptno,具体语句如下:
alter table t_dept1 add unique index index_deptno2 (deptno desc);

(4)创建完成之后,可用语句查看所创建的索引:
show index from 表名 \g
例子:查看表t_dept1中的索引;
show index from t_dept1 \g

4、创建主键索引
主键索引的创建和修改、删除,直接参考上一次课程中的约束中主键约束,主键的索引均是在创建主键、添加主键时,自动创建的索引。
对于大多数数据库引擎,创建主键会同时创建聚集索引,同时作为主键索引。
而创建一个唯一约束列,则会自动为该列创建唯一索引,该索引同时为非聚集索引。
5、创建和查看多列索引
所谓多列索引,是指在创建索引时,所关联的字段不是一个字段,而是多个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联的第一个字段,多列索引才会被使用。
(1)创建表时创建多列索引,语法格式如下:
create table 表名 (
字段名 数据类型,
字段名 数据类型,
…,
字段名 数据类型,
index│key [索引名] (字段名1 [asc│desc],
…,
字段名n [asc│desc])
);
例子:选择数据库company,创建表t_dept2时,在字段dname和loc上创建多列索引,具体的sql如下:
use company;
create table t_dept2
( deptno int,
dname varchar(20),
loc varchar(40),
index index_dname_loc (dname,loc)
);
其中,index index_dname_loc (dname,loc) 是对该表中的dname和loc字段上创建了多列索引。

(2)在已经存在的表上使用create创建多列索引,语法格式如下:
create index 索引名 on 表名(字段名1 [asc│desc],
…,字段名n [nasc│desc]);
例子:执行sql语句index ,在数据库company中,在表t_dept2的dname和loc字段上创建多列索引对象index_dname_loc,sql语句如下:
create index index_dname_loc1 on t_dept2(dname,loc);

(3)通过alter table创建多列索引,其语法格式如下:
alter table 表名
add index│key [索引名](字段名1 [asc│desc],
…,字段名n [asc│desc]);
例子:在表t_dept中创建关联字段dname和loc的多列索引对象index_dname_loc,具体语句如下:
alter table t_dept2 add index index_dname_loc2 (dname,loc);
(4)创建完成之后,可用语句查看所创建的索引:
show index from 表名 \g
例子:查看表t_dept2中的索引;
show index from t_dept2 \g

6、创建和查看全文索引
所谓全文索引主要是关联在数据类型为char、varchar、和text的字段上,以便能够更加快速地查询数据量较大的字符串类型的字段。目前只有存储引擎为MyISAM的数据表上才能创建全文索引。
(1)创建表时创建全文索引,其语法格式如下:
create table 表名 (
字段名 数据类型,
字段名 数据类型,

字段名 数据类型,
fulltext index│key [索引名] (字段名 [ASC│DESC])
);
例子:在数据库company中,在表t_dept3的字段loc上创建全文索引;
use company;
create table t_dept3
(
deptno int,
dname varchar(20),
loc varchar(40),
fulltext index index_loc (loc)
) ENGINE=MyISAM;
(2)通过create在已经存在的表上创建全文索引,语法格式如下:
create fulltext index 索引名 on 表名(字段名 [ASC│DESC]);
例子:在数据库company中,在表t_dept3的loc字段上创建全文索引;
create fulltext index index_loc1 on t_dept3 (loc);

(3)通过alter table在已经存在的表上创建全文索引,其语法格式如下:
alter table 表名 add fulltext index│key [索引名](字段名 [ASC│DESC]);
例子:在表t_dept3中创建关联字段loc的全文索引对象index_loc2;
alter table t_dept3 add fulltext index index_loc2 (loc);
(4)创建完成之后,可用语句查看所创建的索引:
show index from 表名 \g
例子:查看表t_dept3中的索引;
show index from t_dept3 \g

7、删除索引
删除索引的语法格式如下:
drop index 索引名 on 表名;
或者
alter table 表名 drop index 索引名;
可以直接通过drop 关键字删除,或者通过alter table语句使用drop 关键字删除索引
例子:删除表t_dept2中的索引index_dname_loc;
drop index index_dname_loc on t_dept2;
或者
alter table t_dept2 drop index ndex_dname_loc;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡陌熙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值