mysql 如何加索引_mysql如何添加索引

mysql 如何加索引_mysql如何添加索引mysql添加索引的方法:可以通过【createtable】语句来添加,如【CONSTRAINTPRIMARYKEY|INDEX[][]】,表示创建一般索引。在mysql中可以在创建表(CREATETABLE)的同时创建索引;也可以在创建表后创建索引,使用CREATEINDEX语句或ALTERTABLE语句。(视频教程推荐:mysql视频教程)1、使用CREATEINDE…

大家好,又见面了,我是你们的朋友全栈君。

mysql添加索引的方法:可以通过【create table】语句来添加,如【CONSTRAINT PRIMARY KEY | INDEX [] [] 】,表示创建一般索引。

e751ba6418d104d9adb85d941d361352.png

在mysql中可以在创建表(CREATE TABLE)的同时创建索引;也可以在创建表后创建索引,使用CREATE INDEX语句或ALTER TABLE 语句。

(视频教程推荐:mysql视频教程)

1、使用CREATE INDEX语句

可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。CREATE INDEX [] ON ( [] [ ASC | DESC])

语法说明如下:

● :指定索引名。一个表可以创建多个索引,但每个索引在该表中的名称是唯一的。

● :指定要创建索引的表名。

● :指定要创建索引的列名。通常可以考虑将查询语句中在 JOIN 子句和 WHERE 子句里经常出现的列作为索引列。

● :可选项。指定使用列前的 length 个字符来创建索引。使用列的一部分创建索引有利于减小索引文件的大小,节省索引列所占的空间。在某些情况下,只能对列的前缀进行索引。索引列的长度有一个最大上限 255 个字节(MyISAM 和 InnoDB 表的最大上限为 1000 个字节),如果索引列的长度超过了这个上限,就只能用列的前缀进行索引。另外,BLOB 或 TEXT 类型的列也必须使用前缀索引。

● ASC|DESC:可选项。ASC指定索引按照升序来排列,DESC指定索引按照降序来排列,默认为ASC。

二、使用 CREATE TABLE 语句

索引可以在创建表(CREATE TABLE)的同时创建,语法格式:

1、创建主键索引CONSTRAINT PRIMARY KEY [索引类型] (,…)

在使用 CREATE TABLE 语句定义列选项的时候,可以通过直接在某个列定义后面添加 PRIMARY KEY 的方式创建主键。而当主键是由多个列组成的多列索引时,则不能使用这种方法,只能用在语句的最后加上一个 PRIMARY KRY(,…) 子句的方式来实现。

2、创建一般索引KEY | INDEX [] [] (,…)

3、创建唯一性索引UNIQUE [ INDEX | KEY] [] [] (,…)

4、创建外键索引FOREIGN KEY

示例1:创建一个表 tb_stu_info,在该表的 height 字段创建一般索引。mysql> CREATE TABLE tb_stu_info

-> (

-> id INT NOT NULL,

-> name CHAR(45) DEFAULT NULL,

-> dept_id INT DEFAULT NULL,

-> age INT DEFAULT NULL,

-> height INT DEFAULT NULL,

-> INDEX(height)

-> );

示例2:创建一个表 tb_stu_info2,在该表的 id 字段上使用 UNIQUE 关键字创建唯一索引。mysql> CREATE TABLE tb_stu_info2

-> (

-> id INT NOT NULL,

-> name CHAR(45) DEFAULT NULL,

-> dept_id INT DEFAULT NULL,

-> age INT DEFAULT NULL,

-> height INT DEFAULT NULL,

-> UNIQUE INDEX(id)

-> );

三、使用 ALTER TABLE 语句

在使用 ALTER TABLE 语句修改表的同时,可以向已有的表添加索引。具体的做法是在 ALTER TABLE 语句中添加以下语法成分的某一项或几项。

1、创建主键索引ADD PRIMARY KEY [] (,…)

2、创建一般索引ADD INDEX [] [] (,…)

3、创建唯一性索引ADD UNIQUE [ INDEX | KEY] [] [] (,…)

4、创建外键索引ADD FOREIGN KEY [] (,…)

