【图文解析 】MySQL的高级查询,吃了一斤,写的可以!

高级查询

  • 关联查询(连接查询)
    • 查询多张表或者结果集
    • 内连接:
      • 语法:
        • select * from emp,dept where emp.deptno = dept.deptno;
        • select * from emp inner join dept on emp.deptno = dept.deptno;
        • select * from emp inner join dept using(deptno);
      • 特点:
        • 多张关联表共有的数据记录才能出现在结果集。
        • 内连接结果与连接顺序无关。
    • 外连接:
      • 特点
        • 与连接顺序有关
        • 有主从表之分,依次遍历主表中的每条记录与关联表记录进行匹配,如果匹配到则关联并展示到结果集,否则以null填充。
      • 左外连接: left [outer] join ... on...
      • 右外连接: right [outer] join ... on...
    • 自然连接(自然连接都是等值连接,等值连接不一定是自然连接)
      • select * from emp NATURAL join dept;
  • 子查询(嵌套查询)
    • 将一个查询结果作为另一个查询的条件或者组成继续进行检索
    • 分类
      • 单行子查询:子查询返回结果是一条记录
        • select * from dept where deptno = (select deptno from emp where empno =7788);
      • 多行子查询:子查询返回多条记录
        • select * from dept where deptno in (select distinct deptno from emp where sal > 2000);
        • any/all
          • =any: 相当于in >any:大于最小值 <any:小于最大值
          • >all:大于最大值 <all:小于最小值
        • in和exists的区别
          • in先执行子查询,exists先执行主查询
          • in需要关注子查询返回值的字段信息;exists不需要关系返回字段
          • exists将主查询的记录依次在子查询匹配,如果匹配返回true并展示
  • 联合查询(合并结果集)
    • union:联合结果集并去重
    • union all:不去重
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值