补充一下,上一章节中约束的一点东西。我们在为约束设置名称的时候(标识符)推荐写法“约束缩写_字段名”,这样让人看起来就会很清晰。例如: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. php获取rl完整地址

    /** * 获取url完整地址 * @author 梁景 * @date 2017-04-27 * @return */ function getUrlInfor() { $sys_protocal ...

  2. HDU 6351.Beautiful Now-暴力、全排列、思维 (2018 Multi-University Training Contest 5 1002)

    2018 Multi-University Training Contest 5 6351.Beautiful Now 题意就是交换任意两个数字,问你交换k次之后的最小值和最大值. 官方题解: 哇塞, ...

  3. 福州三中集训day3

    Day3数据结构,强无敌. 基本讲的是栈,队列,链表,都是些还会的操作,然后接着讲的就比较心凉凉了,先讲了堆,然后是hsah 栈,队列,链表问题都不大,笔记记得都还好,堆就凉凉了. 不会不会不会,没学 ...

  4. ASP.NET Core 2.2 基础知识(七) 选项模式

    承接上一篇 配置, 选项模式是专门用类来表示相关配置的服务. 基本选项配置 新建一个选项类,该类必须是包含无参数的构造函数的非抽象类. public class MyOptions { public ...

  5. JVM的参数配置

    JVM管理的内存叫堆.在32Bit操作系统上有1.5G-2G的限制,而64Bit的就没有. JVM初始分配的内存由-Xms指定,默认是物理内存的1/64但小于1G. JVM最大分配的内存由-Xmx指定 ...

  6. 实用类String.length应用-用户名密码长度

    package demo3; import java.util.Scanner; //会员注册,用户名长度不小于3,密码长度不小于6,两次输入的密码必须相同 public class Register ...

  7. 移植Linux2.6.38到Tiny6410_1GNandflash

    首先说一下为什么要下决心移植Linux内核,本来移植完Uboot后我想先把韦东山第二期的驱动教程看完后在试图移植内核,可是当我跟着教程写好LCD的驱动后,去设置编译友善的内核来测试程序时,我稍微改一点 ...

  8. Spring使用ComponentScan扫描Maven多模块工程的其它模块

    说明:在新建好了Maven多模块工程后,如果想要在其它模块也能使用Spring的对象管理,比如@Autowrited这些注入方式,那么就必须开启包扫描的功能才能使其进行注入到Spring的对象管理中. ...

  9. 如何垂直居中元素(浮动元素&居中一个<img>)?

    1.如何居中一个浮动元素? 方法一:已知元素的高度   <!DOCTYPE html> <html lang="en"> <head> < ...

  10. 【java】JDK1.8时间日期库 新特性 所有java中时间Date的使用

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用java 8的这套API.Java对日期, ...