数据库的主键外键索引
这是一篇数据库的主键、外键、索引的学习笔记
数据库的主键外键索引
主键、外键和索引的区别?
|主键|外键|索引
—|—|—|—
定义|唯一标识一条记录,不能有重复的,不允许为空|表的外键是另一表的主键, 外键可以有重复的, 可以是空值|该字段没有重复值,但可以有一个空值
作用|用来保证数据完整性|用来和其他表建立联系用的|是提高查询排序的速度
个数|主键只能有一个|一个表可以有多个外键|一个表可以有多个惟一索引
聚集索引和非聚集索引的区别?
聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。
聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。
mysql中key 、primary key 、unique key 与index区别
来源:mysql中key 、primary key 、unique key 与index区别 + mysql中key 、primary key 、unique key 与index区别 + MySQL 索引-菜鸟教程
key的用途:主要是用来加快查询速度的。
unique Key是唯一键,而Primary key是主键
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:1、Primary key的1个或多个列 必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。
MySQL 中Index 与Key 的区别:
key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)
index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等;
因此,索引只是索引,它不会去约束索引的字段的行为(那是key要做的事情)。如,create table t(id int, index inx_tx_id (id));请详看key和index区别
Key即键值,是关系模型理论中的一部份,比如有主键(Primary Key),外键(Foreign Key)等,用于数据完整性检否与唯一性约束等。
而Index则处于实现层面,比如可以对表的任意列建立索引,那么当建立索引的列处于SQL语句中的Where条件中时,就可以得到快速的数据定位,从而快速检索。
至于Unique Index,则只是属于Index中的一种而已,建立了Unique Index表示此列数据不可重复,猜想MySQL对Unique Index类型的索引可以做进一步特殊优化吧。
于是乎,在设计表的时候,Key只是要处于模型层面的,而当需要进行查询优化,则对相关列建立索引即可。
另外,在MySQL中,对于一个Primary Key的列,MySQL已经自动对其建立了Unique Index,无需重复再在上面建立索引了。
总结: (1).我们说索引分类,分为主键索引、唯一索引、普通索引(这才是纯粹的index)等,也是基于是不是把index看作了key。
比如 create table t(id int, unique index inx_tx_id (id)); –index当作了key使用
(2).最重要的也就是,不管如何描述,理解index是纯粹的index,还是被当作key,当作key时则会有两种意义或起两种作用。
欢迎转载,欢迎错误指正与技术交流,欢迎交友谈心
文章标题:数据库的主键外键索引
文章字数:913
本文作者:Brain Cao
发布时间:2018-04-08, 16:03:01
最后更新:2020-03-07, 14:08:55
原始链接:https://braincao.cn/2018/04/08/mysql-key-index/版权声明:本文为博主原创文章,遵循 BY-NC-SA 4.0 版权协议,转载请保留原文链接与作者。