Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL复合查询

MySQL之复合查询使用及说明

作者:秦jh_

文章讲解了SQL复合查询中emp、dept、salgrade三张表的使用,涵盖多表连接、自连接、子查询(单行/多行/多列)及合并查询(UNION/UNION ALL)等技术,通过实际案例展示如何实现员工与部门数据的关联分析、条件筛选和统计功能

复合查询

会使用到的表:

emp表(员工表):

 dept表(部门表):

salgrade表(工资表): 

基本查询回顾

多表查询笛卡尔积

实际开发中往往数据来自不同的表,所以需要多表查询。我们用一个简单的公司管理系统,有三张 表EMP,DEPT,SALGRADE来演示如何进行多表查询。

 案例:

其实我们只要emp表中的deptno = dept表中的deptno字段的记录

 因为上面的数据来自EMP和DEPT表,因此要联合查询 

自连接

自连接是指在同一张表连接查询 

案例:

这里使用到表的别名 ,给自己的表起别名,因为要先做笛卡尔积,所以别名可以先识别

子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询 

单行子查询

多行子查询

多列子查询

 单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言 的,而多列子查询则是指查询返回多个列数据的子查询语句

案例:

在from子句中使用子查询

子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用。 

案例: 

合并查询

在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all 

union

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。 

案例:

union all

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文