美文网首页
数据库基础06分组、关联查询

数据库基础06分组、关联查询

作者: Andy_Lxh | 来源:发表于2018-11-24 16:26 被阅读0次

分组

  • 分组查询

示例:按部门编号进行分组,查询出各个部门的平均工资
SELECT DEPTNO,FLOOR(AVG(SALARY)) AS AVG_SAL 
FROM EMP GROUP BY DEPTNO;
  • HAVING 句子

HAVING子句用来对分组后的结果进一步限制,比如按部门分组后,得到每个部门的最高薪水,可以继续限制输出结果。必须跟在GROUP BY 后面,不能单独存在。

示例:查询每个部门的最高薪水,只有最高薪水大于4000的记录才会被输出显示
SELECT DEPTNO,MAN(SAL)MAN_SAL FROM EMP
GROUP BY DEPTNO HAVING MAN(SAL)>4000;
查询出10号部门的平均工资(GROUP BY 子句后面不能直接跟WHERE子句)
SELECT DEPTNO,AVG(SALARY) AS AVG_SAL 
FROM EMP GROUP BY DEPTNO WHERE DEPTNO=10; //会报错
SELECT DEPTNO,AVG(SALARY) AS AVG_SAL 
FROM EMP GROUP BY DEPTNO HAVING DEPTNO=10;//执行通过

关联查询

  • 内连接

内连接返回两个关联表中所有满足连接条件的记录。

示例:查询员工的名字和所在部门的名字
SELECT T1.ENAME,T2.DNAME
FROM EMP T1,DEPT T2
WHERE T1.DEPTNO = T2.DEPTNO;
或者
SELECT T1.ENAME,T2.DNAME
FROM EMP T1 JOIN DEPT T2
ON (T1.DEPTNO = T2.DEPTNO);
  • 内连接

示例:查询出所有员工的工号,姓名,所在城市将员工表和部门表进行连接,需要设置连接条件 (T1.DEPTNO=T2.ID) 连接数据表使用JOIN关键字

内连接(使用JOIN)

SELECT T1.ID,T1.NAME,T2.LOC 
FROM EMP T1 JOIN DEPT T2 
ON T1.DEPTNO=T2.ID;

内连接(不使用JOIN)

SELECT T1.ID,T1.NAME,T2.LOC 
FROM EMP T1,DEPT T2 
WHERE T1.DEPTNO=T2.ID;
  • 左连接(LEFT JOIN)

SELECT T1.ID,T1.NAME,T2.LOC 
FROM EMP T1 LEFT JOIN DEPT T2 
ON T1.DEPTNO=T2.ID;
  • 右连接(RIGHT JOIN)

SELECT T1.ID,T1.NAME,T2.LOC 
FROM EMP T1 RIGHT JOIN DEPT T2 
ON T1.DEPTNO=T2.ID;
  • 全外链接(FULL OUTER JOIN)

SELECT T1.ID,T1.NAME,T2.LOC 
FROM EMP T1 FULL OUTER JOIN DEPT T2 
ON T1.DEPTNO=T2.ID;
  • 自连接

自连接是一种特殊的连接查询,数据的来源是一个表,即关联关系来自于表单中的多个列。表中的列参照同一个表中的其他列的情况称作自参照表。
自连接是通过将表用别名虚拟成两个表的方式实现,可以是等值或不等值连接。

示例:查出每个职员的经理名字,以及他们的职员编码
SELECT T1.EMPNO W_EMPNO,T1.ENAME W_ENAME,
T2.EMPNO M_EMPNO,T2.ENAME M_ENAME
FROM EMP T1 JOIN EMP T2
ON T1.MGR = T2.EMPNO;

相关文章

  • 数据库基础06分组、关联查询

    分组 分组查询 示例:按部门编号进行分组,查询出各个部门的平均工资 HAVING 句子 HAVING子句用来对分组...

  • 测试中基础sql语句应用实例一:增删改

    -“熟悉数据库就是会增删改查吗?”-“还应包括:多表关联查询、分组查询、统计查询、常用函数、运维技巧。” 目前的测...

  • MySQL03

    DQL查询语句 分页查询 分组函数 分组查询 子查询 多表连接查询 1、分页查询 当数据库中数据过多时,不能一次全...

  • 数据库笔记-SQL子查询

    子查询:关联查询和非关联查询 子查询是「查询」中的「查询」,就是「嵌套查询」。 以 NBA 的SQL数据库文件为例...

  • MySQL查询语句

    目录 一、查询准备 二、条件查询 三、排序 四、聚合函数 五、分组 六、分页 七、连接查询 八、自关联 九、子查询...

  • thinkphp5.0 学习目录结构

    基础 请求 和 响应 URL请求 和 路由 模型 和 关联 数据库 查询语言 视图和模板 调试和日志 api 接...

  • mybatis高级映射——(延迟加载)

    一.什么是延迟加载 延迟加载:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查...

  • 02-MySQL(下)

    一、数据库操作 3.DQL 3.7分组查询 group by:分组查询 将字段中相同值归为一组having:...

  • Mysql学习之二 Mysql概念及安装

    一、程序员的数据库要求 基本的SQL操作、CRUD操作 多表连接查询、分组查询和子查询。 常用数据库的的单行函数。...

  • SQL之DQL

    DQL用于从数据库查询数据,并不会修改数据 基本查询 条件控制 查询排序 分组查询 limit限制 一.基本查询 ...

网友评论

      本文标题:数据库基础06分组、关联查询

      本文链接:https://www.haomeiwen.com/subject/zfhyqqtx.html