目录
数据库约束
约束类型
NOT NUll 约束
UNIQUE 约束
DEFAULT 约束
PRIMARY KEY:主键约束
FOREIGN KEY 外键约束
表的设计
一对多
一对多
多对多
增删改其实没什么进阶的·,主要是查,是很复杂的。
数据库中的数据,有的时候是有一定要求的,有些数据是合法的,也有非方的数据;所以,数据库自动对数据的合法性进行校验检查的一系列机制称为约束。目的就是为了保证数据中能够被避免插入/修改一些非法的数据。
不加约束是可以添加null值的;
设置之后就不允许这列存储null值
unique 约束,会让后面 插入 / 修改的数据的时候,都会执行一次查询操作,通过这个查询,来确定当前这个数据是否已经存在。
一张表里只能有一个parmary key;
mysql会把带有unique 和 primary key的列自动生成索引,从而加快查询速度。
如何保证主键唯一??
mysql本身就提供了一种"自增主键" 这样的机制;而且不用手动指定主键值,可以数据库服务器自己给你分配一个,从1开始,依次递增的分配主键的值。
外键就是用来描述这样的约束过程的!
class表中的数据,约束了student表中的数据。
把class表 称为“主表/父表”; 约束别人的表。
把student 表,称为 “从表/子表”,被别人约束的表。
foreign key (列名) references 主表(列名);
在执行 插入操作,就会触发针对class表的查询。就会查询当前插入的记录是否在class中存在.
针对父表进行 修改/删除 操作,如果当前被修改 / 删除的值,已经被子表引用了,这样的操作也会报错!
外键约束始终要保持,子表中的数据在对应的父表的列中,要存在,不然也会报错!
根据实际的需求场景,明确当前要创建几个表,每个表什么样子,这些表之间是否存在一定联系。
比如:一个人只能有一个身份证;
比如:一个学生只能在一个班级中,一个班级可以有多个学生;
比如:一个学生可以选择多个课程;一门课程也可以有多个学生。
就需要借助一个关联表,表示多对多 关系