目录
主键(PRIMARY KEY)
主键(PRIMARY KEY)的完整称呼是“主键约束”。
MySQL主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。
这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。
主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。
- 主键应该遵守下面的规则:
(1)每个表只能定义一个主键。
(2)主键值必须唯一且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。
(3)每个表可以设置一个主键,并且只能有一个主键。
(4)一个列名只能在复合主键列表中出现一次。
(5)复合主键不能包含不必要的多余列。
外键(FOREIGN KEY)
外键是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值(指的是可以为 null),若不为空值,则每一个外键的值必须等于主表中主键的某个值。
- 外键应该遵守下面的规则:
(1)主表必须已经存在于数据库中,或者是当前正在创建的表。
(2)必须为主表定义主键。
(3)主键不能包含空值,但允许在外键中出现空值。
(4)外键中列的数目必须和父表的主键中列的数目相同,必须与主表的复合主键对应上。
(5)外键中列的数据类型必须和主表主键中对应列的数据类型相同。
注意:
不能直接删除主表的数据,除非先把从表的相关联的数据删除,才可以删除主表的东西。
从表的外键字段数据不能随便插入主表主键字段没有的数据。