mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作

1.外键: 用来建立两张表之间的关系- 一对多- 多对多- 一对一研究表与表之间的关系:1.定义一张 员工部门表id, name, gender, dep_name, dep_desc- 将所有数据存放在一张表中的弊端:1.结构不清晰 ---> 不致命2.浪费空间 ---> 不致命3.可扩展性极差 ---> 不可忽视的弊端- 类似于将所有python代码存放在一个py文件中,...
摘要由CSDN通过智能技术生成

1.外键: 用来建立两张表之间的关系

- 一对多

- 多对多

- 一对一

研究表与表之间的关系:

1.定义一张 员工部门表

id, name, gender, dep_name, dep_desc

- 将所有数据存放在一张表中的弊端:

1.结构不清晰 ---> 不致命

2.浪费空间 ---> 不致命

3.可扩展性极差 ---> 不可忽视的弊端

- 类似于将所有python代码存放在一个py文件中,强耦合到一起了----> 解耦合 ----> 拆分表

- 拆分表解决以上问题.

- 需要给两张表之间,建立一种强有力的关系, 使用 “外键”

- !!!!! ****** 如何确认表与表之间的关系是 (一对多、多对多、一对一)

- 注意: 要确立两张表之间的关系,必须站在两个位置去思考:

- 站在员工表的位置: 多个员工能否对应一个部门? 能!!!

- 员工与部门: 多 对 一

- 员工表单向 多 对 一 部门表

- 站在部门表的位置: 多个部门能够对应一个员工? 不能!!!

总结: 凡是单向 多 对 一 的表关系,称之为 一对多 的外键关系。

- 外键: 语法: foreign key(当前表中建立关系的外键字段) references 被关联表名(id)

23c85a63ab548f4f6d362465a804a2a1.png

- 一对多

# 创建两张表

1.必须先建立被关联表,再建立关联表

# 被关联表:

dep:

create table dep(

id int primary key auto_increment,

dep_name varchar(16),

dep_desc varchar(255)

);

# 关联表:

emp:

create table emp(

id int primary key auto_increment,

name varchar(16),

age int,

gender enum('male', 'female', 'others') default 'male',

dep_id int not null,

foreign key(dep_id) references dep(id)

);

b6401dc5efc5d252bff3bfb4987ebb1b.png

注:KEY中MUL代表外键

# 插入数据:

- 1.必须先插入被关联表(dep)的数据,再插入关联表(emp)的数据。

# dep:

insert into dep(dep_name, dep_desc) values('nb_外交部', '国际形象大使部门'),

('sb_教学部', '造程序员部门!!!!'),

('技术部', '技术有限部门');

# emp:

insert into emp(name, age, gender, dep_id)

values('tank', 17, 'male', 1),

('jason', 70, 'male', 2),

('sean', 50, 'male', 2),

('egon', 88, 'male', 2),

('owen', 95, 'female', 3);

# 报错,

insert into emp(name, age, gender, dep_id) values('大饼', 100, 'others

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值