MySQL——索引(三)创建索引(2)使用 CREATE INDEX 语句在已经存在的表上创建索引
若想在一个已经存在的表上创建索引,可以使用 CREATE INDEX.语句,CREATEINDEX语句创建索引的具体语法格式如下所示:
CREATE [UNIQUEIFULLTEXTISPATIAL]INDEX 索引名
ON 表名(字段名[(长度)J[ASCIDESC]);
在上述语法格式中,UNIQUE、FULLTEXT 和 SPATIAL都是可选参数,分别用于表示唯一性索引、全文索引和空间索引;INDEX用于指明字段为索引。
为了便于学习如何使用CREATE INDEX语句在已经存在的表上创建索引,接下来,创建一个 book 表,该表中没有建立任何索引,创建 book 表的 SQL语句如下所示
mysql> create table book(-> bookid INT NOT NULL,-> bookname VARCHAR(255) NOT NULL,-> authors VARCHAR(255) NOT NULL,-> info VARCHAR(255) NULL,-> comment VARCHAR(255) NULL,-> publicyear YEAR NOT NULL-> );
Query OK, 0 rows affected (0.01 sec)
创建好数据表 book 后,下面通过具体的案例为读者演示如何使用 CREAT INDEX语句在已存在的数据表中创建索引,具体如下。
1)创建普通索引
例如,在 book 表中的 bookid 字段上建立一个名称为 index_id 的普通索引,SQL 语句如下所示:
mysql> CREATE INDEX index_id ON book(bookid);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
上述 SQL 语句执行后,使用 SHOW CREATE TABLE 语句查看表的结构,结果如下所示:
mysql> show create table book \G
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int NOT NULL,`bookname` varchar(255) NOT NULL,`authors` varchar(255) NOT NULL,`info` varchar(255) DEFAULT NULL,`comment` varchar(255) DEFAULT NULL,`publicyear` year NOT NULL,KEY `index_id` (`bookid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
从上述结果可以看出,book 表中的 bookid 字段上已经建立了一个名称为 index_id的普通索引。
2)创建唯一性索引
例如,在 book 表中的 bookid 字段上建立一个名称为 uniqueidx 的唯一性索引,SQL 语句如下所示:
mysql> CREATE UNIQUE INDEX uniqueidx ON book(bookid);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
上述 SQL 语句执行后,使用 SHOW CREATE TABLE 语句查看表的结构,结果如下所示:
mysql> show create table book \G
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int NOT NULL,`bookname` varchar(255) NOT NULL,`authors` varchar(255) NOT NULL,`info` varchar(255) DEFAULT NULL,`comment` varchar(255) DEFAULT NULL,`publicyear` year NOT NULL,UNIQUE KEY `uniqueidx` (`bookid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
从上述结果可以看出,book 表中的 bookid 字段上已经建立了一个名称为 uniqueids的唯一性索引。
3)创建单列索引
例如,在 book 表中的 comment 字段上建立一个名称为 singleidx 的单列索引SQL语句如下所示:
CREATE INDEX singleidx ON book(comment);
上述 SQL 语句执行后,使用 SHOW CREATE TABLE 语句查看表的结构,结果如下所示:
mysql> CREATE INDEX singleidx ON book(comment);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
从上述结果可以看出,book 表中的 comment 字段上已经建立了一个名称为singleidx 的单列索引。
4)创建多列索引
例如,在 book 表中的 authors 和 info 字段上建立一个名称为 mulitidx 的多列索引,SQL 语句如下所示:
CREATE INDEX mulitidx ON book(authors(20),info(20));
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
上述SQL语句执行后,使用 SHOW CREATE TABLE 语句查看表的结构,结果如下所示:
mysql> show create table book \G
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int NOT NULL,`bookname` varchar(255) NOT NULL,`authors` varchar(255) NOT NULL,`info` varchar(255) DEFAULT NULL,`comment` varchar(255) DEFAULT NULL,`publicyear` year NOT NULL,UNIQUE KEY `uniqueidx` (`bookid`),KEY `singleidx` (`comment`),KEY `mulitidx` (`authors`(20),`info`(20))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
从上述结果可以看出,book 表中的 authors 和 info 字段上已经建立了一个名称为mulitidx的多列索引。
5)创建全文索引
例如,删除表 book,重新创建表 book,在表中的 info 字段上创建全文索引.首先删除表 book,SQL 语句如下:
mysql> DROP TABLE book;
Query OK, 0 rows affected (0.00 sec)
然后重新创建表 book,SQL 语句如下:
mysql> create table book(-> bookid INT NOT NULL,-> bookname VARCHAR(255) NOT NULL,-> authors VARCHAR(255) NOT NULL,-> info VARCHAR(255) NULL,-> comment VARCHAR(255) NULL,-> publicyear YEAR NOT NULL-> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.01 sec)
使用 CREATE INDEX语句在 book 表的 info 字段上创建名称为 fulltextidx 的全文索引,SQL语句如下:
mysql> CREATE FULLTEXT INDEX fulltextidx ON book(info);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
为了验证全文索引 fulltextidx 是否创建成功,使用 SHOW CREATE TABLE 语句查看表的结构,结果如下所示:
mysql> show create table book \G
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int NOT NULL,`bookname` varchar(255) NOT NULL,`authors` varchar(255) NOT NULL,`info` varchar(255) DEFAULT NULL,`comment` varchar(255) DEFAULT NULL,`publicyear` year NOT NULL,FULLTEXT KEY `fulltextidx` (`info`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
从上述结果可以看出,book 表中的 info 字段上已经建立了一个名称为 fulltextidy的全文索引。
6)创建空间索引
例如,创建表 t7,在表中的g字段上创建名称为 spatidx 的空间索引首先创建数据表 t7,SQL语句如下:
mysql> create table t7(-> g GEOMETRY NOT NULL-> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
使用 CREATE INDEX 语句在 t7 表的g字段上创建名称为 spatidx 的空间索引SQL语句如下:
mysql> CREATE SPATIAL INDEX spatidx ON t7(g);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
为了验证空间索引spatidx是否创建成功,使用 SHOW CREATE TABLE 语句查看表的结构,结果如下所示:
mysql> show create table t7 \G
*************************** 1. row ***************************Table: t7
Create Table: CREATE TABLE `t7` (`g` geometry NOT NULL,SPATIAL KEY `spatidx` (`g`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
从上述结果可以看出,book 表中的g字段上已经建立了一个名称为 spatidx 的空间索引。
相关文章:
MySQL——索引(三)创建索引(2)使用 CREATE INDEX 语句在已经存在的表上创建索引
若想在一个已经存在的表上创建索引,可以使用 CREATE INDEX.语句,CREATEINDEX语句创建索引的具体语法格式如下所示: CREATE [UNIQUEIFULLTEXTISPATIAL]INDEX 索引名 ON 表名(字段名[(长度)J[ASCIDESC]); 在上述语法格式中,UNIQUE、FULLTEXT 和…...
html+css 实现hover选择按钮
前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目…...
Python数据可视化利器:Matplotlib详解
目录 Matplotlib简介安装MatplotlibMatplotlib基本用法 简单绘图子图和布局图形定制 常见图表类型 折线图柱状图散点图直方图饼图 高级图表和功能 3D绘图热图极坐标图 交互和动画与其他库的集成 与Pandas集成与Seaborn集成 常见问题与解决方案总结 Matplotlib简介 Matplotli…...
2024 NVIDIA开发者社区夏令营环境配置指南(Win Mac)
2024 NVIDIA开发者社区夏令营环境配置指南(Win & Mac) 1 创建Python环境 首先需要安装Miniconda: 大家可以根据自己的网络情况从下面的地址下载: miniconda官网地址:https://docs.conda.io/en/latest/miniconda.html 清华大学镜像地…...
介绍rabbitMQ
RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP),主要用于在不同的应用程序之间进行异步通信。以下是关于RabbitMQ的详细介绍: 一、基本概念 消息中间件:RabbitMQ是一个消息中间件&#x…...
AI在医学领域:使用眼底图像和基线屈光数据来定量预测近视
关键词:深度学习、近视预测、早期干预、屈光数据 儿童近视已经成为一个全球性的重大健康议题。其发病率持续攀升,且有可能演变成严重且不可逆转的状况,这不仅对家庭幸福构成威胁,还带来巨大的经济负担。当前的研究着重指出&#x…...
VB.NET中如何利用WPF(Windows Presentation Foundation)进行图形界面开发
在VB.NET中,利用Windows Presentation Foundation (WPF) 进行图形界面开发是一个强大的选择,因为它提供了丰富的UI元素、动画、数据绑定以及样式和模板等高级功能。以下是在VB.NET项目中使用WPF进行图形界面开发的基本步骤: 1. 创建一个新的…...
Go语言标准库中的双向链表的基本用法
什么是二分查找区间? 什么是链表? 链表节点的代码实现: 链表的遍历: 链表如何插入元素? go语言标准库的链表: 练习代码: package mainimport ("container/list""fm…...
手机游戏录屏软件哪个好,3款软件搞定游戏录屏
在智能手机普及的今天,越来越多的人喜欢在手机上玩游戏,并希望能够录制游戏过程或者分享游戏技巧。然而,面对市面上众多的手机游戏录屏软件,很多人可能会陷入选择困难。究竟手机游戏录屏软件哪个好?在这篇文章中&#…...
【力扣】4.寻找两个正序数组的中位数
题目描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入:nums1 [1,3], nums2 [2] 输出:2.0…...
【C++】初识面向对象:类与对象详解
C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性 本章将介绍C中一个重要的概念——类。通过类,我们可以类中定义成员变量和成员函数,实现模块化封装,从而构建更加抽象和复杂的工程。 &…...
知识图谱学习总结
1 知识图谱的介绍 知识图谱,是结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系,通过知识图谱能够将Web上的信息、数据以及链接关系聚集为知识,使信息资源更易于计算、理解以及评价,并能实现知识的快速响…...
2021-10-23 51单片机LED1-8按秒递增闪烁
缘由51单片机,八个LED灯按LED1亮1s灭1s,LED1亮2s 灭2s以此类推的方式亮灭-编程语言-CSDN问答 #include "REG52.h" sbit K1 P1^0; sbit K2 P1^1; sbit K3 P1^2; sbit K4 P1^3; sbit P1_0P2^0; sbit P1_1P2^1; sbit P1_2P2^2; sbit P1_3P2^3; sbit P1_…...
在Linux中宏观的看待线程
线程一旦被创建,几乎所有的资源都是被所有的线程共享的。线程也一定要有自己私有的资源,什么样的资源应该是线程私有的? 1.PCB属性私有 2.要有一定的私有上下文结构 3.每个线程都要有独立的栈结构 ps -aL ##1. Linux线程概念 ###什么是线程…...
提示libfakeroot.so或libfakeroot-sysv.so出错处理方法
在RK3588 Buildroot SDK里面,uboot和kernel使用的是prebuild目录下的交叉编译链,而buildroot和APP编译则使用Buildroot生成的交叉编译链来编译(如:位于buildroot/output/rockchip_rk3588/host目录为交叉编译工具链目录)…...
【计算机网络】什么是socket编程?以及相关接口详解
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
LeetCode.19.删除链表的倒数第n个节点
题目描述: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 输入输出实例: 思路:这道题目我们可以用双指针来做,让first和second指针之间的距离为n1,然后我们first和second指针…...
vue-cesium
vue-cesium: Vue 3.x components for CesiumJS. cesium 文档中文版 ArcGisMapServerImageryProvider - Cesium Documentation all参考 https://juejin.cn/post/7258119652726341669 cesium官网 Cesium Sandcastle...
《npm 学习过程中遇到的诸多问题》
npm 开发 1.开发过程中难免会使用到npm ,进行安装第三方包 遇到的问题 match 报错:npm i报错npm ERR! Cannot read property match of undefined 可以尝试清除本地的package-log.json 文件,再试试...
CentOS 介绍
引出 Linux 系统内核与 Linux 发行套件系统的区别? Linux 系统内核指的是一个由 Linus Torvalds(Linux之父,内核主要开发者)负责维护,提供硬件抽象层、磁盘、文件系统控制及多任务功能的系统核心程序。 Linux 发行套…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
