本节介绍索引方式中的单列索引。具体又分为普通索引、唯一索引、主键索引。

概念

单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引;

普通索引

普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

创建普通索引

语法:

index 索引的名字(列的名字)

示例:

方式1-创建表的时候直接指定

create database mydb5;
use mydb5;

-- 方式1-创建表的时候直接指定
create  table student(
    sid int primary key,
    card_id varchar(20),
    name varchar(20),
    gender varchar(20),
    age int,
    birth date, 
    phone_num varchar(20),
    score double,
    index index_name(name) -- 给name列创建索引
);

<div>
<ins class="adsbygoogle"
     style="display:inline-block;width:100%;height:250px"
     data-ad-client="ca-pub-6605580376880594"
     data-full-width-responsive="true"
     data-ad-slot="4151821202"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>

## 建立了索引之后这么使用呢?

就上面的例子:
-- 倘若使用语句 select * from student where age>20;
   -- 这样的句子和索引没有什么关系,也就看不出什么效果

-- 若使用 select * from student where name='张三';
   -- 这样的句子索引就起作用了,主要体现在快
   -- 注意,当数据量一定大的时候,才能体现出来

查看建立的索引(右击表格,选择“设计表”)

方式2-直接创建

-- create index indexname on tablename(columnname); 
create index index_gender on student(gender); 

方式3-修改表结构(添加索引)

-- 方式3-修改表结构(添加索引)
-- alter table tablename add index indexname(columnname)
alter table student add index index_age(age);

查看索引

1、查看数据库所有索引

-- select * from mysql.`innodb_index_stats` a where a.`database_name` = '数据库名’; 
select * from mysql.`innodb_index_stats` a where a.`database_name` = 'mydb5';

(会输出主键索引,主键索引主要创建了主键,就会自动设有主键索引)

2、查看表中所有索引

-- select * from mysql.`innodb_index_stats` a where a.`database_name` = '数据库名' and a.table_name like '%表名%’; 
select * from mysql.`innodb_index_stats` a where a.`database_name` = 'mydb5' and a.table_name like '%student%';

3、查看表中所有索引

-- show index from table_name; 
show index from student;

删除索引

语法:

drop index 索引名 on 表名 
-- 或 
alter table 表名 drop index 索引名 

示例:

drop index index_gender on student 
-- 或 
alter table student drop index index_name

唯一索引

唯一索引与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

创建方式

例如,从合理性角度考虑,身份证号、手机号等可以添加唯一索引,性别、姓名、年龄等不能添加唯一索引。

-- 方式1-创建表的时候直接指定
create  table student2(
    sid int primary key,
    card_id varchar(20),
    name varchar(20),
    gender varchar(20),
    age int,
    birth date, 
    phone_num varchar(20),
    score double,
    unique index_card_id(card_id) -- 给card_id列创建索引
);

-- 方式2-直接创建
-- create unique index 索引名 on 表名(列名) 
create unique index index_card_id on student2(card_id);

-- 方式3-修改表结构(添加索引)
-- alter table 表名 add unique [索引名] (列名)
alter table student2 add unique index_phone_num(phone_num)

删除索引

和前面的普通索引一样。

drop index index_card_id on student2 
-- 或 
alter table student2 drop index index_phone_num

主键索引

每张表一般都会有自己的主键,当我们在创建表时,MySQL会自动在主键列上建立一个索引,这就是主键索引。主键是具有唯一性并且不允许为NULL,所以他是一种特殊的唯一索引。


声明:内容来源于B站视频《2022黑马程序员最新MySQL知识精讲+mysql实战案例_零基础mysql数据库入门到高级全套教程》,博客内容仅作学习参考使用。



博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/mysql26.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 06 月 12 日
如果觉得我的文章对你有用,请随意赞赏