Oracle-DQL-查询语言
目录
文章目录
内容
1、基本查询
-
格式:
SELECT 字段 FROM 表 [WHERE 条件] [GROUP BY 字段[HAVING 条件]] [ORDER BY 字段 ASC/DESC]
-
优先级
FROM 子句> WHERE 子句> GROUP BY 子句> HAVING 子句> SELECT 子句> ORDER BY 子句
2、FROM
FROM 子句 后面跟表或者查询集,表示从哪里查询数据。
为了保证语句的完整性,在测试语句用一般会用DUAL表,也称为虚表。只是为了保证语句的完整性,表本身没有任何数据。
2、WHERE
WHERE 子句 后面跟条件,表示要过滤掉那些数据。条件可以包含运算符,模糊查询,范围。
2.1、运算符
- 算术运算符:+ - * /
- 比较运算符:> < >= <= = <> !=
- 逻辑运算符:and or not
2.2、模糊查询
like not like 用于字符串的模糊查找。
- 通配符:
- _:任意一个字符
- %:任意多个字符
- 示例:
-
显示名字包含’ll’的员工姓名,工资
SELECT ENAME, SAL FROM EMP WHERE ENAME LIKE '%ll%';
-
显示名字第二个字母为a的员工的姓名和工资
SELECT ENAME, SAL FROM EMP WHERE ENAME LIKE '_a%';
-
2.3、范围查询
- IN:判断值是否在集合中
- EXIST:判断值是否在集合中
- SOME :判断值是否为集合中某一个
- ANY :判断值是否大于集合中的某一个或者小于集合中的某一个
- ALL:判断值是否大于集合中的所有元素或者小于集合中的所有元素
- BETWEEN 值1 AND 值2 :判断值是否在值1和值2范围内
详细使用见本人写的博文’Oracle- in exists some any all 辨析’。
3、GROUP BY
用于分组查询。比如查询emp表的时候,想看下各个部门都有多少人,都是那些人,通常和聚合函数一起使用。
- 解析:
- 分组之后,不在有单独属性,只有组属性和用于分组的属性。
- 组属性包括,数量,总和,最大值,最小值,平均值。
3.1、聚合函数使用
-
查询各个部门人数,最高工资,最低工资,平均工资及工资总和。
SELECT DEPTNO, MAX(SAL), MIN(SAL), AVG(SAL), SUM(SAL) FROM EMP GROUP BY DEPTNO;
4、HAVING
用于分组之后的条件判断。
-
WHERE 和 HAVING 比较
- WHERE用于对表中的原有数据做过滤,HAVING用于对分组数据做过滤
- WHERE执行优先于HAVING
- HAVING必须跟在GROUP BY之后执行
-
查询最低工资低于2000的部门的员工姓名和工资
SELECT ENAME, SAL WHERE DEPTNO IN ( SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING MIN(SAL) < 2000 );
SELECT
用于展示信息,一般为字段信息或者字段为基础的操作。
5、ORDER BY
排序,后面跟排序字段,多个排序字段’,'隔开,表示先以第一个条件排序,在以第二条件排序。。。
-
ASC:正序,默认可以不写。
-
DESC:倒序
-
示例:显示所有员工的姓名、入职的年份和月份,若入职日期所在的月份排序,若月份相同则按入职的年份排序
SELECT ENAME, TO_CHAR(HIREDATE, 'yyyy'), TO_CHAR(HIREDATE, 'mm') FROM EMP ORDER BY TO_NUMBER(TO_CHAR(HIREDATE, 'yyyy')), TO_NUMBER(TO_CHAR(HIREDATE, 'mm'));
后记 :
所有数据库测试如果没有明确指定,都是基于scott用户下默认4个表。
本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785。
前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA