MySQL 索引的增删改查

MySQL 索引的增删改查

1 建表时创建索引

[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY  [别名] (字段名 [(长度)] [ASC|DESC] )

主键直接写:

PRIMARY KEY (Id)

例如:

CREATE TABLE people (id int NOT NULL PRIMARY KEY AUTO_INCREMENT,last_name varchar(10) NOT NULL,first_name varchar(10) NOT NULL,age int NOT NULL,brithday DATE NOT NULL,create_date date NOT NULL,KEY one_index (last_name, first_name, brithday),KEY two_index (last_name, first_name)
)
  • UNIQUE是可选参数,表示索引为唯一性索引;
  • FULLTEXT是可选参数,表示索引为全文索引;
  • SPATIAL也是可选参数,表示索引为空间索引;
  • INDEXKEY参数用来指定字段为索引,选择其中一个就可以了,作用一样;
  • 别名是可选参数,用来给创建的索引取的新名称;
  • 字段名参数指定索引对应的字段的名称,该字段必须为前面定义好的字段;
  • 长度是可选参数,其指索引的长度,必须是字符串类型才可以使用;
  • ASCDESC都是可选参数,"ASC"参数表示升序排列,"DESC"参数表示降序排列。

2 创建索引

alter table 方式

ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
  • table_name是要增加索引的表名
  • column_list指出对哪些列进行索引,多列时各列之间用逗号分隔
  • index_name索引名可选,缺省时,MySQL将根据第一个索引列赋一个名称。
  • PRIMARY KEY索引仅是一个具有名称 PRIMARYUNIQUE索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。

另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。

create index 方式

CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
  • table_nameindex_namecolumn_listALTER TABLE语句含义相同
  • 索引名不可选

另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。

3 删除索引

DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
  • 前两条语句是等价的,删除掉table_name中的索引index_name
  • 第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

4 查看索引

mysql> show index from tblname;
mysql> show keys from tblname;
字段含义
Table表的名称
Non_unique如果索引不能包括重复词,则为0。如果可以,则为1
Key_name索引的名称
Seq_in_index索引中的列序列号,从1开始
Column_name列名称
Collation列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)
Cardinality索引中唯一值的数目的估计值。通过运行ANALYZE TABLEmyisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大
Sub_part如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL
Packed指示关键字如何被压缩。如果没有被压缩,则为NULL
Null如果列含有NULL,则含有YES。如果没有,则该列含有NO
Index_type用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么现代CSS应该选择OKLCH:从颜色科学到设计系统革新

在数字界面中,颜色不仅是美学的载体,更是信息传递的重要工具。CSS Color Level 4 标准引入了 OKLCH 颜色空间, 提供​​感知均匀性​​(颜色差异与实际视觉感受一致),解决传统HSL/HSV在调整颜色时的不自然问题。文本帮…

【java】小练习--零钱通

文章目录 前言一、项目开发流程说明二、功能实现2.1 菜单2.2 零钱通明细2.3 零钱通收益2.4 零钱通消费2.5 零钱通退出确认2.6 零钱通金额校验2.7 完整代码 三、零钱通OOP版 前言 本文是我跟着B站韩顺平老师的 Java 教程学习时动手实现“零钱通”项目的学习笔记,主要…

人工智能数学基础实验(四):最大似然估计的-AI 模型训练与参数优化

一、实验目的 理解最大似然估计(MLE)原理:掌握通过最大化数据出现概率估计模型参数的核心思想。实现 MLE 与 AI 模型结合:使用 MLE 手动估计朴素贝叶斯模型参数,并与 Scikit-learn 内置模型对比,深入理解参…

我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南

我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南 一、创建隔离开发环境 1. 使用虚拟环境(推荐venv) # 在项目目录打开终端执行 python -m venv douban_env # 创建虚拟环境 source douban_env/bin/activate # Linux/macOS激活 douban_env\Scri…

STM32八股【11】-----Linux Bootloader (U-Boot)

参考U-Boot U-Boot是什么 嵌入式Linux系统需要一个bootloader来加载系统 U-boot就是一个通用开源的嵌入式Linux bootloader 主要实现的功能: 初始化硬件资源(如内存、串口、存储器等)从存储介质加载Linux内核到内存中传递启动参数给内核启…

【设计模式】责任链+模板+工程模式使用模板

前言 方便写出优雅,解耦,高内聚,高复用的代码。 Demo // 1. 定义验证器接口(责任链模式) public interface Validator {Validator setNext(Validator next);boolean validate(Data data); }// 2. 创建抽象验证器&am…

Unity3D仿星露谷物语开发49之创建云杉树

1、目标 创建一颗既可以生长又可以砍伐的云杉树,这个和之前创建橡树类似。 2、创建云杉树预制体 创建新物体命名为CropTreeBlueSpruce,并且添加Box Collider 2D和Crop组件。 在CropTreeBlueSpruce下创建子物体命名为CropSprite,添加3个组件…

