where子句用于按照筛选条件过滤结果集,输出满足筛选条件的数据,类似java中的IF语句。基本语法如下
select
查询列表
from
表名
where
筛选条件
条件筛选要求筛选条件返回是或否,那么可以
- 是单个条件表达式
- 单个模糊表达式
- 由逻辑运算符连接的、若干个条件表示式或模糊表达式构成的逻辑表达式。
其执行顺序为
- 查表。查询数据库中等于表名的数据表
- 过滤。按照筛选条件,逐行过滤数据表中的数据
- 格式化。按照查询列表的格式,输出上一步过滤的数据集。
根据筛选条件的不同,where字句可分为以下
-
按条件表达式
大于(>)、小于(<)、等于(=,注意不是java中的赋值符)、不等于(推荐标准写法是’<>‘,也支持’!=’)、大于等于(>=)、小于等于(<=)、安全等于(<=>,可判断是否是null) -
按逻辑表达式
- 逻辑运算符连接多个条件表达式,构成逻辑表达式
- 与(推荐标准写法’and‘,也支持’&&’)、或(推荐标准写法’or‘,也支持’||‘)、非(推荐标准写法’not’,也支持’!’)
-
按模糊表达式
-
通配符
%表示任意多个字符,_表示任意单个字符当目标字符包含通配符时,使用反斜杠(\)或自定义实现转义
转义的实现也可以使用 escape关键字自定义转义符,注意 escape后的字符需用引号包裹。其用法如下SELECT last_name FROM employees WHERE last_name LIKE '_#_%' ESCAPE '#' //设置'#'为转义字符 -
like
一般和通配符连用。 -
between…and…
该关键字是对 >= 和 <= 的简写方式,注意包含了临界值的情况SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120 #上下两种方式查询结果一样,但between更简洁 SELECT * FROM employees WHERE employee_id >=100 AND employee_id <=120between的取反操作,表示小于操作数1 或者 大于操作数2的数据集合,有两种方式
# not在字段前面 SELECT last_name, salary FROM employees WHERE NOT (salary BETWEEN 8000 AND 17000) //这种情况也可以不加括号,说明mysql的not的优先级低于 between...and... ORDER BY salary DESC #字段在not前面 SELECT last_name, salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC -
in
判断某字段是否属于有限集合,是 对or连接的多个等于条件表达式的简写。
有限集合内的数据类型一致或者可以类型对齐。SELECT * FROM employees WHERE job_id IN ('AD_VP','FI_MGR')//有限集合的元素是字符时,要用引号包裹,否则被识别为变量 #上下两种方式结果一样,in是简写 SELECT * FROM employees WHERE job_id = 'AD_VP' OR job_id ='FI_MGR' //or链接的两个等于条件表达式 -
is null / is not null
由于 = 和 <> 不能用于判断null值,mysql提供is null 和 is not null实现null判断。字段 is null 的功能等价于安全等于 字段 <=> null
SELECT * FROM employees WHERE commission_pct IS NOT NULL
-
本文详细介绍了MySQL中WHERE子句的使用,包括条件表达式(如大于、小于、等于等),逻辑表达式(如AND、OR、NOT)以及模糊表达式(LIKE、BETWEEN...AND...、IN、IS NULL等)。WHERE子句用于从数据表中筛选满足特定条件的记录,是SQL查询中的关键部分。例如,BETWEEN关键字用于指定范围查询,而IN则用于检查字段是否在给定的列表中。同时,IS NULL用于判断字段值是否为空。
2228

被折叠的 条评论
为什么被折叠?



