mysql中的多表查询基础

1:多表查询:

员工表(employee):(deptid:部门号)

idnamedeptid
1张三4
2李四5
3王五4
4陈六5
部门表(dept):

idname
4软件开发部
5软件维护部
6秘书部

需求:员工及其部门

select e.name, d.name  from employee e,dept d    //这样查出的是错误的,这样会产生笛卡尔乘积每一个e.name 将对应d.name 中的3个,共有12条;

多表查询的步骤:

1)确定我们要查询相关的那些表

2)确定要查询那些字段

3)确定查询的链接条件


需求:员工及其部门

1:内链接查询:

select e.name,d.name  from employee  e, deptid  d 

where e.deptid=d.id;

  2:它的另一种语法:内链接查询:(inner join    on )

select e.name,d.name

from  employee  e

inner join dept  d

on e.deptid=d.id;

内链接的效果:当只有满足链接条件的数据它才会显示出来;

3:外链接:

需求:查询部门及其部门的员工:(部门全部都要显示)

预期效果:

软件开发部张三
软件开发部王五
软件维护部李四
软件维护部陈六
秘书部null

1:下面是按照内链接的做法来查:

select d.name, e.name

from dept  d, employee  e

where d.id=e.deptid;(sql语句的效果图如下:)

软件开发部张三
软件开发部王五
软件维护部李四
软件维护部陈六
但内链接只显示满足链接条件的,秘书部不满足就没有显示

但我们要左表的数据都要显示(左外链接效果)

select d.name,e.name

from dept d

left outer join employee e

on d.id=e.deptid;  // 这才是正确的sql

2)右外链接:

select  e.name, d.name

from employee e

right outer join dept d

on e.deptid=d.id;


3)还有一种自连接,它的思想是我们去虚构一张表:

员工表(employee):

idnamebossid
1张三null
2李四1
这张表有员工2人,和他们的上司id,比如李四的上司就是员工为1的张三

需求:查出没个员工及他们的上司

select e.name,b.name

from employee e

inner join employee b

on e.bossid=b.id(效果图)

李四张三
左外链接查询:

select e.name, b.name

from employee e

left outer join employee b

on e.bossid =b.id






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值