MySQL之创建索引

article/2025/11/9 0:47:23

文章目录

  • MySQL之创建索引
    • 1.五种索引分类
    • 2.创建表后创建索引命令(create)
    • 3.创建表后创建索引命令(alter)
      • 3.1单列主键索引
      • 3.2单列唯一索引
      • 3.3组合唯一索引
      • 3.4单列普通索引
      • 3.5组合普通索引
      • 3.6单列全文索引
    • 4.创建表时创建索引命令(create)
      • 4.1单列主键索引(不起名)
      • 4.2组合普通索引(起名字)
      • 4.3单列全文索引(不起名)
      • 4.4单列唯一索引(不起名)
    • 5.删除索引命令
    • 6.演示(create)
      • 6.1创建表时建单列主键索引
      • 6.2创建表后建单列普通索引
      • 6.3创建表后建单列唯一索引
      • 6.4创建表后建组合普通索引
      • 6.5创建表后建单列普通索引
      • 6.6删除组合索引
    • 7.演示(alter创建主键索引)
      • 7.1创建表后建索引
      • 7.2创建表后建索引(起名字)
    • 8.演示(alter创建唯一索引)
      • 8.1创建表后建索引
      • 8.2创建表后建索引(起名字)
      • 8.3创建表后建组合索引(起名字)
    • 9.演示(alter创建普通索引)
      • 9.1创建表后建索引
      • 9.2创建表后建索引(起名字)
      • 9.3创建表后建组合索引
      • 9.4创建表后建组合索引(起名字)

MySQL之创建索引

1.五种索引分类

*主键索引:
关键字:PRIMARY
针对于表中主键创建的索引
名为primary的唯一非空索引,不允许有空值。数据允许重复,不允许为 NULL,一个表只能有一个主键

*唯一索引:
关键字:UNIQUR
避免同一个表中某数据列中的值重复;

索引列中的值必须是唯一的,允许为 NULL 值,一个表允许多个列创建唯一索引;
唯一索引和主键索引的区别是:唯一约束的列可以为null且可以存在多个null值。
唯一索引的用途:唯一标识数据库表中的每条记录,主要是用来防止数据重复插入。

*普通索引:
无关键字
快速定位特定数据
基本的索引类型,没有唯一性的限制,允许为 NULL 值;

*全文索引:
关键字:FULLTEXT
全文索引查找的是文本中的关键词,而不是比
较索引中的值
只有在MyISAM引擎上才能使用,只能在CHAR、VARCHAR和TEXT类型字段上使用全文索引。

*组合索引:
在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时需遵循最左前缀原则。

2.创建表后创建索引命令(create)

index_name是索引名; index_col_name是表中字段名;
后面有三个点“…”代表一个索引是可以关联多个字段的,如果一个索引只关联一个字段,这种索引称之为单列索引;如果一个索引关联了多个字段,这种索引称之为联合索引(也叫组合索引)
注:-索引名字一般以"idx_表明_字段名"这样的规范来写,比如idx_user_name
如果 UNIQUE 与FULLTEXT都没写的话,代表创建的是普通索引

CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name ( index_col_name,... ) ;

3.创建表后创建索引命令(alter)

3.1单列主键索引

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ); --注:索引名字是PRIMARY
ALTER TABLE student ADD PRIMARY KEY indexname( name ) ;--注:索引名字仍然是PRIMARY

3.2单列唯一索引

ALTER TABLE `table_name` ADD UNIQUE ( `column` ) ;-- 注:默认索引名字与列名一样
ALTER TABLE `table_name` ADD UNIQUE indexname ( `column` ) ;-- 索引名字是indexname

3.3组合唯一索引

ALTER TABLE student ADD UNIQUE ttt ( id,name,age ) ;--注:三个索引名字都是ttt

3.4单列普通索引

ALTER TABLE `table_name` ADD INDEX  ( `column` ) --注:这是创建普通索引,默认名字与列名一样
ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) ----注:这是创建普通索引,名字是index_name

3.5组合普通索引

ALTER TABLE table_name ADD INDEX (column1, column2, column3)--注:三个索引的名字都默认索引名字是column1
ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3)--注:三个索引的名字都是index_name

3.6单列全文索引

mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 

4.创建表时创建索引命令(create)

4.1单列主键索引(不起名)

注意:以上这种方式默认索引名字是PRIMARY

create table tb_user(
id int primary key auto_increment comment '主键'
);

4.2组合普通索引(起名字)

组合索引的名字是name

