Oracle-25-having子句&连接的定义(如多表联查)
来源:互联网 发布:在手机淘宝怎么开店 编辑:程序博客网 时间:2024/05/21 22:30
一、Having子句
1. Having子句可以对聚合函数进行限制。
比如:
SQL>select job, avg(sal) from emp group by job having avg(sal)>1500;
上述SQL子句执行思路:
(1)使用group by子句将行分组为job相同的部分,即job列数据相同的员工信息分为一组;
(2)针对上一步得到的分组数据,使用avg()函数对每组数据分别计算那个均值;
(3)使用having子句限制,即查询结果只返回平均工资大于1500部分。
简单来说:分组,计算平均值,根据having筛选出显示结果。
【注意】如果对聚合函数进行限制,必须用:having聚合函数条件,不要用where。
例1:练习having子句
解:首先查看当前登录用户下的sc表:
现在将cno相同的分为一组,计算平均值,查询结果只显示平均分大于80的课程,注意下图的SQL语句:
如果用where做会报错:
所以where和having的区别就是聚合函数条件限定必须且只能用having。
二、连接的定义
1.连接:它可以用于连接任意多个表,从多个表中检索出相应的记录。
比如要查看每个员工所属部门的名称,那么这个时候需要将员工表和部门表通过“deptno”进行连接查询。
(1)SQL>select ename, dname from emp,dept
2 where emp.deotno = dept.deptno;
(2)SQL>select ename, dname from emp join dept on
2 emp.deptno =dept.deptno;
查询方式(1)是平常使用的SQL连接查询操作;查询方式(2)语法方式为SQL/92标准查询。
2.连接语句的基本语法格式:
(1)常用语句:
select 表1.列名,表2.列名 from 表1,表2 where 表1.列名1 join_operator 表2.列名2;
(join_operator前后为两张表有关联的列,如上面的deptno列)
(2)SQL/92标准语法:
select 表1.列名,表2.列名 from 表1 join_type 表2 on 表1.列名1 join_operator 表2.列名2 where子句;
(join_operator前后为两张表有关联的列,如上面的deptno列)
例2:练习多表联查
解:首先在当前登录用户下存在三个表:
(1)student表:
(2)sc表:
(3)course表:
现在查询每个学生中文名称所选修的课程,即(1)与(2)通过sno连接,可以查到每个学生选修课程的课程编号cno,如(1)表中张三学号s001,拿着s001去查(2)表,得到张三选了c001课程;然后(2)与(3)通过cno连接,可以查到每个学生选修课程的名称,如张三选了c001课程,拿着c001得到张三选的是J2SE课程,注意下图中的SQL语句:
其中a,b,c是三张表的别名。
【总结】
如果n表联查,那么where子句中的条件必须是n-1个条件,比如
上面3表联查,那么where子句中就有2个条件
例3:基于例2中的student,sc两张表,查询每个学生选修课程的成绩。
解:比如查询张三,只要在student表中获取其学号sno=’s001’,然后用s001去查sc表,即可得到张三的分数。
- Oracle-25-having子句&连接的定义(如多表联查)
- Oracle数据库:左右连接、自然连接、交叉连接、统计函数以及分组查询(having子句)
- oracle中having子句的使用
- 【技术支持】Oracle plsql中的having子句并非都能改写成where子句。having子句的适用场景。
- 在oracle中where 子句和having子句的区别
- Oracle HAVING子句
- Oracle HAVING子句
- oracle中的having子句
- having子句的作用
- having子句的用法
- oracle 之where子句和having子句
- HAVING子句与WHERE子句的区别
- where子句与having子句的区别
- 【having子句】在oracle中where 子句和having子句中的区别
- 使用 HAVING 子句选择行 ORACLE
- Oracle Having子句中使用子查询
- Oracle中where子句和having子句中的区别
- 在oracle中where 子句和having子句中的区别
- KMP算法
- 【hdu 1175】 连连看 题解 (c++)
- 坑爹的radio 多次操作 赋值无效 得使用 prop("checked", true);
- UITextView添加占位符
- NYOJ---1241 - Distribution
- Oracle-25-having子句&连接的定义(如多表联查)
- 1013
- Redis内存使用优化与存储
- 希尔排序
- 哈夫曼树(POJ3253)
- 1.2.4 Linux的开发:虚拟团队的产生
- leetcode - Contains Duplicate
- [C语言][LeetCode][142]Linked List Cycle II
- Win7免安装Mysql 5.6.24版本