示例1:创建一个表 tb_stu_info3后,在该表的 id 字段上使用 UNIQUE 关键字创建唯一索引。mysql> CREATE TABLE tb_stu_info3

-> (

-> id INT NOT NULL,

-> name CHAR(45) DEFAULT NULL,

-> dept_id INT DEFAULT NULL,

-> age INT DEFAULT NULL,

-> height INT DEFAULT NULL,

-> );

Query OK,0 rows affected (0.40 sec)

mysql>ALTER TABLE tb_stu_info3 ADD UNIQUE (id) ;

四、显示索引信息

以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。

示例:mysql> SHOW CREATE TABLE tb_stu_info\G

*************************** 1. row ***************************

Table: tb_stu_info

Create Table: CREATE TABLE `tb_stu_info` (

`id` int(11) NOT NULL,

`name` char(45) DEFAULT NULL,

`dept_id` int(11) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`height` int(11) DEFAULT NULL,

KEY `height` (`height`)

) ENGINE=InnoDB DEFAULT CHARSET=gb2312

1 row in set (0.01 sec)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144152.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 更换国内源[通俗易懂]

    Ubuntu 更换国内源[通俗易懂]Ubuntu系统自带的源都是国外的网址,国内用户在使用的时候网速比较慢。一个软件的下载是十分痛苦的,这里讲解一下如何将国外源更换为国内源,让你的网速Biu.Biu.Biu1.备份原来的源sudocp/etc/apt/sources.list/etc/apt/sources_init.list将以前的源备份一下,以防以后可以用的。2.更换源sudogedi…

    2022年5月4日
    37
  • densenet网络结构详解_网络dea模型

    densenet网络结构详解_网络dea模型网络基本结构 我们放大一下DenseBlockDenseBlock 上图中每一次的输入都是经过Channel-wiseconcatenation后的,如k0+k,k为growthrate。denseblock一个核心的点就是:每一层的输入来自前面所有层的输出。如下,H2的输入=最开始的输入 + H1的输出= k0+kH3的输入=最开始的输入 …

    2022年9月1日
    3
  • eclipse汉化小教程

    eclipse汉化小教程点aboutEclipsexxx然后会显示版本http://www.eclipse.org/babel/downloads.php进入该网址一般都选择Mars(最后一个)复制网址http://download.eclipse.org/technology/babel/update-site/R0.15.1/mars加载出pending包后选择ChineseTraditional安装一路n…

    2022年5月3日
    59
  • 为什么说程序员做外包没前途呢_外包程序员

    为什么说程序员做外包没前途呢_外包程序员之前做过不到3个月的外包,2020的第一天就被释放了,2019年还剩1天,我从外包公司离职了。我就谈谈我个人的看法吧。首先我们定义一下什么是有前途 稳定的工作环境 不错的收入 能够在项目中不断提升自己的技能(ps:非技术上的认知也算) 找下家的时候能找到一份工资更高的工作 如果你目前还年轻,但高不成低不就,只有外包offer,那请往下看。外包公司你应该…

    2022年10月9日
    0
  • java.lang.assertionerror_java parseint

    java.lang.assertionerror_java parseintMicrosoftVisualStudioSolutionFile,FormatVersion12.00#VisualStudio15VisualStudioVersion=15.0.26730.16MinimumVisualStudioVersion=10.0.40219.1Project(“{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC…

    2022年9月8日
    0
  • java 异步调用接口_Java接口异步调用[通俗易懂]

    java 异步调用接口_Java接口异步调用[通俗易懂]java接口调用从调用方式上可以分为3类:同步调用,异步调用,回调;同步调用基本不用说了,它是一种阻塞式的调用,就是A方法中直接调用方法B,从上往下依次执行。今天来说说异步调用。什么是异步调用?我的理解就是在方法A中调用方法B,但是方法B很耗时,如果是同步调用的话会等方法B执行完成后才往下执行,如果异步的话就是我调用了方法B,它给我个返回值证明它已接受调用,但是它并没有完成任务,而我就继续往下执行…

    2022年7月11日
    211

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号