数据库 --关联查询(多表查询)

需求:查询员工及其所在部门(显示员工姓名,部门名称)
1.交叉连接查询(笛卡尔积 有些是重复记录 不推荐)
select empName ,deptName from employee,dept;
2.内连接查询 (只有满足条件的结果才会显示)
规则:1.先确定你要查哪些表
2.确定查询哪些字段
3.表与表之间的连接条件(规律:连接条件数量是表数量-1)
员工表 id name deptId 部门表 id deptName
select empName,deptName ———– 2.确定哪些字段
from employee,dept ————– 1.确定查询哪些表
where employee.deptId=dept.id —————- 3.表与表之间的连接条件

内连接的另外一种语法
select
empName,deptName
from employee
inner join dept
on employee.id=dept.id;

多表基本框架

SELECT
    A.ID,
    A.NUMBER,
    A.PRICE,
    A.ORDER_TIME,
    B.USER_ID,
    B.STARTIME,
    B.STOPTIME,
    C.CHANNEL_PAY,
    D.COMPANY
FROM
    D表 D
LEFT JOIN A表 A ON A.COMPANY_ID = D.UID
LEFT JOIN B表 B ON B.COMPANY_ID = D.UID
LEFT JOIN C表 C ON C.COMPANY_ID = D.UID
有条件的再加行:
WHERE ..........
排序(如A表的ID由大到小排):
ORDER BY A.ID DESC

优化 (使用别名)

select 
         empName,deptName
     from employee AS e
     inner join dept AS d
      on e.id=d.id;

需求:查询每个部门的员工
预期结果:
软件开发部 张三
总经办 null
select
d.deptName,e.emoName
from dept d,employee e
where d.id=e.deptId;
查询结果:总经办 不显示
所以 现在内连接不符合需求了!!!!!

那就使用左外连接 使用左边表的数据去匹配右边表的数据,如果符合条件的就显示,如果不符合条件就是用null!!!!
左 (外)连接:左边的数据一定会完整显示!
select
d.deptName,e.employee
from dept d
left outer join employee e
on d.id=e.deptId;
右外连接:右边的数据一定会完整显示!
select
d.deptName,e.employee
from employee e
right outer join dept d
on d.id=e.deptId;

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值