mysql入门到精通005-基础篇-约束
1、概述
1.1 概念
约束是作用于表中字段上的规则,用于限制储存在表中的数据。
1.2 目的
保证数据库中数据的正确性、有效性和完整性。
1.3 常见的约束分类
- 一旦谈到外键,则至少涉及2张表
- 约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束
2、演示
2.1 案例
案例1: 根据需求完成表结构的创建(关注约束条件)
创建表结构:
create table user (
id int primary key auto_increment comment "主键",
name varchar(10) not null unique comment "姓名",
age int check(age>0 and age<=120) comment "年龄",
status char(1) default '1' comment "状态",
gender char(1) comment "性别"
) comment "用户表"
插入数据:
insert into user(name,age,status,gender) values ("tom1",19,"1","男"),("kity",29,"0","女")
// 没有传status参数,这个时候会默认取1
insert into user(name,age,gender) values ("tom1",19,"男")
2.2 总结
记住约束的关键字即可
3、外键约束
3.1 概念
外键用来让2张表的数据之间建立连接,从而保证数据的一致性和完整性。
🌟🌟🌟(具有外键的表被称为子表(从表),外键所关联的表被称为父表(主表))🌟🌟🌟
eg.如员工表和部门表之间的关联。
注:目前上述的两张表,在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。(影响:如删除或则update主表记录后,从表不会进行更新)
3.2 语法
3.2.1 添加外键
<1> 创建表时,添加外键语法
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
);
<2> 更新表时,添加外键语法
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名);
外键名称是自定义的变量,名字可以自己命名。
alter table emp add contraint fk_emp_dept_id foreign key (dept_id) references dept(id);
3.2.2 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
alter table drop foreign key fk_emp_dept_id;
4、外键删除更新行为
4.1 应用场景
如果我想在主表删除记录时候,从表也对应删除对应外键的记录,这个时候就可以使用外键的删除更新行为。(如员工表和部门表,一对多的关系,删除主表部门表一条记录时,可能对应删除多个从表员工表的多条记录)
4.2 外键删除更新行为分类
alter table emp add constranint fk_emp_dept_id foreign key(dept_id) references dept(id) on update cascade on delete cascade;