创建索引是指在某个表的一列或多列上建立一个索引,可以提高对表的访问速度。创建索引对 MySQL 数据库的高效运行来说是很重要的。
基本语法

MySQL 提供了三种创建索引的方法:

1) 使用 CREATE INDEX 语句

可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。

语法格式:

CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])

语法说明如下:

  • <索引名>:指定索引名。一个表可以创建多个索引,但每个索引在该表中的名称是唯一的。
  • <表名>:指定要创建索引的表名。
  • <列名>:指定要创建索引的列名。通常可以考虑将查询语句中在 JOIN 子句和 WHERE 子句里经常出现的列作为索引列。
  • <长度>:可选项。指定使用列前的 length个字符来创建索引。使用列的一部分创建索引有利于减小索引文件的大小,节省索引列所占的空间。在某些情况下,只能对列的前缀进行索引。索引列的长度有一个最大上限255 个字节(MyISAM 和 InnoDB 表的最大上限为 1000个字节),如果索引列的长度超过了这个上限,就只能用列的前缀进行索引。另外,BLOB 或 TEXT 类型的列也必须使用前缀索引。
  • ASC|DESC:可选项。ASC指定索引按照升序来排列,DESC指定索引按照降序来排列,默认为ASC。

2) 使用 CREATE TABLE 语句

索引也可以在创建表(CREATE TABLE)的同时创建。在 CREATE TABLE 语句中添加以下语句。语法格式:

CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)

在 CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的主键

语法格式:

KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)

在 CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的索引。

语法格式:

UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)

在 CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的唯一性索引

语法格式:

FOREIGN KEY <索引名> <列名>

在 CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的外键。

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

3) 使用 ALTER TABLE 语句

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

语法格式:

ADD INDEX [<索引名>] [<索引类型>] (<列名>,…)

在 ALTER TABLE 语句中添加此语法成分,表示在修改表的同时为该表添加索引。

语法格式:

ADD PRIMARY KEY [<索引类型>] (<列名>,…)

在 ALTER TABLE 语句中添加此语法成分,表示在修改表的同时为该表添加主键。

语法格式:

ADD UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)

在 ALTER TABLE 语句中添加此语法成分,表示在修改表的同时为该表添加唯一性索引。

语法格式:

ADD FOREIGN KEY [<索引名>] (<列名>,…)

在 ALTER TABLE 语句中添加此语法成分,表示在修改表的同时为该表添加外键。

创建普通索引

创建普通索引时,通常使用 INDEX 关键字。
例 1
创建一个表 tb_stu_info,在该表的 height 字段创建普通索引。输入的 SQL 语句和执行过程如下所示。

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)-> );
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

创建唯一索引

创建唯一索引,通常使用 UNIQUE 参数。

