设有3个表:
学生表(学号,姓名,性别,班级)
课程表(课程编号,课程名,学分)
成绩表(学号,课程号,成绩)
主键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就成为一个主键。
举例:学生表的学号,课程表的课程编号,成绩表的(学号,课程号)属性组
外键:用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。
举例:成绩表中的学号,就是学生表的外键。
SQL的主键和外键的约束:
外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
索引:在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。
A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。B)对于非聚集索引,有些查询甚至可以不访问数据页。C)聚集索引可以避免数据插入操作集中于表的最后一个数据页。D)一些情况下,索引还可用于避免排序操作。
聚集索引:叶结点也即数据结点,所有数据行的存储顺序与索引的存储顺序一致。
非聚集索引:表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。
主键、外键和索引的区别
定义:
主键--唯一标识一条记录,不能有重复的,不允许为空
外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值
索引--该字段没有重复值,但可以有一个空值
作用:
主键--用来保证数据完整性
外键--用来和其他表建立联系用的
索引--是提高查询排序的速度
个数:
主键--主键只能有一个
外键--一个表可以有多个外键
索引--一个表可以有多个唯一索引
参考资料:
1.
2.
3.