【数据库】主键、外键、索引

设有3个表:

学生表(学号,姓名,性别,班级)

课程表(课程编号,课程名,学分)

成绩表(学号,课程号,成绩)

主键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就成为一个主键。

举例:学生表的学号,课程表的课程编号,成绩表的(学号,课程号)属性组

外键:用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性

举例:成绩表中的学号,就是学生表的外键。

SQL的主键和外键的约束:

   外键取值规则:空值或参照的主键值。

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

 

索引:在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。

A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。
B)对于非聚集索引,有些查询甚至可以不访问数据页。
C)聚集索引可以避免数据插入操作集中于表的最后一个数据页。
D)一些情况下,索引还可用于避免排序操作。  

 

聚集索引:叶结点也即数据结点,所有数据行的存储顺序与索引的存储顺序一致。 

非聚集索引:表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。

 

主键、外键和索引的区别

 

定义:

 主键--唯一标识一条记录,不能有重复的,不允许为空

 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值

 索引--该字段没有重复值,但可以有一个空值

 

作用:

 主键--用来保证数据完整性

 外键--用来和其他表建立联系用的

 索引--是提高查询排序的速度

 

个数:

 主键--主键只能有一个

 外键--一个表可以有多个外键

 索引--一个表可以有多个唯一索引

参考资料:

1.http://www.doc88.com/p-538467175318.html

2.http://www.cnblogs.com/ywb-lv/archive/2012/03/12/2391860.html

3.http://kb.cnblogs.com/page/45712/

原文地址:https://www.cnblogs.com/dplearning/p/4755616.html