Oracle 之 过滤和排序

本文详细介绍了SQL中如何使用WHERE子句进行数据过滤,包括字符、日期、数值的比较及特殊符号的处理,并演示了BETWEEN、IN、LIKE等运算符的应用。同时,文章还讲解了如何利用ORDER BY子句进行数据排序,包括升序、降序及按多个字段排序的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过滤和排序

1.过滤

使用WHERE 子句,将不满足条件的行过滤掉。

WHERE 子句紧随 FROM 子句

例如:返回在 90号部门工作的所有员工的信息

SELECT employee_id, last_name, job_id, department_id
FROM   employees
WHERE  department_id = 90 ;

1.1 过滤条件中存在字符和日期

字符和日期要包含在单引号

字符大小写敏感,日期格式敏感

默认的日期格式是 DD-MON-RR

SELECT last_name, job_id, department_id
FROM   employees
WHERE  last_name = 'Whalen';
SELECT last_name, hire_date, department_id
FROM   employees
WHERE  hire_date = '7-6月-1994'

1.2 在过滤条件中的比较运算

SELECT last_name, salary
FROM   employees
WHERE  salary <= 3000;

其他的比较运算:

BETWEEN

使用 BETWEEN 运算来显示在一个区间内的值

SELECT last_name, salary
FROM   employees
WHERE  salary BETWEEN 2500 AND 3500;

IN

使用 IN运算显示列表中的值

SELECT employee_id, last_name, salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);

LIKE

使用 LIKE 运算选择类似的值

选择条件可以包含字符或数字:

% 代表零个或多个字符(任意个字符)

_ 代表一个字符

SELECT	first_name
FROM 	employees
WHERE	first_name LIKE 'S%';
SELECT last_name
FROM   employees
WHERE  last_name LIKE '_o%';

回避特殊符号的:使用转义符。例如:将[%]转为[\%][_]转为[\_],然后再加上[ESCAPE ‘\’] 即可。

SELECT job_id
FROM   jobs
WHERE  job_id LIKE ‘IT\_%‘ escape ‘\‘;

NULL

使用 IS (NOT) NULL 判断空值。

SELECT last_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;

 

1.3 逻辑运算

AND      OR      NOT

AND 要求并的关系为真。

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >=10000
AND    job_id LIKE '%MAN%';

 

OR 要求或关系为真。

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%';

NOT 不包含其中

SELECT last_name, job_id
FROM   employees
WHERE  job_id 
       NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');

 

2.排序

ORDER BY子句

使用 ORDER BY 子句排序

ASCascend: 升序

DESCdescend: 降序

ORDER BY 子句在SELECT语句的结尾

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date ;
SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date DESC ;

按别名排序

SELECT employee_id, last_name, salary*12 annsal
FROM   employees
ORDER BY annsal;

按department_id排序,在按salary的降序排序;

SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值