mysql 索引约束_Mysql索引约束讲解

索引

什么是索引?

索引是系统内部自动维护的隐藏的“数据表”,它的作用是,可以极大地加快数据的查找速度!

这个隐藏的数据表,其中的数据是自动排好序的,其查找速度就是建立在这个基础上。

mysql 索引约束_Mysql索引约束讲解_第1张图片

通常,所谓建立索引,其实是指定一个表的某个或某些字段作为“索引数据字段”就可以了,形式为:

索引类型(要建立索引的字段名)

索引类型有如下几个:

普通索引:  形式: key(字段名)

含义: 就是一个索引而已,没有其他作用,只能加快查找速度;

唯一索引:  形式: unique  key(字段名)

含义: 是一个索引,而且还可以设定其字段的值不能重复(唯一性);

主键索引:    形式: primary  key (字段名)

含义: 是一个索引,而且,还具有区分该表中的任何一行数据的作用(其实也是唯一性)

它其实比唯一性索引多一点功能:唯一性可以为空null,而主键不能为空;

全文索引:  形式: fulltext (字段名)。

外键索引:  形式: foreign  key (字段名) references  其他表(对应其他表中的字段名);

演示索引创建语法:

mysql 索引约束_Mysql索引约束讲解_第2张图片

此时,该表中如果以id,user_name,或email做条件进行查找,就会“很快”,而以age做条件就会“很慢”。

演示100万级数据有索引和无索引的情况下的查找速度:

mysql 索引约束_Mysql索引约束讲解_第3张图片

约束

什么叫做约束?

约束,就是要求数据需要满足什么条件的一种“规定”。

主要有如下几种约束:

主键约束:形式: primary key ( 字段名);

含义(作用):使该设定字段的值可以用于“唯一确定一行数据”,其实就是“主键”的意思。

唯一约束:形式: unique   key ( 字段名);

含义(作用):使该设定字段的值具有“唯一性”,自然也是可区分的。

外键约束:形式: foreign key ( 字段名)  references  其他表名(对应其他表中的字段名) ;

含义(作用):使该设定字段的值,必须在其谁定的对应表中的对应字段中已经有该值了。

非空约束: 形式: not  null,其实就是设定一个字段时写的那个“not null”属性。

这个约束只能写在字段属性上;

默认约束: 形式: default  XX值;其实就是设定一个字段时写的那个“default  默认值”属性

这个约束只能写在字段属性上;

检查约束: 形式: check(某种判断语句),比如:

create  table  tab1 (

age  tinyint,

check  (age>=0 and age <100)     /*这就是检查约束*/

)

其实,主键约束,唯一约束,外键约束,只是“同一件事情的2个不同角度的说法”,他们同时也称为“主键索引”,“唯一索引”,“外键索引”。

你可能感兴趣的:(mysql,索引约束)