补充一下,上一章节中约束的一点东西。我们在为约束设置名称的时候(标识符)推荐写法“约束缩写_字段名”,这样让人看起来就会很清晰。例如:FK_Deptno,我们通过索引的名字就可以大概知道这是一个设置的关于Deptno字段的外键。

一个索引包含表中按照一定顺序排序的一列或者多列字段。创建索引主要是为了提高从表中检索数据的速度。但是创建索引有利也有弊,优点是通过索引,可以提高查询的速度。但是过多的创建索引会占据许多的磁盘空间,因此在创建索引的时候一定要权衡利弊。

以下情况适合创建索引:

(1)经常被查询的字段

(2)经常出现在分组中的字段

(3)表的主键或者是外键字段

(4)设置唯一完整性约束的字段

以下情况不适合创建索引:

(1)在查询中很少被使用的字段

(2)拥有许多重复的值的字段

索引名在设置的时候,建议“index_字段名”,这样看起来很清晰。

索引根据创建方式又可以分为两类,自动索引和手动索引。通过名称我们可以简单的理解,自动索引就是自动创建的索引(和废话一样。。),在设置表的主键或者其他设置完整性约束的时候,MySQL系统会自动创建索引。而手动索引,指的是我们主动在表上创建的索引,如下图所示:

1、创建索引

1.1 、创建普通索引

CREATE TABLE table_name(

属性名 数据类型,

属性名 数据类型,

INDEX 索引名(属性名1)

)

1.2、在已经存在的表上创建普通索引

CREATE INDEX 索引名 ON 表名 (属性名)

1.3、ALTER TABLE创建普通索引

ALTER TABLE table_name ADD INDEX 索引名 (属性名)

2、创建唯一索引

唯一索引,就是在创建索引的时候,限制索引值必须是唯一值,通过该类型的索引可以更快的查询某条记录。

2.1 、创建表时创建唯一索引

CREATE TABLE table_name(

属性名 数据类型,

属性名 数据类型,

UNIQUE  INDEX 索引名(属性名1)

)

2.2、在已经存在的表上创建唯一索引

CREATE UNIQUE   INDEX 索引名 ON 表名 (属性名)

2.3、ALTER TABLE创建唯一索引

ALTER TABLE table_name ADD UNIQUE    INDEX 索引名 (属性名)

注意:创建唯一索引的时候,如果表中该字段有为空值的时候,则唯一索引会创建失败。

3、创建全文索引

全文索引主要关联在数据库中数据类型为CHAR、VARCHAR、TEXT的字段上,以便能够更加快速的查询数据量较大的字符串类型的字段。

3.1 、创建表时创建全文索引

CREATE TABLE table_name(

属性名 数据类型,

属性名 数据类型,

FULLTEXT INDEX 索引名(属性名1)

)

3.2、在已经存在的表上创建全文索引

CREATE FULLTEXT INDEX 索引名 ON 表名 (属性名)

3.3、ALTER TABLE创建全文索引

ALTER TABLE table_name ADD FULLTEXT INDEX 索引名 (属性名)

4、通过SQLyog创建索引

右键要创建索引的表,选择改变表菜单,点击“2个索引”,如下图所示:

通过SQLyog软件,我们可以更加方便快捷的创建索引。而且界面也很简单,易上手。

5、删除索引

SQL语法:DROP INDEX index_name ON table_name;

通过SQLyog软件,在表——>索引,点击节点前面的加号,选中要删除的索引,右键选择“删除索引”,根据提示选择是,成功删除,如图:

或在改变表的索引列下删除,上面已经介绍过。

MySQL学习总结(三)索引的更多相关文章

  1. MySQL学习笔记(三)—索引

    一.概述 1.基本概念       在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经 ...

  2. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  3. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  4. 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表

    本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创 ...

  5. MySQL 学习 --- 数据结构和索引

    本文参考了多篇文章集成的笔记,希望各位学习之前可以阅读以下参考资料先 概述 文章分几个部分 :第一部分介绍了B-Tree 和 B+Tree 这种数据结构作为索引:第二部分介绍索引的最左前缀原则和覆盖索 ...

  6. 转MYSQL学习(三) 函数

    这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MO ...

  7. MySQL学习(三)主备分库分表和恢复数据 --- 2019年2月

    1.MySQL主备切换 readonly 设置对超级(super)权限是无效的,而用于同步更新的线程,就拥有超级权限. 建议在做主备数据库的时候,将备用数据库设置为只读.(反向用readonly来判断 ...

  8. mysql学习笔记--数据库索引

    一.索引的优点:查询速度快 二.索引的缺点: 1. 增.删.改(数据操作语句)效率低了 2. 索引占用空间 三.索引类型: 1. 普通索引 2. 唯一索引(唯一键) 3. 主键索引:只要主键就自动创建 ...

  9. mysql学习笔记三 —— 数据恢复与备份

    要点: 1.存储引擎2.导入导出3.备份与恢复 查看当前数据库中的所有表use db1:show tables: 1.存储引擎 不同的发动机(引擎)适用的汽车类型不一样. 存储和处理的不同方式.不同的 ...

  10. MySQL学习(三)MySQL锁与事务

    本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议. 一.MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支 ...

随机推荐

  1. 使用 Hibernate 完成 HibernateUtils 类 (适用于单独使用Hibernate或Struts+Hibernate)

    package com.istc.Utilities; import org.hibernate.Session; import org.hibernate.SessionFactory; impor ...

  2. 高效mysql的习惯(程序员版本)

    高效的mysql 一定要有主键 如果没有主键: 数据多次读写后可能更离散,有更多随机I/O MySQL复制环境中,如果选择RBR模式,没有主键的update需要读全表,导致复制延迟 好的主键特点: 没 ...

  3. 线段树维护矩阵【CF718C】 Sasha and Array

    Description 有一个长为\(n\)的数列\(a_{1},a_{2}...a_{n}\),你需要对这个数列维护如下两种操作: \(1\space l \space r\space x\) 表示 ...

  4. POJ2513Colored Sticks(欧拉通路)(字典树)(并查集)

                                                             Colored Sticks Time Limit: 5000MS   Memory ...

  5. [ARC100]E:Or Plus Max(FZT)

    https://arc100.contest.atcoder.jp/tasks/arc100_c 一个很自然的想法是,对于每个K求出i or j=k的所有a[i]+a[j]的最大值ans[k],答案就 ...

  6. POJ 2345 Central heating(高斯消元)

    [题目链接] http://poj.org/problem?id=2345 [题目大意] 给出n个开关和n个人,每个人可以控制一些开关,现在所有的开关都是关着的 一个指令可以让一个人掰动所有属于他控制 ...

  7. POJ 2079 Triangle (凸包+旋转卡壳)

    [题目链接] http://poj.org/problem?id=2079 [题目大意] 给出一些点,求出能组成的最大面积的三角形 [题解] 最大三角形一定位于凸包上,因此我们先求凸包,再在凸包上计算 ...

  8. Mysql中的JSON系列操作函数

    前言 JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写.对机器来说易于解析和生成,并且会减少网络带宽的传输. JSON的格式非常简单:名称/ ...

  9. React Native之ES5/ES6语法差异对照表

    很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...

  10. IntelliJ IDEA下Maven控制台出现中文乱码问题解决

    Setting->maven->runner: VMoptions: -Dfile.encoding=GB2312 不一定有效,要不断的尝试.