CREATE TABLE user_index2 (id INT auto_increment PRIMARY KEY,first_name VARCHAR (16),last_name VARCHAR (16),id_card VARCHAR (18),KEY name (first_name, last_name)
);

在这里插入图片描述

4.3单列全文索引(不起名)

索引的名字是information

CREATE TABLE user_index2 (id INT auto_increment PRIMARY KEY,first_name VARCHAR (16),last_name VARCHAR (16),id_card VARCHAR (18),information text,FULLTEXT KEY (information)
);

在这里插入图片描述

4.4单列唯一索引(不起名)

索引名字是id_card

CREATE TABLE user_index2 (id INT auto_increment PRIMARY KEY,first_name VARCHAR (16),last_name VARCHAR (16),id_card VARCHAR (18),information text,UNIQUE KEY (id_card)
);

在这里插入图片描述

5.删除索引命令

DROP INDEX index_name ON table_name ;

6.演示(create)

6.1创建表时建单列主键索引

创建如下表

create table tb_user(
id int primary key auto_increment comment '主键',
name varchar(50) not null comment '用户名',
phone varchar(11) not null comment '手机号',
email varchar(100) comment '邮箱',
profession varchar(11) comment '专业',
age tinyint unsigned comment '年龄',
gender char(1) comment '性别 , 1: 男, 2: 女',
status char(1) comment '状态',
createtime datetime comment '创建时间'
) comment '系统用户表';
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('吕布', '17799990000', 'lvbu666@163.com', '软件工程', 23, '1',
'6', '2001-02-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('曹操', '17799990001', 'caocao666@qq.com', '通讯工程', 33,
'1', '0', '2001-03-05 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('赵云', '17799990002', '17799990@139.com', '英语', 34, '1',
'2', '2002-03-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('孙悟空', '17799990003', '17799990@sina.com', '工程造价', 54,
'1', '0', '2001-07-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('花木兰', '17799990004', '19980729@sina.com', '软件工程', 23,
'2', '1', '2001-04-22 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('大乔', '17799990005', 'daqiao666@sina.com', '舞蹈', 22, '2',
'0', '2001-02-07 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('露娜', '17799990006', 'luna_love@sina.com', '应用数学', 24,
'2', '0', '2001-02-08 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('程咬金', '17799990007', 'chengyaojin@163.com', '化工', 38,
'1', '5', '2001-05-23 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('项羽', '17799990008', 'xiaoyu666@qq.com', '金属材料', 43,
'1', '0', '2001-09-18 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('白起', '17799990009', 'baiqi666@sina.com', '机械工程及其自动
化', 27, '1', '2', '2001-08-16 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('韩信', '17799990010', 'hanxin520@163.com', '无机非金属材料工
程', 27, '1', '0', '2001-06-12 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('荆轲', '17799990011', 'jingke123@163.com', '会计', 29, '1',
'0', '2001-05-11 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('兰陵王', '17799990012', 'lanlinwang666@126.com', '工程造价',
44, '1', '1', '2001-04-09 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('狂铁', '17799990013', 'kuangtie@sina.com', '应用数学', 43,
'1', '2', '2001-04-10 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('貂蝉', '17799990014', '84958948374@qq.com', '软件工程', 40,
'2', '3', '2001-02-12 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('妲己', '17799990015', '2783238293@qq.com', '软件工程', 31,
'2', '0', '2001-01-30 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('芈月', '17799990016', 'xiaomin2001@sina.com', '工业经济', 35,
'2', '0', '2000-05-03 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('嬴政', '17799990017', '8839434342@qq.com', '化工', 38, '1',
'1', '2001-08-08 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('狄仁杰', '17799990018', 'jujiamlm8166@163.com', '国际贸易',
30, '1', '0', '2007-03-12 00:00:00');

在这里插入图片描述
在这里插入图片描述

6.2创建表后建单列普通索引

1.name字段为姓名字段,该字段的值可能会重复,为该字段创建索引

CREATE INDEX idx_user_name ON tb_user(name); --创建的是一般索引

在这里插入图片描述

6.3创建表后建单列唯一索引

2.phone手机号字段的值,是非空,且唯一的,为该字段创建唯一索引。

CREATE UNIQUE INDEX idx_user_phone ON tb_user(phone);

在这里插入图片描述

6.4创建表后建组合普通索引

3.为profession、age、status创建联合索引。
联合索引里这三个字段profession,age,status是有讲究的

CREATE INDEX idx_user_pro_age_sta ON tb_user(profession,age,status);

在这里插入图片描述

6.5创建表后建单列普通索引

4.为email建立合适的索引来提升查询效率

CREATE INDEX idx_email ON tb_user(email);

在这里插入图片描述

6.6删除组合索引

在这里插入图片描述

7.演示(alter创建主键索引)

7.1创建表后建索引

ALTER TABLE table_name ADD PRIMARY KEY ( column)

image-20220228131536552

image-20220228131549147

7.2创建表后建索引(起名字)

ALTER TABLE student ADD PRIMARY KEY indexname( name )

image-20220228131953722

8.演示(alter创建唯一索引)

与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值;
一个表的主键只能有一个,而唯一索引可以建多个;

8.1创建表后建索引

ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 

image-20220228132216978

image-20220228132238867

8.2创建表后建索引(起名字)

ALTER TABLE `table_name` ADD UNIQUE indexname ( `column` ) 

image-20220228132412000

8.3创建表后建组合索引(起名字)

ALTER TABLE student ADD UNIQUE ttt ( id,name,age ) ;

image-20220228140811906

image-20220228140835108

image-20220228140851653

image-20220228140915109

9.演示(alter创建普通索引)

这是最基本的索引,它没有任何限制

9.1创建表后建索引

ALTER TABLE `table_name` ADD INDEX  ( `column` ) 

image-20220228133209261

image-20220228133219567

9.2创建表后建索引(起名字)

ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 

image-20220228112542093

image-20220228112604227

image-20220228112639391

image-20220228112654157

9.3创建表后建组合索引

组合索引又叫联合索引
当创建(col1,col2,col3)联合索引时,相当于创建了(col)单列索引,(clo1,clo2)联合索引以及(col1,col2,col3)联合索引想要索引生效,只能使用col1和col1,col2和col1,col2,col3三种组合;当然,col1,col3组合也可以,但实际上只用到了col1的索引,col3并没有用到

ALTER TABLE table_name ADD INDEX (column1, column2, column3)

image-20220228135231690

image-20220228135247085

9.4创建表后建组合索引(起名字)

image-20220228135942940

image-20220228140005768

image-20220228140021420


http://chatgpt.dhexx.cn/article/OlZ6fEg5.shtml

相关文章

MySQL几种创建索引的方式

一、创建表时创建索引 key 索引名 (column); 二、表创建好后创建索引 1、通过Alter创建索引 ①PRIMARY KEY(主键索引) mysql > ALTER TABLE table_name ADD PRIMARY KEY ( column ) ②UNIQUE(唯…

Mysql 创建索引

数据库建立索引常用的规则如下: 1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的…

mysql 创建索引的三种方式

1、使用CREATE INDEX创建,语法如下: CREATE INDEX indexName ON tableName (columnName(length)); 2、使用ALTER语句创建,语法如下: ALTER TABLE tableName ADD INDEX indexName(columnName); ALTER语句创建索引,下面提…

前端的rem的用法

1.概念 首先来说说rem的概念&#xff0c;rem就是根元素的字体大小单位。 2.简单讲讲rem的概念 <html><head><meta charset"utf-8"><style type"text/css">html {font-size: 30px;}.div1 {font-size: 1rem;}.div2{font-size: 30…

前端预览pdf文件流

场景是前端需要实现预览各种文件的功能&#xff0c;又要保证安全&#xff0c;所以采用了文件后端转换成pdf文件流前端预览的方式进行预览&#xff0c;经过一段时间查找帖子&#xff0c;记录一下遇到最大的坑 网上帖子很多&#xff0c;试了之后一直没有实现&#xff0c;究其根源…

前端实现文件下载的方法

前端实现文件下载 前端下载一般分为两种情况&#xff0c;一种是后端直接给一个文件地址&#xff0c;通过浏览器打开就可以下载&#xff0c;另外一种则需要发送请求&#xff0c;后端返回二进制流数据&#xff0c;前端解析流数据&#xff0c;生成URL&#xff0c;实现下载。 一、…

前端项目部署到服务器

1.准备工具 服务器&#xff1a;阿里云 腾讯云 华为云都可以 我这里使用的是阿里云ECS共享型(推荐) xshell&#xff1a;用于远程连接服务器&#xff0c;修改配置文件 xftp&#xff1a;用于连接远程服务器&#xff0c;将本地资源上传到远程服务器 2.服务器设置 1.第一次需重…

微服务前端部署

四.config机器前端部署 1.在config机器上安装jdk1.8,mysql,redis,nacos,nginx安装流程我就不一一解释了,大家可自行百度,后面我会贴上必要的配置信息 2.修改前端的vue.config.js的配置 配置修改:前端ui文件中的index.js文件、vue.config.js文件 如下图: 3.修改后在前端…

前端cookie详解

cookie在前端还是比较总重要的&#xff0c;接下来将总结一下cookie知识点。 将从以下方面去聊一聊cookie。 1、什么样的数据适合放到cookie中。 2、cookie是如何设置的。 3、cookie如何进行携带传送给服务器的。 4、cookie如何实现删除的。1、什么样的数据适合存放在cookie中?…

必背前端八股文

前端八股文 看到一篇特别好的前端八股文&#xff0c;强力推荐 &#x1f525; 连八股文都不懂还指望在前端混下去么 - 掘金 (juejin.cn)https://juejin.cn/post/7016593221815910408

纯前端导出表格

前端 excel 表格导出 我们习惯了后端去处理表格&#xff0c;直接接口返回 &#xff0c;那前端如何轻松的导出表格呢&#xff1f; 文章目录 前端 excel 表格导出Ⅰ. 通过 js-xlsx ⭐⭐⭐⭐⭐安装① vue2 中使用② vue3 中使用③ react 中使用 Ⅲ. 通过 vue-json-excel ⭐⭐安装…

jquery form表单序列化注意事项

我们先来讲讲表单中 中readonly和disabled的区别: readonly只对input和textarea有效, 但是disabled对于所以的表单元素都是有效的&#xff0c;包括radio&#xff0c;checkbox等 如果表单中使用的disabled那么用户是不能选择的&#xff0c;也就是说这个文本框是无法获取到焦点…

jQuery实现表单序列化反序列化

js序列化反序列化参考&#xff1a; https://blog.csdn.net/zqtsx/article/details/17299087 涉及知识点&#xff1a;序列化&#xff1a;var serializeJson JSON.stringify($("#fiveLevelIndexForm").serializeArray());反序列化&#xff1a; var json $.parseJSO…

JQuery表单序列化

方式一&#xff1a;serialize() <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></sc…

自动阅读脚本源码

如题,提供源码也可以提供技术支持 以下是界面截图和部分脚本源码 使用按键精灵手机版开发的,目前支持十多个主流平台 以下是少量源码截图 有疑问可以加V:848312526

自动阅读,这些坑你都知道吗?

我应该选择一个怎样的脚本&#xff1f; 现在市面上什么样的脚本都有&#xff0c;有免费的&#xff0c;有10块钱的&#xff0c;什么脚本都有。如果你只是想玩玩而已&#xff0c;那你大可随意选择。如果你想要长期稳定的使用&#xff0c;那你就要把眼睛睁大&#xff01;&#xf…

自动阅读专业版第六次更新

源代码下载地址&#xff1a;https://pan.baidu.com/s/1WvhpA-9fhSJOqdVUX6E7jw 提取码&#xff1a;w301 原贴&#xff1a;https://blog.csdn.net/zy0412326/article/details/106297472 第一次更新贴&#xff1a;https://blog.csdn.net/zy0412326/article/details/106421444 …

autojs自动阅读脚本源代码免费分享

autojs上一篇文章讲过了&#xff0c;这篇来实践一下。 一、工具下载安装 手机端&#xff1a;auto.js&#xff08;百度即可&#xff09; PC端&#xff1a; VS Code JDK SDK Tools&#xff08;定位工具: Uiautomatorviewer&#xff09; 注&#xff1a; VS Code 用于代…

Adobe Acrobat Pro DC 2022:专业高效的PDF阅读和编辑利器!

Adobe Acrobat Pro DC 2022是一款功能强大的PDF阅读和编辑软件&#xff0c;是Adobe公司的旗舰产品之一&#xff0c;广泛应用于商业、教育、行政和政府等领域。该软件具有众多高级功能&#xff0c;能够满足各种高级用户的需求。 首先&#xff0c;Adobe Acrobat Pro DC 2022能够快…

畅想阅读自动翻页

畅想阅读自动翻页JavaScript实现 打开相应的阅读书籍通过检查&#xff0c;查找下一页的类名通过F12调出控制台&#xff0c;点击此按钮 然后点击下一页按钮&#xff0c;会出现下面的结果, 选择class里的类名在console中输入以下代码 setInterval(function(){document.getEleme…