sql学习-多表查询

一、多表关系介绍

2、多表查询概述

emp表:

dept部门表:

之所以系统将emp的字段id写成emp.id是因为dept表也有个字段叫id,防止重复。

where条件是为了去除无用的笛卡尔积。

3、内连接

结果:

ps:1、其中 emp e是给emp表起别名。2、inner join中inner关键字可省略。3、隐式与显式内连接语法不同,效果相同。

4、外连接

ps:1、即使陈友谅数据没有dept_id它也可以查出来,这是左外连接与内连接不同之处。2、outer关键字可省略

ps:1、e.*是因为要查对应员工信息即所有字段。2、一般用左外多一点,因为右外也可用左外来写:

5、自连接

实例的表为:

通过自己的managerid连接对应id

6、联合查询

PS:1、or也可以,但不建议。2、联合查询就是简单将两表查询结果合并,故可能有重复,如鹿杖客出现了两次,使用union关键字可去重。3、对红字理解:就不行,因为第二个只有name字段与第一个*的字段个数不同。

7.子查询

标量子查询:

列子查询:

行子查询:

括号内部返回的是一行数据。

表子查询:

也常用作临时表作为查询对象:

8、练习

distinct关键字用于去重。

可以直接后面跟where关键字

此处为隐式内连接,注意链接条件与以往不同。s.losal,s.hisal是为了验证结果的,实际有e.*和s.grade字段就可以

需求6:

此处涉及三张表的联合查询,使用内连接。涉及n张表的联合查询至少有n-1个连接条件。

需求7:

需求8、9是标量子查询,简单,不演示

需求10:

用到了自连接和子查询。但有点看不懂,建议结合a(查询指定部门平均薪资)想想

需求11:

select之后也可以出现子查询

需求12:

总结:多表查询就是通过连接条件消除无效的笛卡尔积!复杂一点会涉及到多张表或联合运用子查询和自连接等方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值