MySQL 连接查询和子查询

连接查询

连接查询:也可以叫跨表查询,需要关联多个表进行查询

连接查询分类

根据语法出现的年代来划分的话,包括:
        SQL92
        SQL99
根据表的连接方式来划分,包括:
        内连接:
            等值连接
            非等值连接
            自连接
        外连接:
            左外连接(左连接)
            右外连接(右连接)
            全连接

笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。

示例

显示每个员工信息,并显示所属的部门名称

 

 正确应该是

 以上查询也称为 “内连接”,只查询相等的数据(连接条件相等的数据)

内连接和外连接


内连接:
        假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来,这就是内连接。AB两张表没有主副之分,两张表是平等的。

外连接:
        假设A和B表进行连接,使用外连接的话,AB两张表中有一张表是主表,一张表是副表,主要查询主表中 的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。

外连接分类

左外连接(左连接):表示左边的这张表是主表。
右外连接(右连接):表示右边的这张表是主表。    

示例

显示员工信息,并显示所属的部门名称,如果某一个部门没有员工,那么该部门也必须显示出来

右连接

左连接

 以上两个查询效果相同

子查询

select语句当中嵌套select语句,被嵌套的select语句是子查询。

示例

查询哪些人的薪水高于员工的平均薪水,需要显示员工编号,员工姓名,薪水

实现思路:

  1. 取得平均薪水

         select avg(sal) from emp;

      2.取得大于平均薪水的员工

        select empno, ename, sal from emp where sal > (select avg(sal) from emp);

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值