MySQLQ_数据库约束
目录
- 什么是数据库约束
- 约束类型
- NOT NULL 非空约束
- UNIQUE 唯一约束
- PRIMARY KEY主键约束
- FOREIGN KEY外键约束
- CHECK约束
- DEFAULT 默认值(缺省)约束
什么是数据库约束
数据库约束就是对数据库添加一些规则,使数据更准确,关联性更强
比如加了唯一值约束,就避免了人工检查的成本,大大降低了时间成本和风险
约束类型
NOT NULL 非空约束
加了非空约束的列不能为NULL值
如果预见某个列不能为空,建议家费控约束,会对查询功能产生积极的影响
用法:
加了非空约束后就不能加入空值
UNIQUE 唯一约束
指定了唯一约束的列,该列的值在所有记录中不能重复,比如一个人的身份证号
unique 值限制唯一,不限制空
只加了唯一约束的列可以写入多个null
测试用例:
校验:id 重复定义
PRIMARY KEY主键约束
主键约束唯一标识数据库中的每条记录(唯一)
主键必须包含唯一的值,且不能包含null值(非空)
每个表只能有一个主键,一个主键可以由单个列或多个列组成
通常每张表都指定一个主键,逐渐建议使用BIGINT类型
测试用例:
非空且唯一(与unique not null 不同),primary key 是数据库表的一个特性,数据如何组织依赖主键
通常把主键列设置为自动增长(auto_increment),让数据库维护主键
像这样写入数据时,不用人为的去维护主键值
这里的id系统自动维护
注意:写入自增数据id 后,对自增值写入null,表示id继续自增,null不影响自增属性 但是用户明确指定了一个数,这个数就会写入数据表中,下一次自增从最大值继续自增
比如先写入100,再写入4,最后自增是从最大值100往后自增
如果想一个主键包含两个列,就单独开一行
两个形成复合主键只要两个不同时重复就能创建
表中只能有一个自增列
auto_increment 属性只能用于定义为 PRIMARY KEY 或者 UNIQUE 的列
为自增主键指定null时,只起到一个占位作用
如果主键出现冲突,对主键进行修改(replace into)
使用:
FOREIGN KEY外键约束
外键用于定义主表和从表之间的关系
外键约束主定义在从表上,主表关联的列必须是非空或唯一约束
从表和主表关联的列必须有对应关系(相同值)
外键约束也是对数据的一种校验
从表中使用了主表中的某个值,这个值必须存在于主表中
语法
【在从表中创建】
【从表外键类型和主表保持一致】
foreign key (从表列) references 主表表名(主表列);
如果不符合外键约束,就会报错【从表建的一条数据的外键不在主表内】
【如果要删除主表中的数据,则必须把从表中关联数据删了,或者删除外键关系】
CHECK约束
可以应用于一个或多个列,用于限制列中可接受的数据值,从而确保数据的完整性和准确性
举例:
【因为创建的age小于18,不符合check约束,所以报错】
也可以不同的两个列比较
DEFAULT 默认值(缺省)约束
default 约束用于向列中插入默认值,如果没有为列设置值,那么会将默认值设置到该列
【没有填age信息默认填入18】
【有指定值就以指定值为准】