360教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

MySQL中key与index详细介绍

时间:2022-6-10作者:未知来源:360教程人气:

SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
一、概述
1、基本概念
(1)key是数据库的物理结构,有两层作用,一层是约束作用(constraint),用于约束数据的唯一性、完整性;一层是索引作用,用来建立索引,优化查询速度,与index作用相同。
(2)普通key:没有约束作用,但会在此key上建立一个index。
(3)primary key:主键;一个表可以有一个主键,主键分为单一主键(只包含一列)和复合主键(也叫联合主键,可以包含多列);可以规定一个存储主键,并规范数据的唯一性;同时会在此key上建立一个index。主键并不是必须的,但是强烈建议的【使用主键几个好习惯:不更改、不重用】
(4)unique key:唯一键;规范数据的唯一性;同时会在此key上建立一个index。
(5)foreign key:外键;规范数据的引用完整性;同时会在此key上建立一个index。
(6)index:key作用的一个维度,在有些时候可以代替关键字key。

2、primary key与unique key

(1)相同点:唯一性约束
(2)不同点

1)出发点/作用不同:前者是一行数据的唯一标识,后者只是用来避免数据重复。
2)前者的一个列或多个列必须全部为not null;如果其中一个列为null,在添加为主键时,会变为not null,如果再删除主键,列的nullable性质会变回去。后者的列可以为null。
3)一个表只能有一个primary key,可以有多个unique key。【一个表可以没有primary key吗???】
4)对于unique key对应的列,可以多次插入null(虽然也是一种重复);这是由索引的原理,即索引对null的处理决定的。

二、语法
1、创建时添加-字段级
(1)普通key:create table t (id int not null key);
(2)primary key:create table t (id int not null primary key);二者作用相同,即指明key也是指定primary key,且在一个表中都只能指定一次(不能通过指定多次来当做联合主键)
(3)unique key:create table t (id int not null unique key);
(4)foreign key:应该是不行
(5)index:所有的key不可以换位index
2、创建时添加-表级
(1)普通key:与字段级指定不同,这里的普通key不再与primary key相同,即便没有指定primary key,MySQL也不会将key作为primary key使用。
create table t(id int, key (id));如果有使用id的其他键(如foreign key),则使用其他键对他的命名;如果都没有命名,则使用id;如果一次指定了多个列作为键,则使用第一个列名作为键名。
create table t(id int, key kismet(id));指定该key的名称
constraint:不能使用,毕竟普通key并没有约束作用
(2)primary key
create table t(id int, primary key (id));
create table t(id int, primary key kismet(id));可以执行,但是名称不起作用
create table t(id int, constraint kismet primary key(id));可以执行,但是名称不起作用
(3)unique key
create table t(id int, unique key (id));命名规则与key不同,只使用第一列作为键名
create table t(id int, unique key kismet(id));指定该key的名称
create table t(id int, constraint kismet unique key(id));指定该key的名称
(4)foreign key【个人认为,所谓创建两个key,是逻辑上的两个层面,即数据完整性约束和索引优化】
create table t(id int, foreign key (dage_id) references dage(id));可以执行,执行结果为创建了一个自动命名的foreign key和一个自动命名的普通key。
create table t(id int, foreign key kismet(dage_id) references dage(id));可以执行,执行结果为创建了一个自动命名的foreign key和一个名称为kismet的普通key。
create table t(id int, constraint kismet foreign key(dage_id) references dage(id));可以执行,执行结果为创建了一个名称为kismet的foreign key和一个名称为kismet的普通key。
(5)index:key和unique key(表级)中的key可以换位index,作用一样。
3、创建后
(1)添加键:add,举例如下:alter table t add primary key(id);
(2)删除键,drop,primary key使用alter table t drop primary key;其他key使用名字进行drop即可,注意删除键和删除列的区别。
4、查看信息:show create table table_name;可以查看表的各种属性,包括键属性、存储引擎、字符集、分区情况等。
三、外键
1、作用:可以使得两张表关联,保证数据的一致性和实现一些级联操作;
2、支持外键的存储引擎:InnoDB、Memory验证支持,其他未验证。
3、完整语法
(1)[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT

关键词:MySQL中key与index详细介绍




Copyright © 2012-2018 360教程(http://www.360sd.cn) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版