多表连接

时间:2020-07-14
本文章向大家介绍多表连接,主要包括多表连接使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

0. 表间关系分析

1. 一对多的关系,在多的关系中加列。

列:dept表        emp表

  id  name      id  name  dept_id

  1  财务部      1  张三    1

  2  人事部      2  李四    1

  3  科技部      3  王五    2

               4  赵六    3

2. 一对一的关系,可以在任意一方添加列保存另一方的主键为外键。

3. 多对多的关系时,添加一个第三方的表,在第三方表中分别保存两张表的主键,以此来保存两张表中数据之间的对应关系。

列:stu学生表,字段:id,name

  tea老师表,字段:id,name

1 create table stu_tea(
2   stu_id int,
3   tea_id int,
4   primary key(stu_id,tea_id),
5   foreign key(stu_id) references stu(stu_id),
6   foreign key(tea_id) references tea(tea_id),      
7 );
primary key(stu_id,tea_id)中的stu_id,tea_id为联合主键

4. 级联更新:主表中的主键发生更新时,从表中记录的外键数据也会跟该表更新,ON DELETE CASCADE

5. 级联删除:当主表删除了主键数据时,从表中记录外键数据也会跟着删除,ON UPDATE CASCADE

1. 连接

1. 内连接

列:dept表        emp表

  id  name      id  name  dept_id

  1  财务部      1  张三    1

  2  人事部      2  李四    1

  3  科技部      3  王五    2

               4  赵六    3

1 select * from dept,emp where emp.dept_id=dept.id
1 select * from dept inner join emp on emp.dept_id=dept.id

1. 当一张表中包含了对应关系时,可以将此表分割为两张表

列:emp表

  id  name  topId

  1   张三   6

  2   李四   5

  3   王五   4

  4   刘畅           8

  5   刘鑫   9

  6   嫣然    10

  。。。。。。。。。

可以将此表分为两个表:emp e1(员工表)和emp e2(上级表)

显示的字段为:e1.id,e1.name,e2.id

连接条件为:e1.topId=e2.id

组合语法:

1 select e1.id,e1.name,e2.name from emp e1,emp e2 where e1.topId=e2.id

    

原文地址:https://www.cnblogs.com/lxzlovewyq/p/13299634.html