MySQL——索引的创建与删除

article/2025/11/6 13:37:11

文章目录

  • MySQL——索引的创建与删除
    • 1、创建索引的三种方式
      • 1.1、建表时创建索引
      • 1.2、修改表时创建索引
      • 1.3、使用 CREATE INDEX 语句创建索引
    • 2、删除索引

MySQL——索引的创建与删除

1、创建索引的三种方式

1.1、建表时创建索引

使用CREATE TABLE创建表时,除了可以定义列的数据类型外,还可以定义主键约束、外键约束或者唯一性约束,而不论创建哪种约束,在定义约束的同时相当于在指定列上创建了一个索引。

隐式创建:

在声明有主键约束、唯一性约束、外健约束的字段上,会自动添加相关的索引。

create table dept(dept_id int primary key auto_increment, -- 通过定义主键约束创建主键索引dept_name varchar(20)
);create table emp(emp_id int primary key auto_increment,emp_name varchar(20) unique , -- 唯一性约束dept_id int,constraint emp_dept_id_fk foreign key(dept_id) references dept(dept_id) -- 外健约束
);

在这里插入图片描述

显式创建:

显式创建基本语法:

CREATE TABLE table_name [col_name data_type ]
[ UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY] [index_name] (col_name [length])[ASC | DESc]
  • UNIQUE、FULLTEXT和SPATIAL为可选参数,分别表示唯一索引、全文索引和空间索引,若不选则表示创建的是普通索引。
  • INDEX与KEY为同义词,两者的作用相同,用来指定创建索引;
  • index_name指定索引的名称,为可选参数,如果不指定,那么MySQL默认col_name为索引名;
  • col_name为需要创建索引的字段列,该列必须从数据表中定义的多个列中选择;
  • length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;
  • ASC 或 DESC 指定升序或者降序的索引值存储。
-- 创建普通索引
create table book(book_id int,book_name varchar(50),authors varchar(50),info varchar(50),comment varchar(50),year_publication year,index idx_bname(book_name) -- 声明索引,字段为book_name
);
-- 创建全文索引,全文索引在MySQL5.5及之前 MyISAM支持,InnoDB不支持
create table book1(book_id int,book_name varchar(50),authors varchar(50),info varchar(50),comment varchar(50),year_publication year,fulltext index fk_idx_cmt(comment(20)) -- 声明索引,字段为comment,长度取20,避免索引长度过长
);

1.2、修改表时创建索引

ALTER TABLE 语句创建索引语法:

ALTER TABLE table_name ADD [UNIQUE | FULLTEXT | SPATIAL][INDEX | KEY]
[index_name] (col_name [length] ,...)[ASC | DESC]

使用实例:

-- 创建普通索引
alter table book2 add index idx_cmt(comment);-- 创建唯一索引
alter table book2 add unique uk_idx_bname(book_name);-- 创建联合索引
alter table book2 add index mul_bid_bname_info(book_id,book_name,info);

1.3、使用 CREATE INDEX 语句创建索引

create index idx_cmt on book3(comment);-- 创建普通索引create unique index uk_idx_bname on book3(book_name);-- 创建唯一索引create index mul_bid_bname_info on book3(book_id,book_name,info);-- 创建联合索引

2、删除索引

使用 ALTER TABLE 删除索引

语法格式:

ALTER TABLE table_name DROP INDEX index_name;

使用实例:

alter table book3 drop index idx_cmt;alter table book3 drop index mul_bid_bname_info;

注意:添加 auto_increment 自增 约束字段的唯一索引不能被删除。

使用 DROP INDEX 删除索引

语法格式:

DROP INDEX index_name on table_name;

使用实例:

drop index idx_cmt on book2;drop index mul_bid_bname_info on book2;

注意:删除表中的列时,如果要删除的列为联合索引的组成部分,则该列也会从索引中删除。如果组成联合索引的所有列都被删除,整个索引也被删除。


http://chatgpt.dhexx.cn/article/3sOh1xGl.shtml

相关文章

c++ 实现meanshift

自己手动实现了meanshift,算是把之前还有些模糊的地方给搞清楚了,本来应该半天就可以的,结果高斯核函数计算权重那里弄错了,多花了好一阵子功夫才搞定。 原理 对于所有样本点中的一个点x,计算它的shift vector&#…

Meanshift均值漂移聚类算法

一、meanshift 均值漂移就是把指定的样本点沿着密度上升的方向移向高密度区域。这里可以用矢量加法的几何意义来理解。参考博文Mean Shift 聚类算法 meanshift为 M r ( x ) 1 k ∑ x i ∈ S r ( x ) ( x i − x ) M_r(x)\frac{1}{k}\sum\limits_{x_i\in S_r(x)}(x_i-x) Mr​…

MeanShift 目标跟踪

MeanShift算法,又称为均值漂移算法,采用基于颜色特征的核密度估计,寻找局部最优,使得跟踪过程中对目标旋转,小范围遮挡不敏感。 文章目录 MeanShift 原理MeanShift 跟踪步骤meanShift 函数原型反向投影MeanShift 跟踪…

MeanShift跟踪MATLAB实现

一、简介 核跟踪方法是目标跟踪的主要方法, 应用非常广泛。例如Meashift、Camshift 算法, 它直接运用最速下降法的原理, 向梯度下降方向对目标模板逐步迭代, 直到迭代到最优位置。它的核心就是一步一步迭代寻找最优点, 在跟踪中, 就是为了寻找相似度值最大的候选区间。 本文主…

