高级数据过滤 ?! —— 其实就是 AND,OR,IN,NOT 的用法
1. AND 的用法
AND 操作符表示同时满足,用来连接两个或多个需要同时满足的表达式
例如:选出 vend_id = ‘DLL01’ 并且 prod_price <= 4 的数据。
代码示例:
select prod_id, prod_price,prod_name
from Products
where vend_id = 'DLL01' and prod_price <= 4;
2. OR 的用法
OR 操作符用来表示在多项条件中只需满足一项的条件筛选。
例如:选出 vend_id = ‘DLL01’ 或者 vend_id = ‘BRS01’ 的数据
代码示例:
select prod_id, prod_price,prod_name
from Products
where vend_id = 'DLL01' or vend_id = 'BRS01';
3. AND 和 OR 的执行优先级问题
—— 又名 注意使用圆括号分组操作符
AND 操作符具有比 OR 操作符更高的优先级。因此,我们在 AND 和 OR 运算符组合使用时,要注意使用圆括号明确分组操作符操作的表达式。(圆括号具有更高的优先级,而且使用圆括号后能减少造成歧义)
例如:选出vend_id = ‘DLL01’ 或者 vend_id = ‘BRS01’ 生产的所有 prod_price <= 4 的数据
代码示例:
错误写法×:
select prod_id, prod_price,prod_name
from Products
where vend_id = 'DLL01' or vend_id = 'BRS01' and prod_price <= 4;
运行结果截图:
解释:
因为 and 的优先级更高,因此筛选出的是 vend_id = ‘BRS01’ 条件下prod_price <= 4的数据 以及 vend_id = ‘DLL01’ 的数据
正确写法√:
使用 ()明确分组操作符
select prod_id, prod_price,prod_name
from Products
where (vend_id = 'DLL01' or vend_id = 'BRS01') and prod_price <= 4;
4. IN 的用法
IN 操作符用来指定条件范围,范围内的每个条件都是可选选项。IN 取一组由逗号分割,括在圆括号内的合法值。
例如: 选出 ‘DLL01’ 和 ‘BRS01’ 公司生产的产品
select prod_id, prod_name
from Products
where vend_id in ('DLL01', 'BRS01');
扩展: IN 和 OR 的区别
IN 和 OR 操作符可完成同样的功能,但 IN 操作符具有如下优点:
- 语法更清楚,更直观;
- IN 操作符的执行速度更快;
- IN 操作符可以包含其他 select 语句,能够更加动态的建立 where 字句 (后面会慢慢介绍)
5. NOT 的用法
NOT 操作符有且只有一种功能,就是否认其后跟的任何条件。其需要用在其要否定的语句前。
例如:选出除了 vend_id =‘DLL01’ 的所有产品,not 语句放在要否定的语句前面。
select prod_id, prod_name
from Products
where not vend_id ='DLL01';
尾注: 最近在整合 MyBatis-Plus 写数据库的查询语句的时候,发现自己忘了好多东西的用法,这部分写好了,业务部分代码就可以少写点,还能提高效率,无论现在看是不是真的有用,但是我始终相信一点一滴的积累,加油,少年!!!