专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle SQL基础课程,条件查询实例,案例操作,数据分析必备技能

ins518 2024-11-04 13:54:39 技术文章 10 ℃ 0 评论

Oracle 条件查询2

限定查询----使用NOT对条件整体取反 and or

查询工资不大于10000并且不能领取奖金的雇员


差集

Minus

取两个集合的差集,A集合中存在,B集合中不存在的数据

(取A集 合中B集合不存在的数据) 去重

select deptno,ename from emp where deptno in (20,30)

minus

select deptno,ename from emp where deptno in (20,10);


逻辑运算符的优先顺序

NOT>AND>OR


限定查询----BETWEEN...AND...的使用

查询基本工资大于等于10000并且小于等于15000的雇员

查询1991年雇佣的所有员工


限定查询----字符串的比较

查询姓名为王雨晨员工的所有信息


限定查询----IN、NOT IN的使用

查询出雇员编号是137,158,190的雇员的具体信息


查询出雇员编号不是137,158,190的雇员的具体信息


限定查询----LIKE 的使用

查询雇员的名字第二个字符是 '雨' 的雇员信息


说明:_ 匹配一个字符,%匹配0个或多个字符


LIKE 匹配日期

查询2013年入职的所有雇员的信息


LIKE 匹配数字

查询工资中包含8 的雇员信息


对结果排序----ORDER BY

带有ORDER BY 子句的SQL语句基本格式

SELECT 列... FROM 表 WHERE 条件 ORDER BY 列

查询员工工资大于10000的信息,按工资排序

查询工资大于1500员工的信息,按工资降序,按雇佣日期升序排序

说明:

ASC升序,DESC降序,默认ASC


#order by中使用别名

#order by中使用列号 列号必须是select子句中已经选择的列的顺序号


--NOT 取反

--查询工资不大于10000--并且不能领取奖金的雇员

SELECT empno,ename,sal,comm,age

FROM bank_emp

WHERE NOT (sal>10000 OR comm IS NOT NULL)


--差集

--Minus

--取两个集合的差集,A集合中存在,B集合中不存在的数据

--(取A集 合中B集合不存在的数据) 去重

---20,30 A结果集


SELECT empno,ename,deptno FROM bank_emp WHERE deptno = 20 OR deptno =30 --509

--- 20 B结果集

MINUS ---作差集,A集合中存在,B集合中不存在的数据

SELECT empno,ename,deptno FROM bank_emp WHERE deptno = 20 --446


SELECT 509 - 446 FROM dual; --63


---注意,交集,并集,差集,两个结果集的查询字段要一致


--限定查询----BETWEEN...AND...的使用 区间

--查询基本工资大于等于10000并且小于等于15000的雇员

SELECT empno,ename,sal FROM bank_emp WHERE sal>=10000 AND sal<=15000;

SELECT empno,ename,sal FROM bank_emp WHERE sal BETWEEN 10000 AND 15000;

--查询2013年雇佣的所有员工

SELECT empno,ename,sal,hiredate FROM bank_emp

WHERE hiredate

BETWEEN to_date('2013/1/1','yyyy/mm/dd')

AND to_date('2013/12/31','yyyy/mm/dd')


--限定查询----字符串的比较

--查询姓名为王雨晨员工的所有信息

SELECT * FROM bank_emp WHERE ename = '王雨晨' --如果是字母的话,区分大小写

SELECT * FROM emp WHERE ename = 'SMITH'


--限定查询----IN、NOT IN的使用

--查询出雇员编号是137,158,190的雇员的具体信息

SELECT * FROM BANK_EMP WHERE empno = 137 OR empno = 158 OR empno=190;

SELECT * FROM bank_emp WHERE empno IN (137,158,190)


--查询出雇员编号不是137,158,190的雇员的具体信息

SELECT * FROM bank_emp WHERE empno NOT IN (137,158,190)


--限定查询----LIKE 的使用

--查询雇员的名字第二个字符是 '雨' 的雇员信息

SELECT empno,ename FROM bank_emp

WHERE ename LIKE '_雨%'


--LIKE 匹配日期

--查询2013年入职的所有雇员的信息

SELECT empno,ename,hiredate FROM bank_emp

WHERE to_char(hiredate,'yyyy-mm-dd') LIKE '%2013%' --to_char将日期转换为字符串

--LIKE 匹配数字

--查询工资中包含8 的雇员信息

SELECT empno,ename,sal FROM bank_emp

WHERE sal LIKE '%8%'


--查询员工工资大于10000的信息,按工资排序

SELECT empno,ename,sal FROM bank_emp WHERE sal>10000

ORDER BY sal ASC ---默认是升序 asc

SELECT empno,ename,sal FROM bank_emp WHERE sal>10000

ORDER BY sal DESC --DESC降序

--查询工资大于1500员工的信息,按工资降序,按雇佣日期升序排序

SELECT empno,ename,sal,hiredate de FROM bank_emp WHERE sal>10000

ORDER BY sal DESC,de ASC --可以使用别名排序

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表