MySQL学习总结(三)索引
补充一下,上一章节中约束的一点东西。我们在为约束设置名称的时候(标识符)推荐写法“约束缩写_字段名”,这样让人看起来就会很清晰。例如: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软件,在表——>索引,点击节点前面的加号,选中要删除的索引,右键选择“删除索引”,根据提示选择是,成功删除,如图:
或在改变表的索引列下删除,上面已经介绍过。
转载于:https://www.cnblogs.com/woshikh/p/5530739.html
MySQL学习总结(三)索引相关推荐
- 数据库MYSQL学习系列三
数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- MySQL学习记录 (三) ----- SQL数据定义语句(DDL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- MySQL学习笔记(三)查询
写在前面:本篇为作者自学总结,学习内容为课堂所学和网络学习笔记汇总,对于内容引用部分在文中和文末注明. 文章仅供参考,如需深入了解,请查阅MySQL参考手册.附上下载链接: 链接:https://pa ...
- MySQL学习(14)︱复合索引与覆盖索引
复合索引前导列特性 在MySQL中,如果创建了复合索引(name, salary, dept),就相当于创建了(name, salary, dept).(name, salary).(name)三个索 ...
- mysql学习笔记三 —— 数据恢复与备份
要点: 1.存储引擎 2.导入导出 3.备份与恢复 查看当前数据库中的所有表 use db1: show tables: 1.存储引擎 不同的发动机(引擎)适用的汽车类型不一样. 存储和处理的不同方式 ...
- MySQL学习(三) 数据类型约束、TCL语言、流程控制
数据类型和约束(ddl) 数据类型 一.数值型 1.整型 tinyint.smallint.mediumint.int/integer.bigint 1 2 3 4 8 特点: ①都可以设置无符号和有 ...
- MySQL学习笔记(三)
准备好一个表的员工,接下来都是对这个表进行操作 一,数据表里内容的修改和删除(更改,删除) 1.1增加一列数据 格式:alter table 表名 add column 列名 数据类型(数据长度); ...
- Mysql学习(三)之数据库管理工具Navicat
前言 mysql安装完后默认只有命令行工具,所以我们可以下载一些数据库管理工具Navicat Navicat使用 首先建立一个连接选择mysql,填写信息 发现多了一个localhost,双击,打开连 ...
- mysql的基本数据类型_mysql基本数据类型(mysql学习笔记三)
Mysql数据类型 小数: 浮点:小数位可以变化 Float单精度默认精度6位左右 Double双精度默认精度16位左右 支持,控制数值范围 Type(M,D) M表示所有数值位数(不包括小数点和符号 ...
最新文章
- 如何让带有批注等修改痕迹的word文档编程“正规”文档?
- notepad++默认的快捷键整理
- [转]cocos2d游戏开发,常用工具集合
- uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言
- 今年双12全天 邮政、快递企业共揽收邮(快)件达4.6亿件
- 1.1.0-简介-P5-时间、时钟和事件顺序
- 常用的实现Javaweb页面跳转的方式
- html自动播放音乐播放器代码,[界面设计] 关于HTML 音乐播放器代码|音乐播放器网页代码大全(转)...
- maya表情blendshape_【Maya】角色表情绑定-BlendShape的使用技巧
- 养猫有哪些坏处哪些好处呢?
- WPS中文档横线的问题
- sql根据出生日期计算当前年龄 函数TIMESTAMPDIFF()
- Android开发--CardView使用
- iphone开发中使用动态库(dylib)和动态加载framework (获取iphone的IMSI和设置飞行模式)
- java8中新判空方法之Optional类的使用
- 自学软件测试真的可以吗?
- 【Vue原理】Diff - 源码版 之 Diff 流程
- 微信小程序中,使用正则表达式,快速验证是否是数字(附正则表)
- Python3,为了给女神暗送秋波,我默默的写了一个图片字符画生成器,真香。
- MBA联考-20101227
热门文章
- 强大的矢量图形库:Raphael JS 中文帮助文档及教程
- IAR for msp430 MDK中 warning: #223-D: function xxx declared implicitly 解决方法
- 为Qt扩展QextSerialPort类
- 设计模式----单件模式(c++)
- [文摘20070307]英语表示“走”的20种形式
- cloud自动发卡平台cloudfaka_open-cloud基于springcloud、oauth2、nacos打造的微服务开放平台...
- 继python(银行转账)简单Model修改版(二)
- 同学Linux,同成长
- Himmelblau函数优化实战
- [0x17基本数据结构-二叉堆]-Supermarket