Oracle 过滤和排序数据

在查询中过滤行

  • 返回在 90号部门工作的所有员工的信息
SELECT employee_id, last_name, job_id, department_id
FROM   employees
WHERE  department_id = 90 ;
SELECT	*|{[DISTINCT] column|expression [alias],...}
FROM	table
[WHERE	condition(s)];
  • WHERE 子句紧随 FROM 子句

字符和日期

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

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

  • 默认的日期格式是 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'

比较运算

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

赋值使用 := 符号

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

其它比较运算

操作符 含义
BETWEEN ...AND... 在两个值之间 (包含边界)
IN(set) 等于值列表中的一个
LIKE 模糊查询
IS NULL 空值

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 标识符 选择‘%’和_’ 符号。

  • 回避特殊符号的:使用转义符。例如:将[%]转为[%]、[_]转为[_],然后再加上[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;

逻辑运算

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

AND

AND 要求并的关系为真。

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

OR

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');

优先级

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

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

ORDER BY子句

  • 使用 ORDER BY 子句排序

    • ASC(ascend): 升序
    • DESC(descend): 降序
  • 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;

多个列排序

  • 按照ORDER BY 列表的顺序排序。
SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;
  • 可以使用不在SELECT 列表中的列排序。

总 结

使用WHERE子句过滤数据

使用比较运算

使用 BETWEEN AND, IN, LIKENULL运算

使用逻辑运算符 AND, ORNOT

使用 ORDER BY 子句进行排序。

上一篇:mysql官方的测试数据库employees超30万的数据,安装方法介绍


下一篇:mysql之条件查询