Mysql基础——where 过滤数据

本文详细介绍了MySQL中WHERE子句的使用,包括如何过滤数据、操作符的应用、条件组合以及如何与JOIN语句配合。通过实例解析,帮助读者深入理解WHERE在SQL查询中的核心作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


单引号用来限定字符串,如果值与串类型的列进行比较,需要限定引号,如果值与数值列比较,不需要引号。

不匹配过滤的操作,并不能过滤出含有 NULL 的值,因为 NULL 含有特殊意义。

AND 子句的优先级高于 or,在没用括号明确分组的情况下,先执行AND,在执行 or。也可以理解为括号的优先级大于 and.


where 过滤数据
作用:指定条件,选出特定的数据
格式:select 列名 from 表名 where 条件
> select id from tb1 where id > 15;                
> select id from tb1 where id = 1;
> select name from tb1 where name = 'laowang';    
> select name from tb1 where id <> 1;
     =     等于
<>    不等于
!=    不等于
>     大于
>=    大于等于
<     小于
<=    小于等于
BETWEEN    在指定的两个值之间

子句 between
作用:在一个范围内抓出数据库中的值
格式:select 栏位 from 表格 where 栏位 between .. and ..
> select * from tb1 where id between 1 and 5;
> select * from tb1 where data between 'Jan-06-2016' and 'Jan-10-2016';
  • 不同的数据库,日期存储的方法可能不同。between 特别适合找出特定时间段内的数据

空值过滤 NULL
作用:过滤出无值的列,no value , NULL 和 0、空字符串、空格 不一样
> SELECT id FROM tb1 WHERE id is NULL;


逻辑操作符 and or
格式: select 列 from 表名 where 条件 and/or 条件
> select id from tb1 where name = 'wangbin' and id = 1;
> select id from tb1 where name = 'wangbin' or name = 'wangdaye';

> select * from tb1 where name = 'wangbin' or id = 4 and name = 'laowang'
该语句理解为 id=4 并且 name=laowang 的数据或者 name=wangbin 的行
 
> select id from tb1 where name = 'wangbin' or (name = 'wangdaye' and id = 1);
理解为 name=wangdaye 并且 id=1 的数据,或者 name=wangbin 的数据

> select * from products where (id = 1002 or id = 1002) and price >= 10;
理解为 id=1002 或者 id=1003 的并且价格大于等于 10 的数据

 in 操作符
作用:指定条件范围,匹配每个条件
格式:select 列 from 表名 where 列 in (1,2,3)
> select * from tb1 where id in (1,2);
> select * from tb1 where name in ('gebi','laowang');
> select id from tb1 where name in ('gebi','laowang'); 括号内只有一个条件,就相当于 where name = 'gebi'
 in 的功能类似 or,但是比 or 语法更简洁,能包含其他 select 语句。

 NOT 操作符
作用:否定后面跟的所有条件
格式:select 列 from 表 where .. NOT 
> select * from tb1 where not id = 1;
> select * from tb1 where id not in (1,2);
not 操作符配合 IN 一起用,方便找出不匹配的行。NOT 还可以配合 between 和 exists 子句。

SQL 过滤和应用过滤,数据也可以在应用层过滤,为此 SELECT 语句为客户机应用检索出超过实际所需的数据,然后和客户机代码对返回数据进行循环,以提取出需要的行。通常实际操作会影响性能,所以需要对数据库进行优化,以便快速有效对数据进行过滤。另外,如果在客户机上过滤数据,服务器不得不通过网络发送多余的数据,导致网络带宽浪费。
 
在过滤不具有特定值的行时,并不返回含有 NULL 的值的行,切记一定要验证返回数据中过滤出了具有 NULL 的行。                                                                                                        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值