首页 > 代码库 > 主键和外键
主键和外键
如果一个表中有两条记录各个字段的值都相同,那么这两条记录就是重复的
为了让表中的记录不重复,可以为表设置主键
主键:
主键是对一张表而言
1、可以有一个字段或多个字段组成,多个字段组成的叫复合主键
2、数据库表中任意两条记录的主键是不相等的,这样就能保证记录不重复
例如:一般将表中第一个字段id设置为主键,并且让他自动增长,就是在插入一条
新数据时自动增加,这就保证表中任意两条记录的id是不同的,就不会存在重复记录
复合主键:把表中的多个字段看成一个主键
外键:
外键是对两张表而言,主键和外键分布在两张表中,先有主键才能有外键,外键以主键为参照
例如:有一张表A,主键为id
另一张表B,B中有一个字段为a_id
为了将表A中的记录与表B中的某一条记录关联起来
就将表A中的记录的id存放到表B的记录的a_id中
这样B表中的这条记录就与A表中的这条记录关联起来了
称B表的a_id字段称为表B的外键,关联的主键是表A的id字段
简单来说就是
主键能区分同一张表中的不同记录,能防止表中存在重复记录,主键不能为空,保证数据库中不会有全部为空的数据记录
外键首先可以关联两张表的数据,将复杂的数据分开存放到多张表,不至于将所有数据都放在一张表里面
另外外键可以用来管理两张表中的记录的,可以保证数据的完整性
设置的外键之后,两张表中管理起来的数据不能随便删除,
比如:有两张表,用户表和性别表
性别表sex中有两条记录
id | text |
1 | 男 |
2 | 女 |
用户表user
id | name | sex_id |
001 | jim | 1 |
002 | tom | 2 |
003 | bob | 1 |
user表中的sex_id是外键,关联的主键是sex表的主键id
那么主键存在的表sex表中的数据就不能随便删除
因为如果删除 1 男 这条数据,在查询jim和bob的性别的时候就会出错
要删除 1 男 这条数据,必须先删除 jim 和 bob这两条数据
主键和外键