OpenCV每日函数 对象追踪模块 Meanshift算法

1、meanshift的基本思想 meanshift 背后的直觉很简单。考虑你有一组点。(它可以是像直方图反投影这样的像素分布)。您有一个小窗口(可能是一个圆圈),您必须将该窗口移动到最大像素密度(或最大点数)的区域。如下图所示: 2、meanshift的原理简述 均值偏移和模式发现技术,…

meanshift算法学习(二):opencv中的meanshift

0.前言 接着上一篇文章点击打开链接说,opencv中提供的meanshift可以用来实现跟踪,其基本原理是迭代求解概率分布的“局部极值”。这一篇内容,我只讲opencv中的meanshift的用法和源代码分析。因为:(1)具体的…

聚类算法之Mean Shift

Mean Shift聚类算法 1. 基本原理 对于Mean Shift算法,是一个迭代得步骤,即每次迭代的时候,都是找到圆里面点的平均位置作为新的圆心位置。说的简单一点,使得圆心一直往数据密集度最大的方向移动。 2. 基本的Mean Shift向量形式…

meanshift跟踪算法

以下是用meanshift实现目标跟踪的实验报告(包含源码),实验中详细介绍了meanshift跟踪算法的原理,结合OTB100跟踪数据集对meanshift跟踪效果进行了分析。 目 录 一.实验名称 二.实验目的 三.实验原理 3.1 前言 3.2 meanshift …

传统目标跟踪——MeanShift算法

目录 一、均值漂移(MeanShift) 二、流程 三、代码 3.1 meanshift+固定框的代码 3.2 优化:meanshift鼠标选择 3.3 meanshift自己实现函数 四、补充知识 4.1 直方图 4.2 归一化 4.3 直方图反投影 一、均值漂移(…

Mean Shift 聚类算法

原文:https://blog.csdn.net/hjimce/article/details/45718593 一、mean shift 算法理论 Mean shift 算法是基于核密度估计的爬山算法,可用于聚类、图像分割、跟踪等,因为最近搞一个项目,涉及到这个算法的图像聚类实现&#xff…

mean shift聚类matlab,机器学习:Mean Shift聚类算法

今天的文章介绍如何利用Mean Shift算法的基本形式对数据进行聚类操作。而有关Mean Shift算法加入核函数计算漂移向量部分的内容将不在本文讲述范围内。实际上除了聚类,Mean Shift算法还能用于计算机视觉等场合,有关该算法的理论知识请参考这篇文章。 Mea…

Python 实现MeanShift算法

原理 大家自行百度吧,我懒得码字了 推荐一下原理原理https://blog.csdn.net/jinshengtao/article/details/30258833 代码 直接上代码了,看不懂,就参照一下原理 # author: wdq # contact: 1920132572qq.com # datetime:2022/3/15 17:40 # …

Sklearn聚类算法之meanshift

以二维来说明可能更容易理解,下图中的很多的红点就是我们的样本特征点,meanshift就是在这些点中的任意一个点为圆心,然后以半径R画一个圆(在opencv中是一个矩形),然后落在这个圆中的所有点和圆心都会对应的…

Python实现Mean Shift聚类算法

Mean Shift算法,又称均值聚类算法,聚类中心是通过在给定区域中的样本均值确定的,通过不断更新聚类中心,直到聚类中心不再改变为止,在聚类、图像平滑、分割和视频跟踪等方面有广泛的运用。 Mean Shift向量 对于给定的…

mean shift 跟踪算法

说明一: Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. 1. Meanshift推导 给定d维空间Rd的n个样本点 ,i1,…,n,在空间中任选一点x,那么Mean Shift向量…

Python实现Mean Shift算法

声明:代码的运行环境为Python3。Python3与Python2在一些细节上会有所不同,希望广大读者注意。本博客以代码为主,代码中会有详细的注释。相关文章将会发布在我的个人博客专栏《Python从入门到深度学习》,欢迎大家关注~ 在K-Means算…

meanshift算法 java_Meanshift,聚类算法

记得刚读研究生的时候,学习的第一个算法就是meanshift算法,所以一直记忆犹新,今天和大家分享一下Meanshift算法,如有错误,请在线交流。 Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其…

保边滤波之Mean shift filter

Mean shift filter 目录 Mean shift filter 一、算法原理 二、练手实现的算法代码如下: 三、实现结果 一、算法原理 在OpenCV中,meanshift filter函数为 pyrMeanShiftFiltering, 它的函数调用格式如下: C: void pyrMeanShif…

mean shift

参考: http://blog.csdn.net/google19890102/article/details/51030884 http://www.cvvision.cn/5778.html https://wenku.baidu.com/view/5862334827d3240c8447ef40.html http://blog.csdn.net/qq_23968185/article/details/51804574 https://www.cnblogs.com…

机器学习算法原理与实践(二)、meanshift算法图解以及在图像聚类、目标跟踪中的应用

【原创】Liu_LongPo 转载请注明出处 【CSDN】http://blog.csdn.net/llp1992 最近在关注跟踪这一块的算法,对于meanshift的了解也是来自论文和博客,本博客将对meanshift算法进行总结,包括meanshift算法原理以及公式推导,图解&…