python学习------9.13----约束、表之间的关联关系
2021-06-30 17:07
mysql提供了 foreign key 专门用于为表和表之间 建立物理关联 思考 表里存储的是一条条的记录 两个表之间能产生的关系有哪些? 现有 A B两张表 1.多对一 2.一对一 3.多对多 在查找表之间的关系时 要分别站在 不同表去思考 1. 从员工出发 员工对于部门来说 时 多个员工对应一个部门 2. 从部门出发 一个部门对应多个员工 如果两个得到的关系不同 则认为 这种多对一关系是单向 先创建部门表 create table dept(id int primary key auto_increment,name char(10),manager char(10)); 在创建员工表 create table emp(id int primary key auto_increment,name char(10),dept_id int,foreign key(dept_id) references dept(id)); 需求: 设计 学员表 和 班级表 五分钟练习 两个表多对一的关系 通过外键来进行关联 外键加在谁身上? 加到从表上 create table class(id int primary key auto_increment,name char(10)); create table student(id int primary key auto_increment,name char(10),c_id int,foreign key(c_id) references class(id)); 总结: 外键的作用 表与表之间建立联系 添加外键约束时: 产生的限制 被关联的表需要先被创建 部门数据(主表)应该先插入 员工数据(从表)后插入 在删除部门数据前(主表)前 要保证该部门的员工数据都删除了 在更新部门编号前 要先保证没有员工关联到这个部门 简单的说 外键指的是 另一张的主键 外键加上以后 主表中的数据 删除 和更新时 都受到限制 解决的方案是为 外键 添加 级联操作
级联操作
指的是就是同步更新和删除
语法:在创建外键时 在后面添加 on update cascade 同步更新
on delete cascade 同步删除
实例:
create table class(id int primary key auto_increment,name char(10));
create table student(
id int primary key auto_increment,
name char(10),
c_id int,
foreign key(c_id) references class(id)
on update cascade
on delete cascade
);
insert into class value(null,"python3期");
insert into student value(null,"罗傲宇",1);
对主表的id进行更新
以及删除某条主表记录 来验证效果
上一篇:NumPy数组属性
文章标题:python学习------9.13----约束、表之间的关联关系
文章链接:http://soscw.com/index.php/essay/99942.html