首页 > 代码库 > 主键和外键

主键和外键


如果一个表中有两条记录各个字段的值都相同,那么这两条记录就是重复的

为了让表中的记录不重复,可以为表设置主键

主键:
    主键是对一张表而言
    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这两条数据

主键和外键