主键,外键,索引,唯一索引

主键

能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键

作为外键维护两个表之间数据的一致性

保证记录的唯一和非空

外键

用于建立和加强两个表数据之间的链接的一列或多列。外键约束主要用来维护两个表之间数据的一致性

表的外键(必须是索引)就是另一表的主键数据类型相似 int和tinyint可以,而int和char则不可以),外键将两表联系起来。一般情况下, 要删除一张表中的主键必须首先要确保其它表中的没有相同外键(即该表中的主键没有一个外键和它相关联)

M 主表 F 外键表(mid)

1
constraint `xxx` foreign key (`mid`) references `M`(`id`) on delete cascade on update cascade;
  • 有关联动作 ON DELETE/ON UPDATE F跟随M
  • F.mid插入的值必须在M.id存在
  • 无有关联动作M.id记录不能随便删除,先删除F中F.mid=M.id的记录

关联

1
2
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

ON DELETE、ON UPDATE表示事件触发限制,可设参数

RESTRICT(限制外表中的外键改动)

CASCADE(跟随外键改动)

SET NULL(设空值)

SET DEFAULT(设默认值)

NO ACTION(无动作,默认的)

索引

快速地寻找那些具有特定值的记录。主要是为了检索的方便,是为了加快访问速度, 按一定的规则创建的, 一般起到排序作用。所谓唯一性索引,这种索引和前面基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一,可以为空