例 2
创建一个表 tb_stu_info2,在该表的 id 字段上使用 UNIQUE 关键字创建唯一索引。输入的 SQL 语句和执行过程如下所示。

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(height)-> );
mysql> SHOW CREATE TABLE tb_stu_info2\G
*************************** 1. row ***************************Table: tb_stu_info2
Create Table: CREATE TABLE `tb_stu_info2` (`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,UNIQUE KEY `height` (`height`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312

9、创建索引(CREATE INDEX)相关推荐

  1. oracle 创建索引 CREATE INDEX

    CREATE INDEX -- 定义一个新索引 Synopsis CREATE [ UNIQUE ] INDEX name ON table [ USING method ]( { column | ...

  2. oracle在线加索引,oracle 创建索引 create index online

    普通创建索引的命令create index会先锁表,然后再创建索引,如果表中数据量很大,会造成阻塞DML语句. 加了online后,可以以非独占的方式创建和删除索引. 但是加online字段有一些限制 ...

  3. 索引 CREATE INDEX

    CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只 ...

  4. mysql 创建索引 key_Mysql中创建索引的INDEX和KEY

    一.问题 被问到,mysql为什么用key创建索引,而不是index.这个被难住了. 二.查一下 关于key和index只有三个页面,primary key,foreign key和create in ...

  5. SQL 创建索引的作用以及如何创建索引

    SQL 创建索引的作用以及如何创建索引 SQL 创建索引的作用 一.使用索引的优点: 1.通过唯一性索引(unique)可确保数据的唯一性 2.加快数据的检索速度 3.加快表之间的连接 4.减少分组和 ...

  6. mysql数据库如何创建索引,删除索引

    写在前面:要想了解索引的底层以及优化索引的底层还得学习不同搜索引擎下对于数据的处理,后续我会出一些相关的文章介绍,比如什么是B+tree,什么是聚簇索引什么是二级索引.联合索引等,以及不同搜索引擎下( ...

  7. Linux MySQL 索引 | 索引创建 | 索引删除 | 超详细

    MySQL 索引 ✈一.索引的概念 ✈二.索引的作用 ✈三.创建索引的原则依据 ✈四.索引的分类和创建 ✈1.普通索引(最基本的索引类型) ✈2.唯一索引 ✈3.主键索引 ✈4.组合索引(单列索引与多 ...

  8. MySQL之创建索引

    文章目录 MySQL之创建索引 1.五种索引分类 2.创建表后创建索引命令(create) 3.创建表后创建索引命令(alter) 3.1单列主键索引 3.2单列唯一索引 3.3组合唯一索引 3.4单 ...

  9. oracle 创建索引

    一.索引 1. 概述: 数据库对象之一 索引用于提高查询效率 索引的内建工作对用户是透明的,由数据库自行维护,我们只需要指定是否添加索引. 索引是为表中字段添加的.当一个字段经常出现在WHERE中作为 ...

  10. Oracle创建索引;查询索引

    1.创建索引 create index 索引名 on 表名(列名); 2.删除索引 drop index 索引名; 3.创建组合索引 create index 索引名 on 表名(列名1,,列名2); ...

最新文章

  1. java 并发实例_java一些常用并发工具示例
  2. Makefile_03:Makefile介绍(作用、例子、原理)
  3. python二十九:文件夹,包
  4. 通过ribbon 根据服务名获取所有服务实例的IP和端口列表
  5. c编程:输入一个数字n,则n代表n行,每行输入2个数字a,b计算每行的a+b问题。
  6. 报告正在使用哪些Reporting Services数据集字段?
  7. 计算机绘图实训任务书,autocad模块化实训任务书-2011.11
  8. java计算机毕业设计评标专家管理信息系统源程序+mysql+系统+lw文档+远程调试
  9. java是牌子的眼镜多少钱_基于jsp的眼镜商城-JavaEE实现眼镜商城 - java项目源码
  10. html更改超链接下划线颜色,超链接去掉下划线_WORD中不取消超链接,只改超链接的颜色和去掉下划线...
  11. RISC-V from scratch 4: 写 UART 驱动
  12. AI视频增强,提高视频画面的清晰度
  13. 中科院软件所的毕业去向(硕+博)
  14. 海马玩模拟器连接AndroidStudio
  15. 使用wireshark进行安卓抓包分析
  16. 关于类unix系统(linux,bsd等)克隆的资料-2
  17. 循序渐进学Docker pdf
  18. 计算机社团活动照片,电脑绘画兴趣小组活动记录表Word版
  19. 【Python学习笔记】超详细Python快速入门教程(下)
  20. 如何将PDF文件转换为PNG图片?

热门文章

  1. Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)
  2. 成功解决TypeError: __init__() got an unexpected keyword argument 'serialized_options'
  3. Py之moviepy:python库之moviepy的简介、安装、使用方法详细攻略
  4. Lesson 02:变量、数据类型
  5. [BZOJ1984] 月下“毛景树”
  6. MVC中session创建并获取问题
  7. 如何编写一份软件工程实验报告
  8. UI组件:ext、JqueryEasyUI、miniui、dhtmlx及自定义页面
  9. ESP32的OTA详细过程逻辑
  10. c++对象模型-虚拟析构函数