数据库的主键外键索引

  1. 数据库的主键外键索引
    1. 主键、外键和索引的区别?
    2. 聚集索引和非聚集索引的区别?
  2. mysql中key 、primary key 、unique key 与index区别

这是一篇数据库的主键、外键、索引的学习笔记

数据库的主键外键索引

主键、外键和索引的区别?

|主键|外键|索引
—|—|—|—
定义|唯一标识一条记录,不能有重复的,不允许为空|表的外键是另一表的主键, 外键可以有重复的, 可以是空值|该字段没有重复值,但可以有一个空值
作用|用来保证数据完整性|用来和其他表建立联系用的|是提高查询排序的速度
个数|主键只能有一个|一个表可以有多个外键|一个表可以有多个惟一索引

聚集索引和非聚集索引的区别?

聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。

聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。

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 版权协议,转载请保留原文链接与作者。

目录
×

喜欢请收藏,疼爱就打赏