第四章、Oracle高级查询2
学习目标
4.1、模糊查询LIKE
- 查询时,字段内容并不一定与查询内容完全匹配,只要字段含有这些内容就行。
#查询以李姓开头的员工信息 select * from emp where ename like '李%';
4.2、模糊查询BETWEEN-AND
- 把某一字段中内容在特定范围内的记录查询出来。
#查询年龄在18到20之间的员工信息(包括18和20) select * from emp where age between 18 and 20; #等同于in查询 select * from emp where age in (18,19,20); #还可以是or查询 select * from emp where age=18 or age=19 or age=20;
- 例如查询学生成绩在60到80之间的学生ID
4.3、模糊查询IN
- 把某一字段中内容与所列出的查询内容列表匹配的记录查询出来。
#查询员工年龄在18或者20或者22的员工信息 select * from emp where age in (18,20,22); #等同于OR查询 select * from emp where age=18 or age=20 or age=22;
- 例如查询地址在北京或者广州或者上海的学生姓名:
4.4、分组查询GROUP BY
- 单列分组查询
如下图分析:
要将每一门课学生成绩去平均值:
select CourseID,avg(Score) 课程平均成绩 from Score group by CourseID;
- 多列分组查询
分析如下:
小贴士:
如果使用group by进行分组查询,那么在select后的查询字段,除了使用聚合函数外的字段,其他字段要么放到group by后边,要么也使用聚合函数,要么就不查询这个字段,否则会不符合分组查询规范。
- 案例分析
- 为了防止StudentID和CourseID的组合出现重复,需要对StudentID和CourseID都进行分组
查询结果:
- 在以上统计内部测试成绩的基础上,如果只想查看补考同学的成绩
- 需要增加附加条件,也就是再上上图没分组的情况下,进行分组,并且要求CourseID出现一次以上(或者说成绩有一个以上),说明是有补考成绩,也就是补考的同学
小贴士:
此处的HAVING是对查询结果进行条件过滤,group by后不可以使用where条件语句,只可用having。
4.4.1、分组查询对比
- where字句
从数据源中去掉不符合其搜索条件的数据,数据源也可以简单理解为要查询的数据表。 - group by字句
搜集数据行到各个组中,统计函数为各个组计算统计值。 - having字句
去掉不符合其组搜索条件的各族数据行 - 三者使用顺序
4.6、多表连接查询
- 以表emp2为例
- 内连接(INNER JOIN)
--内连接 select empno,ename,dname from emp2 e inner join dept d on(e.deptno=d.deptno); --等同于内连接 select empno,ename,dname from emp2 e,dept d where e.deptno=d.deptno;
- 外连接
- 左外连接(LEFT JOIN)
--左外连接(以左表为基准表)select empno,ename,dname from emp2 e left join dept d on(e.deptno=d.deptno);
红框中的zs员工信息部门编号为空,所以没有与之对应的部门名称,然后在左外连接中显示了zs的编号和姓名,就是因为左外连接的机制是以左表emp2为基准表做查询的。
- 右外连接(RIGHT JOIN)
--右外连接(以右表为基准表) select empno,ename,dname from emp2 e right join dept d on(e.deptno=d.deptno);
在查询结果中的最右列的最后一行,OPERATIONS部门没有对应的员工(在emp2表中可以看到),然后这一行却显示了,就是因为右外连接是以右表dept为基准表做的查询。
总结:
可以理解为就是以哪个表为基准表,在外连接查询结果中,基础表中的数据即使没有外键关联,也会被查询出来!!!
4.7、额外知识点补充
(+)作用为取反表为基准表
--((+)加在右表,表示以左表为基准表)
--((+)加在左表,表示以右表为基准表)
select empno,ename,dname from emp2 e,dept d where e.deptno=d.deptno(+);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/189497.html