约束与表关系
约束
一些限制条件
非空约束not null
不希望队名为空,就在创建表的时候给队名这个字段加上not null的约束
队名不能为空,只插id不插队名就会报错
默认约束default
给一个字段设置默认值,这样字段的值也不会为空
主键约束primary key
保证字段不为空且唯一
id设为主键则唯一,不能再插入id=1的数据
主键支持自增
每次插入新数据id都会+1,不需要额外给id赋值
外键约束foreign key
限制两表间的关系,一个表的外键必定是另一个表的主键,外键可以为空。
可以通过设置外键来使学生表和队伍表实现强关联
把students表的team_id作为外键,对应teams表的主键id
此时外键students表进行与外键有关的数据操作时会更为严苛,需要同时满足teams表才能完成操作
如学生表要插入team_id=3的数据,但teams没有id=3的数据,则会报错
如当主表students有team_id的数据时,引用表teams是不能被删除的,但students可以被删除
有外键说明存在一对多关系,外键对应多。如一个班可以有多个学生,班级是“一”,学生是“多”
外键存在于“多”即students表中,students表设置外键后不能删除teams表的原因是:
此时说明teams表正在被学生表引用
表关系
一对多关系
一个小组可以有多个学生,一个学生只能在一个小组
可以通过主键和外键建立一对多关系
多对多关系
一个老师可以教多个学生,一个学生也可以选个多个老师的课
通过第三张表关联老师和学生表就能建立多对多关系
就如同老师、学生、课程表那样
一对一关系
并不常见,因为大部分一对一关系的数据都放在一个表中存储