oracle基础 第六篇 查询sql 之过滤和排序

过滤:

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

select * from  表名 where + 条件;
select 字段1、字段2。。。。。。from 表名 where + 条件;

例如:

SELECT
	employee_id,
	last_name,
	job_id,
	salary
FROM
	employees
WHERE
	salary = '3000';

字符和日期:

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

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

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

(后面讲函数写法就不一样了,会用到to_date,to_char函数)

 

例如:

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

比较运算:

操作符含义
=等于(不是==)
>大于
>=大于、等于
<小于
<=小于、等于
<>不等于(也可以是!=)

 

 

 

 

 

 

 

 

例如:

SELECT
	employee_id,
	last_name,
	hire_date,
	department_id,
  salary
FROM
	employees
WHERE
	salary>1000 and salary<6000;

其它比较运算:

操作符含义
between.....and在两个值之间(包含边界)
in(set)等于值列表中的一个
like模糊查询
is null空值

 

 

 

 

 

 

BETWEEN:

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

例如:

SELECT
	employee_id,
	last_name,
	hire_date,
	department_id,
  salary
FROM
	employees
WHERE
	salary between 7000 and 10000;

 

IN:

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

例如:

SELECT
	employee_id,
	last_name,
	hire_date,
	department_id,
  salary
FROM
	employees
WHERE
	department_id in(70,80,90);

 

LIKE:

使用 LIKE 运算选择类似的值

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

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

_ 代表一个字符(占位用的)。

‘%’和‘-’可以同时使用。

 

例如:

员工里名字中含有a的的员工有哪些:

SELECT
	employee_id,
	last_name,
	hire_date,
	department_id,
  salary
FROM
	employees
WHERE
	last_name like '%a%';



员工里名字中末位含有a的的员工有哪些:

SELECT
	employee_id,
	last_name,
	hire_date,
	department_id,
  salary
FROM
	employees
WHERE
	last_name like '%a';

员工里名字中开头含有a的的员工有哪些:

SELECT
	employee_id,
	last_name,
	hire_date,
	department_id,
  salary
FROM
	employees
WHERE
	last_name like 'a%';


员工里名字中第三位是字符a的员工有哪些:

SELECT
	employee_id,
	last_name,
	hire_date,
	department_id,
  salary
FROM
	employees
WHERE
	last_name like '__a%';

 

可以使用 ESCAPE 标识符 选择‘%’和 ‘_’ 符号。

回避特殊符号的:使用转义符

例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE ‘\’] 即可。其中的“ \ ”可以用“#”代替。

例如:

员工里名字中含有_的员工有哪些:

SELECT

	last_name
	
FROM
	employees
WHERE
	last_name like '%\_%' escape '\';

NULL:

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

例如:

SELECT
	last_name
FROM
	employees
WHERE
	commission_pct IS NULL;
SELECT
	last_name
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

逻辑运算:

操作符含义     
AND逻辑并
OR逻辑或
NOT逻辑否

 

 

 

 

 

AND 要求并的关系为真。

OR 要求或关系为真。

例如:

SELECT
	last_name,
	department_id,
	commission_pct,
	salary
FROM
	employees
WHERE
	department_id = 80
AND salary < 8000;

优先级:

   优先级      
 1 算术运算符
 2 连接符
 3 比较符  
 4  IS [NOT] NULL, LIKE, [NOT] IN   
 5 [NOT] BETWEEN
 6 NOT
 7  AND
 8  OR

 

 

 

 

 

 

 

 

 

可以使用括号改变优先级顺序

 

ORDER BY子句:

ASC(ascend): 升序

DESC(descend): 降序

ORDER BY 子句在SELECT语句的结尾。

 

例如:

降序排序:

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

 

按别名排序:

SELECT
	last_name,
	department_id,
	commission_pct,
	salary,
  salary * 12 年薪
FROM
	employees
ORDER BY
	年薪 DESC;

 

多个列排序:

SELECT
	last_name,
	department_id,
	commission_pct,
	salary
FROM
	employees
ORDER BY
	salary ASC,
	department_id ASC,
	last_name ASC;

 

参考来自尚硅谷视频

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风而行无疾而歌

看官,觉得不错,奖励一下呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值