news 2026/7/24 17:00:33

MYSQL 创建索引

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MYSQL 创建索引

目录

自动索引

手动创建

主键索引

唯一索引

普通索引

创建复合索引

查看索引

删除主键


自动索引

如果我们为一张表添加主键约束、外键约束、唯一约束时,MYSQL会为对应的列自动创建一个索引。如果不指定任何约束时,MYSQL会自动为每一列生成一个索引并用ROW_ID进行标识。

手动创建

主键索引

主键索引有三种创建方式,分别是:

1.创建表时创建主键

-- 创建表的时候指定主键 create table t_pk1( id bigint PRIMARY KEY auto_increment, name varchar(20) ); desc t_pk1;

desc t_pk1 是查看 t_pk1表的索引信息

2.创建表时单独指定主键列

create table t_pk( id bigint auto_increment, name varchar(20), PRIMARY KEY(id) ); desc t_pk;

3.修改表中的列为主键索引

create table t_pk2( id bigint, name varchar(20) ); alter table t_pk2 add primary key (id); alter table t_pk2 modify id bigint auto_increment; desc t_pk2;

这是未添加之前的,每一列的信息

这是添加之后的,

唯一索引

创建唯一索引的方式有三种,和上面添加主键索引大致上是相同的,故只给出对应的代码部分。

1.创建表时创建唯一键

create table t_uk( id bigint primary key auto_increment, name varchar(20) unique ); desc t_uk;

2.创建表时单独指定唯一列

create table t_uk1( id bigint primary key auto_increment, name varchar(20), unique (name) ); desc t_uk1;

3.修改表中的列为唯一索引

create table t_uk2( id bigint primary key auto_increment, name varchar(20) ); alter table t_uk2 add unique (name); desc t_uk2;
普通索引

创建时机有:

  1. 创建表时,明确知道某些列频繁查询
  2. 随着业务不断发展,在版本迭代过程中添加索引

我们也可在MYSQL中查看索引信息

show index from t_pk1;

普通索引的三种创建方式和上面两种差不多,不过还是有一些不同的。

1.创建表的时候创建普通索引

create table t_index1( id bigint primary key auto_increment, name varchar(20) unique, sno varchar(20), index (sno) );

index 是创建索引的关键字,括号里是索引列

其中:主键索引用PRI表示,唯一索引用UMI表示,普通索引用MUL表示。

2.修改表中的列为普通索引

create table t_index2( id bigint primary key auto_increment, name varchar(20) unique, sno varchar(20) ); alter table t_index2 add index (sno);

3.单独创建索引并指定索引名

create table t_index3( id bigint primary key auto_increment, name varchar(20) unique, sno varchar(20) ); create index index_name on t_index3(sno);

创建复合索引

创建符合索引与创建普通索引语法相同,只不过是指定多个列,列与列之间用逗号隔开。

1.创建表时指定索引列

create table t_index4( id bigint primary key auto_increment, name varchar(20) unique, sno varchar(20), class_id bigint, index(sno, class_id) );

2.修改表中的列为复合索引

create table t_index5( id bigint primary key auto_increment, name varchar(20) unique, sno varchar(20), class_id bigint ); alter table t_index5 add index(sno, class_id);

3.单独创建索引并指定索引名

create table t_index6( id bigint primary key auto_increment, name varchar(20) unique, sno varchar(20), class_id bigint ); create index t_index5_sno_class_id on t_index5 (sno, class_id);
查看索引

查看索引的三种方式,在上面都有提到,现在可以进行一下总结

  1. show keys from 表名
  2. show index from表名
  3. desc表名
删除主键

主键索引

alter table表名 drop PRIMARY KEY;

第一次使用删除语句报错的原因是:由于自增列的错误,所以下面是先删除了自增属性,然后重新删除主键。

其他索引

alter table表名 drop index 索引名

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 5:31:48

查询指定任务的办理时间轴

一、接口核心需求分析 你提供的这段代码是Activiti工作流中查询指定任务的办理时间轴接口,核心业务需求如下: 关联查询:根据传入的任务ID(taskId),先获取对应的流程实例ID(processInstanceId&am…

作者头像 李华
网站建设 2026/7/17 9:03:24

ubuntu系统_每天定时23:00 定时关机_怎么实现

在Ubuntu系统中设置每天23:00定时关机,最可靠的方法是使用系统内置的 cron 服务。下面的表格汇总了实现步骤和关键要点,你可以快速了解整个过程。步骤核心操作说明/命令示例1. 编辑计划任务终端中输入 sudo crontab -e使用 sudo 获取root权限&#xff0c…

作者头像 李华
网站建设 2026/7/20 21:17:32

mysql一条sql语句是如何运行的

MySQL SQL 语句执行流程MySQL 执行一条 SQL 语句的过程可以分为多个阶段,包括连接管理、解析与优化、执行引擎处理以及结果返回。以下是详细流程:连接管理客户端通过 TCP/IP 或 Unix Socket 连接到 MySQL 服务器。连接建立后,服务器进行身份验…

作者头像 李华
网站建设 2026/7/17 17:00:16

基于深度学习的空气质量预测研究(源码+万字报告+讲解)(支持资料、图片参考_相关定制)

摘要 由于环境恶化对人类健康、经济和日常生活的不利影响,空气质量问题逐渐引起了全世界的关注。大量研究表明,空气污染会对人类健康造成巨大危害,因此应采取措施预防和控制空气污染现象,减少空气污染对人类和地球造成的损害。随着…

作者头像 李华
网站建设 2026/7/21 23:25:20

Thinkphp和Laravel框架的海关出入口货物报关统筹管理系统_szdhjj06

目录摘要概述技术架构对比核心功能模块性能与安全优化实施效果与扩展性项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要概述 ThinkPHP和Laravel框架在海关出入口货物报关统筹管理系统中的应用,展现了现代PHP框架在复杂业务场景下的…

作者头像 李华
网站建设 2026/7/21 8:30:29

【接口测试】1_Dubbo接口 _xx健康项目

文章目录 一、xx健康项目介绍1.1 项目描述1.2 目标用户群体1.3 项目模块1.4 系统框架 二、接口测试范围 一、xx健康项目介绍 1.1 项目描述 xx健康管理系统,是一款应用于健康管理机构的业务系统。采用可视化界面管理,提高健康管理师工作效率&#xff0c…

作者头像 李华