MySQL数据库--外键
一、外键前戏 如果我们把所有的信息都记录在一张表中会带来的问题: 1.表的结构不清晰 2.浪费磁盘空间 3.表的扩展性极差 所以我们要把这种表拆成几张不同的表,分析表与表之间的关系。 确定表与表之间的关系,一定要换位思考(必须两方都考虑周全之后才能得出结论) 学生与班级表: 1.站在学生的角度看班级:能否多个学生在一个班级 (一个班级能否有多个学生) 可以!!! 2.站在班级的角度看学生:能否有多个班级对应一个学生 (一个学生能否在多个班级) 不可以!!! 结论:学生表和班级表之间仅仅只是单向的多对一,那么它们的关系就是“一对多”(无论是多对一还是一对多,都叫‘一对多’) 所以学生表多对一班级表,在学生表中创建一个字段(class_id)指向班级表的id字段。 如何让两种表有代码层面上真正的关联,就必须使用外键 (foreign key) 什么是外键? 让表与表有硬性层面上的关系。 二、一对多 foreign key 外键约束 1.在创建表的时候,必须先创建被关联表 2.插入数据的时候,也必须先插入被关联表的数据 有员工表和部门表,之间是一对多的关系,通常将关系字段称之为外键字段, 建在多的一方 。(这里这个外键建在员工表中) 建表: 先建部门表(被关联表) #部门表 create table dep( id int primary key auto