select 语句通过 where 字句来指定查询数据的条件。

语法:

  1. SELECT
  2. <列名>
  3. FROM
  4. <表名>
  5. WHERE
  6. <筛选条件>;

执行顺序:

from —-> where —->select

分类

按条件表达式筛选

条件运算符:>、<、=、!=、<>、>=、<=。

注意:=、<> 不能用于判断 null 值,is null、 is not null、<=> 可以判断 null 值。

如:

  1. SELECT
  2. salary
  3. FROM
  4. employees
  5. WHERE
  6. salary > 12000;
  7. SELECT
  8. last_name,
  9. department_id
  10. FROM
  11. employees
  12. WHERE
  13. department_id <> 90;

按逻辑运算符筛选

用于连接条件表达式。

逻辑运算符:&&、 ||、 !、 and 、or、 not。

param1 param2 && 和 and || 和 or
true true true true
false true false true
true false false true
false false false true

**

param ! 和 not
true false
false true

**
如:

  1. # 工资在 10000 和 20000 之间
  2. SELECT
  3. last_name,
  4. salary,
  5. commission_pct
  6. FROM
  7. employees
  8. WHERE
  9. salary >= 10000
  10. AND salary <= 20000;
  11. # 部门编号不在 90 到 110 之间,或者工资高于 15000 的员工信息
  12. SELECT
  13. *
  14. FROM
  15. employees
  16. WHERE
  17. ( department_id < 90 AND department_id )
  18. OR salary >= 15000;

模糊查询

关键字:like、between and 、in、is null、is not null、not。
**

关键字 特点
like 一般和通配符搭配使用,通配符:% 任意多个字符,包含 0 个字符;_ 任意单个字符。如果查询的字符中含有通配符可以使用 \ 转义。或者自定义一个转义字符如:$ ,但必须使用 escape 指定。
between and 使用 between and 可以简洁查询语句。包含两个临界值,两个临界值不能调换。
in 判断某字段的值是否属于 in 列表中的某一项。使用in 可以简查询语句,in 列表的值类型必须一致或兼容。
not 用来否定某一条件

如:

  1. # like 关键字
  2. # 查询员工名中包含字符a的员工信息
  3. SELECT
  4. *
  5. FROM
  6. employees
  7. WHERE
  8. last_name LIKE '%a%';# 查询员工名中第三个字符为n,第五个字符为l的员工民和工资
  9. SELECT
  10. last_name,
  11. salary
  12. FROM
  13. employees
  14. WHERE
  15. last_name LIKE '__n_l%';# 查询员工名以任意一个字符开头第二个字符为_的员工信息
  16. SELECT
  17. *
  18. FROM
  19. employees
  20. WHERE
  21. last_name LIKE '_\_%';
  22. # between 关键字
  23. # 查询员工编号在100到120之间的员工信息
  24. SELECT
  25. *
  26. FROM
  27. employees
  28. WHERE
  29. employee_id BETWEEN 100
  30. AND 120;
  31. # 查询员工的工种编号是IT_PROG、AD_VP、AD_PRES的员工名和工种编号
  32. SELECT
  33. last_name,
  34. job_id
  35. FROM
  36. employees
  37. WHERE
  38. job_id IN ( 'IT_PROG', 'AD_YP', 'AD_PRES' );
  39. # NOT 关键字
  40. # 查询有奖金率的员工名和奖金率
  41. SELECT
  42. last_name,
  43. commission_pct
  44. FROM
  45. employees
  46. WHERE
  47. commission_pct IS NOT NULL;