Mysql基础(4)条件查询(where子句)

本文详细介绍了MySQL中WHERE子句的使用,包括条件表达式(如大于、小于、等于等),逻辑表达式(如AND、OR、NOT)以及模糊表达式(LIKE、BETWEEN...AND...、IN、IS NULL等)。WHERE子句用于从数据表中筛选满足特定条件的记录,是SQL查询中的关键部分。例如,BETWEEN关键字用于指定范围查询,而IN则用于检查字段是否在给定的列表中。同时,IS NULL用于判断字段值是否为空。

where子句用于按照筛选条件过滤结果集,输出满足筛选条件的数据,类似java中的IF语句。基本语法如下

select
	查询列表
from
	表名
where
	筛选条件

条件筛选要求筛选条件返回是或否,那么可以

  • 是单个条件表达式
  • 单个模糊表达式
  • 由逻辑运算符连接的、若干个条件表示式或模糊表达式构成的逻辑表达式。

其执行顺序为

  1. 查表。查询数据库中等于表名的数据表
  2. 过滤。按照筛选条件,逐行过滤数据表中的数据
  3. 格式化。按照查询列表的格式,输出上一步过滤的数据集。

根据筛选条件的不同,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 <=120
      

      between的取反操作,表示小于操作数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
      
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值