mysql(创建/查看/修改删除)索引(含实战练习)

本文深入探讨MySQL中的索引概念,包括索引的创建、查看、修改与删除等操作。涵盖了索引的分类、使用原则及注意事项,通过实例演示了如何在不同场景下应用索引以提升数据库性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博文源于mysql基础,主要针对索引进行学习与练习。包含索引的创建、查看、修改与删除。

为什么要使用索引

索引是Mysql中一种十分重要的数据对象。常用于实现数据的快速检索。

索引的分类

索引根据物理和逻辑进行分类。根据物理分类:

  • B-树索引:可以进行全键值、键值范围和键值前缀查询
  • 哈希索引:哈希索引最大的特点是访问速度快。但是不能使用哈希索引进行排序

根据逻辑分为:

  • 普通索引是最基本的索引类型,通常使用的关键字是INDEX和KEY
  • 唯一性索引是不允许索引具有相同索引值的索引。创建唯一性索引的目的往往不是为了提高访问速度,而是为了避免数据出现重复。
  • 空间索引主要用于地理空间数据类型GEOMETRY
  • 全文索引只能在varchar和text类型的列上创建

索引的使用原则和注意事项

索引缺点
  • 创建和维护索引要耗费时间
  • 索引需要动态维护
  • 对于那些只有很少数据值的列不应该创建索引,不能明显加快速度。
索引使用场景
  • 经常需要搜索的列上建立索引
  • 在作为主键的列上创建索引
  • 在经常使用表连接的列上创建索引
  • 在经常使用where子句的列上创建索引
  • 在经常需要排序的列上创建索引

都可以加快搜索速度。

创建索引

基本语法

使用CREATE INDEX语句

这条语句可以在一个已有的表上创建索引

CREATE <索引名> ON <表名> (<列名> [<长度>] [ASC | DESC])
使用CREATE TABLE语句

索引可以在创建表的同时创建.

  • 如果创建新表的同时创建表的主键,需要这样做:
CONSTRAINT PRIMARY KEY [索引类型] (<列名>,...)
  • 如果创建新表的同时创建表的索引,需要这样做:
KEY | INDEX [<索引名>] [<索引类型>] (<列名>,...)
  • 如果创建新表的同时创建表的唯一性索引,需要这样做:
UNIQUE [INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,...)
  • 如果创建新表的同时创建表的外键性索引,需要这样做:
FOREIGN KEY <索引名> <列名>
使用ALTER TABLE语句

这个可以在修改表的同时,添加索引

  • 修改表的同时为该表添加索引,可以这样做
ADD INDEX [<索引名>] [<索引类型>] [<列名>,...]
  • 修改表的同时为该表添加主键索引
ADD PRIMARY KEY [<索引类型>]<列名>,...
  • 修改表的同时为该表添加唯一性索引
ADD UNIQUE [INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,...)
  • 修改表的同时为表添加外键索引
ADD FOREIGN KEY [<索引名>] (<列名>,...)

创建一般索引

例子:创建一个表tb_stu_info,在该表的height字段创建一般索引
 create table tb_stu_info(id int not null,name char(45) default null,
 dept_id int default null,age int default null,height int default null,index(height));

在这里插入图片描述

创建唯一索引

例子:创建一个表tb_stu_info2,在该表的id字段上使用unique关键字创建唯一索引
 create table tb_stu_info2(id int not null,name char(45) default null,
 dept_id int default null,age int default null,
 height int default null,unique index(height));

在这里插入图片描述

查看索引

SHOW INDEX FROM <表名> [ FROM <数据库名>]
例子:使用SHOW INDEX语句查看表tb_stu_info2的索引信息
 show index from tb_stu_info2\G;

在这里插入图片描述

修改和删除索引

修改索引可以通过删除索引原索引,再根据需要创建一个同名的索引,从而实现修改索引的操作。

基本语法

使用DROP INDEX语句
DROP INDEX <索引名> ON <表名>
使用ALTER TABLE语句

根据ALTER TABLE语句的语法可知,该语句也可以用于删除索引。具体使用方法是将ALTER TABLE语句的语法中部分指定为以下子句的某一项

  • DROP PRIMARY KEY:表示删除的主键。一个表中只有一个主键,主键也是一个索引
  • DROP INDEX index_name:表示删除名称为index_name的索引
  • DROP FOREIGN KEY fk_symbol:表示删除外键

删除索引

例子:使用drop index删除表tb_stu_info中的索引
 drop index height on tb_stu_info;

在这里插入图片描述

例子:使用alter table删除表tb_stu_info2中的索引
alter table tb_stu_info2 drop index height;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值