当前位置: 首页 > news >正文

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 索引名

http://www.jsqmd.com/news/212199/

相关文章:

  • MySql 8.0安装教程(windows系统),全网最详细的教程
  • Tailwind CSS:告别传统CSS,拥抱原子化开发新时代
  • RK3576基于UVC协议USB摄像头配置指南,手把手教你搞定
  • 性能指标笔记
  • Thinkphp和Laravel框架的海关出入口货物报关统筹管理系统_szdhjj06
  • ubuntu系统_每天定时23:00 定时关机_怎么实现
  • HTML 表单元素与 React 中的其他 DOM 元素有所不同
  • 2026年最好用的六大代理IP服务商推荐:IPIDEA、Decodo、Smartproxy、IPRoyal、SOAX、Oxylabs
  • indirectly_readable和indirectly_writable这两个核心概念的具体定义和使用场景是什么?
  • 数据库分片和分区
  • 超绝好用清理软件工具,(附下载方式)超多好用功能
  • 何为Transformer 架构?
  • HiBit Uninstaller全攻略:轻量无广,彻底告别软件残留(附下载方式)
  • 电阻的基础知识
  • jvm性能调优
  • 【光子AI】FastAPI 极简权威指南 (The Ultimate Minimalist Guide)
  • 【光子AI】FastAPI 极简教程(从 0 到 生产级)
  • mysql一条sql语句是如何运行的
  • 什么是勒索软件即服务(RaaS)
  • MySQL 8.0在windows环境安装及配置
  • MySQL 导出数据
  • 【计算机毕业设计案例】基于深度学习CNN的水果识别
  • 什么是立体射频调优
  • 什么是零漫游分布式AP
  • Thinkphp和Laravel框架的西安工商学院学生请假管理系统_s4hrg6g5
  • 什么是零日攻击
  • MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置
  • 全网最全9个AI论文平台,专科生毕业论文写作必备!
  • Vue 3 中,unmounted 生命周期钩子会在组件实例被销毁并从 DOM 中移除后调用
  • MacOs安装Redis并设置为开机、后台启动