mysql 之 数据约束
什么是数据约束 ?
对用户操作表的数据进行约束
默认值
作用:当用户对使用默认值的字段不插入值时 ,就使用默认值
注意:对默认值字段插入null是可以的
对默认值字段也可以插入非 null
非空
作用:限制字段必须赋值
注意 非空字段必须赋值
非空字段不能为赋NULL
唯一
作用 :对字段的值不能重复
注意:
唯一字段可以插入NULL
唯一字段可以插入多个NULL
主键(非空+唯一)
注意: 通常情况下,每张表都会设置一个主键字段。用于标记表中每条记录的唯一性。
建议不要选择表的包含业务含义的字段作为主键,建议给每张表设计一个非业务含义的ID字段
自增长:
作用:自动递增
CREATE TABLE student(
id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, -- 自增长,从0开始 ZEROFILL 零填充
NAME VARCHAR(20)
)
自增长字段可以不赋值自动递增
select * from Student;//
delete from student;//--不影响自增长约束
trancate table student ;//可以影响自增长约束
外键
作用:约束两种表的数据
出现两种表的情况
节约数据沉余高的问题:独立出一张表
例如:员工表和部门表
问题出现:在插入员工表数据时,员工表的部门id可以随便插入!!!!!!!!
使用外键约束:约束插入员工表的部门id字段值
解决办法:在员工表的部门id 字段添加一个外键约束
部门表(主表)
create table dept(
id int primary key,
deptName varchar(20));
员工表(从表)
create table employee(
id int primary key,
empName varchar(20),
deptid int --把部门名称改为部门ID
--声明一个外键约束
constraint emplyee_dept_fk外键名称 foreing key(deptid)外键reference dept(id) 参考表,参考字段
)
注意1 被约束的表称为副表、约束别人的表称为主表,外键设置在副表上
主表的参考字段通用为主键!
添加数据:先添加主表,再添加副表
· 修改数据: 先修改副表,在修改主表
删除数据:先删除副表,在删除主表