WHERE 子句

将过滤条件放在 WHERE 子句的后面,可以筛选/过滤出我们想要的符合条件的数据

  1. SELECT * FROM 表名 WHERE 条件;

此章节以实际练习为主,代码在 DQL 目录上。条件查询是在关键字 WHERE 后加入条件判断的语句

WHERE + 关系运算符

  1. -- 查询不同部门编号的信息
  2. SELECT * FROM EMP WHERE DEPTNO = 10 ;
  3. SELECT * FROM EMP WHERE DEPTNO > 10 ;
  4. SELECT * FROM EMP WHERE DEPTNO >= 10 ;
  5. SELECT * FROM EMP WHERE DEPTNO < 10 ;
  6. SELECT * FROM EMP WHERE DEPTNO <= 10 ;
  7. SELECT * FROM EMP WHERE DEPTNO <> 10 ;
  8. SELECT * FROM EMP WHERE DEPTNO != 10 ;
  9. -- 查询中内容默认是不区分大小写,对比两个查询结果
  10. SELECT * FROM EMP WHERE JOB = 'CLERK';
  11. SELECT * FROM EMP WHERE JOB = 'clerk';
  12. -- 区分大小写查询
  13. SELECT * FROM EMP WHERE BINARY JOB = 'cleark’ ;

WHERE + 逻辑运算符

  • AND、BETWEEN ```plsql — AND (&&) 的查询结果是不包含限制值即 (值1, 值2) SELECT FROM EMP WHERE SAL > 1500 AND SAL < 3000 ; SELECT FROM EMP WHERE SAL > 1500 && SAL < 3000 ; — AND 的另一种写法

— 配合排序查询 SELECT * FROM EMP WHERE SAL > 1500 AND SAL < 3000 ORDER BY SAL ;

— BETWEEN 的查询结果是包含限制值即 [值1, 值2] SELECT * FROM EMP WHERE SAL BETWEEN 1500 AND 3000 ;

  1. - **ORIN**
  2. ```plsql
  3. -- OR (||)
  4. SELECT * FROM EMP WHERE DEPTNO = 10 OR DEPTNO = 20 ;
  5. SELECT * FROM EMP WHERE DEPTNO = 10 || DEPTNO = 20 ; -- OR 的另一种写法
  6. -- IN
  7. SELECT * FROM EMP WHERE DEPTNO IN (10, 20) ;
  8. SELECT * FROM EMP WHERE JOB IN ('MANAGER', 'CLEARK', 'ANALYST') ;

WHERE + 模糊查询

  1. SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串'
  • %,表示匹配 0 个或多个字符(任意字符)
  • _ ,表示一个字符,有点类似占位符的作用 ```plsql — % 占位符 SELECT * FROM EMP WHERE ENAME LIKE ‘%A%’ ;

— _ 占位符 SELECT * FROM EMP WHERE ENAME LIKE ‘_A%’ ;

  1. ```plsql
  2. 'a%' 以 a开头 的数据
  3. '%a' 以 a结尾 的数据
  4. '%a%' 含有a 的数据
  5. '_a_' 三位且中间字母是a的
  6. '_a' 两位且结尾字母是a的
  7. 'a_' 两位且开头字母是a的

补充

关于 NULL 的判断

  1. SELECT * FROM EMP WHERE COMM IS NULL ;
  2. SELECT * FROM EMP WHERE COMM IS NOT NULL ;

括号的使用

  1. -- 如果不加括号,AND 的优先级高于 OR ,查看添加括号后的案例结果
  2. SELECT * FROM EMP WHERE JOB = 'SALESMAN' OR JOB = 'CLERK' AND SAL>= 1500 ;
  3. SELECT * FROM EMP WHERE JOB = 'SALESMAN' OR (JOB = 'CLERK' AND SAL>= 1500) ;
  4. -- 括号的优先级最高,同时也增加语句可读性
  5. SELECT * FROM EMP WHERE (JOB = 'SALESMAN' OR JOB = 'CLERK') AND SAL>= 1500 ;