Oracle笔记03——Oracle操作符和运算符

一、选择限定数据行

语法
SELECT [DISTINCT] {* | 列名...} FROM 表名 WHERE 条件表达式;

 

二、比较操作符

(1)=:等于
(2)>:大于
(3)>=:大于或等于
(4)<:小于
(5)<=:小于或等于
(6)<>:不等于

 

三、使用WHERE字句

1.比较数值型数据

2.比较字符类型数据

注意:

(1)使用单引号‘ ’括起来
(2)区分大小写

3.比较日期类型数据

注意:

(1)使用单引号' '括起来
(2)默认日期格式为:DD-MON-RR

 

四、特殊比较运算符

(1)BETWEEN...AND...

判断要比较的值是否在某个范围内

(2)IN(集合列表)

判断要比较的值是否和集合列表中的任何一个值相等

(3)LIKE

判断要比较的值是否满足部分匹配


其中,%:匹配零个或多个字符;_:匹配一个任意的字符;
注意:当需要查询的字段里面包含"_"时,可以这样写:

SELECT 字段1,字段2,字段3... FROM 表名 WHERE 字段 LIKE '@_' ESCAPE '@';

(4)IS NULL

判断要比较的值是否为空值

 

五、逻辑运算符

(1)AND

要求两个都为真时,结果才为真

(2)OR

只要有一个为真,结果就为真

(3)NOT

结果取反
注意NOT运算符可以和BETWEEN...AND...INLIKEIS NULL一起使用

 

六、逻辑运算符的优先级

优先级 运算分类 运算符举例
1 算术运算符 +,-,*,\
2 连接运算符 ||
3 比较运算符 <,>,<=,>=,=,<>
4 特殊比较运算符 BETWEEN...AND...,IN,LIKE,IS NULL
5 逻辑非 NOT
6 逻辑与 AND
7 逻辑或 OR

 

 

七、ORDER BY

1.语法:

SELECT [DISTINCT] {* | 列名...} FROM 表名 WHERE 条件 ORDER BY {[列名...] | [列别名...] | [结果集列序号...] } [ASC(升序) | DESC(降序)];

2.排序规则(以升序为例):

(1)数值类型:数字升序排列,小值在前,大值在后。
(2)日期类型:日期升序排列,较早的日期在前,较后的日期在后。
(3)字符类型:字符升序排列,字母由A-Z排列,中文按照字典顺序排列。
(4)空值类型:空值升序排列,排列在最后。

3.注意:

不推荐按照结果集序列排序

 

八、练习

--一、普通比较运算符
--1.查询部门编号为10的员工信息
SELECT * FROM emp WHERE deptno = 10;--比较数值型数据

--2.查询职位为“SALESMAN”的职工信息
SELECT * FROM emp WHERE job = 'SALESMAN';--比较字符类型数据
SELECT * FROM emp WHERE job = 'salesman';--注意:1.使用单引号‘ ’括起来 2.区分大小写

--3.查询入职日期为“1980/12/17”的员工信息
SELECT * FROM emp WHERE hiredate = '17-12月-80';--比较日期类型数据,注意:1.使用单引号' '括起来 2.默认日期格式为:DD-MON-RR
--4.查询入职日期不为“1980/12/17”的员工信息
SELECT * FROM emp WHERE hiredate <> '17-12月-80';

--二、特殊比较运算符
--1.查询薪资在800-1000之间的员工信息(BETWEEN...AND..运算符)
SELECT * FROM emp WHERE sal BETWEEN 800 AND 1000;--包括区间值
--相当于
SELECT * FROM emp WHERE sal >= 800 and sal <= 1000;

--2.查询82年入职的员工信息
SELECT * FROM emp WHERE hiredate BETWEEN '1-1月-82' AND '31-12月-82';--BETWEEN...AND...

--3.查询部门编号为10或者30的员工信息
SELECT * FROM emp WHERE deptno IN(10,30);--IN

--4.查询员工姓名以“A”开头的员工信息
SELECT * FROM emp WHERE ename LIKE 'A%';--LIKE
--5.查询员工姓名以“S”结尾的员工信息
SELECT * FROM emp WHERE ename LIKE '%S';--LIKE
--6.查询员工姓名第三个字符为“A”的员工信息
SELECT * FROM emp WHERE ename LIKE '__A%';--LIKE
--7.查询员工姓名以“AB_”开头的员工信息
SELECT * FROM emp WHERE ename LIKE 'AB@_%' ESCAPE '@';--LIKE

--8.查询没有奖金的员工信息
SELECT * FROM emp WHERE comm IS NULL;--IS NULL

--三、逻辑运算符
--1.查询职位为CLERK,并且薪水大于1000的员工信息
SELECT * FROM emp WHERE job = 'CLERK' AND sal > 1000;--AND
--2.查询职位为CLERK,或者薪水大于1000的员工信息
SELECT * FROM emp WHERE job = 'CLERK' OR sal > 1000;--OR
--3.查询部门编号不在10或者30的员工信息
SELECT * FROM emp WHERE deptno NOT IN(10,30);--NOT
--4.查询奖金不为空的员工信息
SELECT * FROM emp WHERE comm IS NOT NULL;--NOT

--四、逻辑运算符的优先级
--1.查询职位为CLERK或者MANAGER,同时薪水大于1000的员工信息
SELECT * FROM emp WHERE job = 'CLERK' OR job = 'MANAGER' AND sal > 1000;--不能满足题意;此处先判断AND,再判断OR,也就是:查询职位为“MANAGER”且薪水大于1000,或者职位为“CLERK”的员工信息
SELECT * FROM emp WHERE (job = 'CLERK' OR job = 'MANAGER') AND sal > 1000;

--五、ORDER BY
--1.查询所有员工信息,并按薪水的升序排序
SELECT * FROM emp ORDER BY sal;--默认为升序ASC,数值类型
--2.查询所有员工信息,并按入职日期降序排序
SELECT * FROM emp ORDER BY hiredate DESC;--日期类型
--3.查询所有员工信息,并按入职日期降序和工资升序排列
SELECT * FROM emp ORDER BY hiredate DESC,sal ASC;--多列排序
--4.查询员工表中的员工姓名、部门编号、薪水、年薪(薪水*12),并按年薪降序排序
SELECT ename,deptno,sal,sal*12 FROM emp ORDER BY sal*12;
--也可以写成:
SELECT ename,deptno,sal,sal*12 AS 年薪 FROM emp ORDER BY 年薪;--按列别名排序

--5.查询所有员工信息,并按第七列降序排序
SELECT * FROM emp ORDER BY 7;--按结果集列序号排序,空值类型

 

posted @ 2021-10-01 21:04  `青红造了个白`  阅读(391)  评论(0编辑  收藏  举报