【C#】消息队列的使用

在C#中使用消息队列,通常是指使用微软的Message Queuing (MSMQ)技术。MSMQ提供了一种异步通信协议,允许应用程序通过暂时存储要发送到目的地的消息来相互通信。 安装MSMQ 首先,确保你的开发机器和部署服务器上都安装了MSMQ。可以通过“控制…

IP-guard发布新版本4.87.2241.0

IP-guard发布新版本4.87.2241.0 新版本下载地址: https://www.tec-development.com/down/IPguard/Release/V4/IPguard4.87.2241.0.zip?s=901D45ADB22CBBFE5C612DC40AFD6BFB1551A9CD54EF418D5E86BBD256813867 新版本升级地址:

【Linux 服务器磁盘映像备份与恢复实战指南】虚拟机备份,物理机上云都可以用这套方案!

Linux 服务器磁盘映像备份与恢复实战指南 背景 在服务器运维中,磁盘健康度下降可能导致数据丢失风险,特别是在未配置 RAID 的情况下。针对这种情况,备份磁盘数据并恢复到新设备是确保数据安全的关键。本文记录了使用 dd 命令通过 NFS 实现全…

深入理解 Linux 的 set、env 和 printenv 命令

在 Linux 和类 Unix 系统中,环境变量是配置和管理 Shell 及进程行为的核心机制。set、env 和 printenv 是与环境变量交互的三个重要命令,每个命令都有其独特的功能和用途。本文将详细探讨这三个命令的区别,帮助大家更好地理解和使用这些命令。…

icexmoon-tree

icexmoon-tree 一个轻量级的 Java 工具库&#xff0c;提供树形结构操作功能。 安装 <dependency><groupId>cn.icexmoon</groupId><artifactId>icexmoon-tree</artifactId><version>1.0.0</version> </dependency>使用 构建…

机器学习在智能水泥基复合材料中的应用与实践

“机器学习在智能水泥基复合材料中的应用与实践” 课程 内容 机器学习基础模型与复合材料研究融合 机器学习在复合材料中的应用概述机器学习用于复合材料研究的流程复合材料数据收集与数据预处理 实例&#xff1a;数据的收集和预处理 复合材料机器学习特征工程与选择 实例&a…

微软 Build 2025:开启 AI 智能体时代的产业革命

在 2025 年 5 月 19 日的微软 Build 开发者大会上&#xff0c;萨提亚・纳德拉以 "我们已进入 AI 智能体时代" 的宣言&#xff0c;正式拉开了人工智能发展的新纪元。这场汇聚了奥特曼、黄仁勋、马斯克三位科技领袖的盛会&#xff0c;不仅发布了 50 余项创新产品&#…

[Java恶补day6] 15. 三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&a…

《黄帝内经》数学建模与形式化表征方式的重构

黄帝内经的数学概括&#xff1a;《黄帝内经》数学建模与形式化表征方式的重构 摘要&#xff1a;《黄帝内经》通过现代数学理论如动力系统、代数拓扑和随机过程&#xff0c;被重构为一个形式化的人体健康模型。该模型包括阴阳动力学的微分几何、五行代数的李群结构、经络拓扑与同…

理论篇五:如何优化Webpack的打包速度

优化 Webpack 打包速度是提升前端开发效率的关键。以下是 10 种核心优化策略,涵盖开发和生产环境,附带具体配置和实测效果对比: 一、缩小文件搜索范围 1. 指定解析路径(Resolve) resolve: {extensions: [.js, .jsx],

[Windows] 游戏常用运行库- Game Runtime Libraries Package(6.2.25.0409)

游戏常用运行库 合集 整合了许多游戏会用到的运行库&#xff0c;支持 Windows XP – Windows 11 系统&#xff0c;并且支持自动检测系统勾选推荐的运行库&#xff0c;方便快捷。 本版特点&#xff1a; By&#xff1a;mefcl 整合常见最新游戏所需运行库 根据系统自动勾选推荐…

JDK8中的 Stream流式编程用法优化(工具类在文章最后)

Java从JDK8起提供了Stream流这个功能&#xff0c;于是项目里出现了大量基于Stream流的写法。随着项目的进行&#xff0c;慢慢的代码中铺天盖地的都是下面的写法&#xff1a; List<User> userList null;if (condition) {userList new ArrayList<>();userList.add(…

uni-app学习笔记十二-vue3中组件传值(对象传值)

一.单对象传值 父组件定义对象的值 <template><view><UserInfo :obj"userinfo"></UserInfo></view> </template><script setup>import {ref} from "vue"const userinfo ref({name:"蛛儿",avatar:&…