过滤:
使用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;
参考来自尚硅谷视频