MySQL_高级数据过滤 AND OR IN NOT
2021/7/10 19:08:32
本文主要是介绍MySQL_高级数据过滤 AND OR IN NOT,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 组合WHERE子句
- AND操作符
- OR操作符
- 求值顺序
- IN操作符
- NOT操作符
组合WHERE子句
上一节的WHERE子句都是单一条件。
为了实现更强大的过滤功能,SQL允许给出多个WHERE子句,这些子句有2种使用方法,AND子句和OR子句
操作符
用于改变或者联结WHERE子句中的子句的关键字,也称为逻辑操作符
AND操作符
AND
检索满足所有条件
检索出供应商为DLL01,并且,价格小于等于4美元的商品ID,商品名字,商品价格
mysql> SELECT PROD_ID,PROD_NAME,PROD_PRICE FROM PRODUCTS -> WHERE VEND_ID = 'DLL01' AND PROD_PRICE <= 4 -> ORDER BY PROD_NAME; +---------+---------------------+------------+ | PROD_ID | PROD_NAME | PROD_PRICE | +---------+---------------------+------------+ | BNBG02 | Bird bean bag toy | 3.49 | | BNBG01 | Fish bean bag toy | 3.49 | | BNBG03 | Rabbit bean bag toy | 3.49 | +---------+---------------------+------------+
OR操作符
OR
检索匹配任一条件即可
检索出供应商为DLL01,或者,价格小于等于4美元的商品ID,商品名字,商品价格
mysql> SELECT PROD_ID,PROD_NAME,PROD_PRICE FROM PRODUCTS -> WHERE VEND_ID = 'DLL01' OR PROD_PRICE <= 4; +---------+---------------------+------------+ | PROD_ID | PROD_NAME | PROD_PRICE | +---------+---------------------+------------+ | BNBG01 | Fish bean bag toy | 3.49 | | BNBG02 | Bird bean bag toy | 3.49 | | BNBG03 | Rabbit bean bag toy | 3.49 | | RGAN01 | Raggedy Ann | 4.99 | +---------+---------------------+------------+
求值顺序
如果现在我们要求检索出价格大于10美元,且由DLL01或者BRSO1制造的商品,输出的结果中可能会包含价格小于10美元的商品。
出现上述问题,是因为我们的求值顺序不正确
AND的优先级比OR高。SQL优先处理AND语句。这就会导致操作符错误的组合我们的条件
解决的方法就是使用圆括号对操作符进行分组
mysql> SELECT PROD_NAME,PROD_PRICE FROM PRODUCTS -> WHERE (VEND_ID = 'DLL01' OR VEND_ID = 'BRS01') -> AND PROD_PRICE >= 10; +--------------------+------------+ | PROD_NAME | PROD_PRICE | +--------------------+------------+ | 18 inch teddy bear | 11.99 | +--------------------+------------+
IN操作符
IN
其用来指定条件范围,范围内的每个条件都可以进行匹配。
其取值由一组逗号分隔,括在圆括号中的合法值
检索由DLL01和BRS01制造的商品
mysql> SELECT PROD_NAME,PROD_PRICE FROM PRODUCTS -> WHERE (VEND_ID = 'DLL01' OR VEND_ID = 'BRS01') -> ORDER BY PROD_PRICE; +---------------------+------------+ | PROD_NAME | PROD_PRICE | +---------------------+------------+ | Fish bean bag toy | 3.49 | | Bird bean bag toy | 3.49 | | Rabbit bean bag toy | 3.49 | | Raggedy Ann | 4.99 | | 8 inch teddy bear | 5.99 | | 12 inch teddy bear | 8.99 | | 18 inch teddy bear | 11.99 | +---------------------+------------+
注意!
IN操作符完成了和OR操作符一致的功能
IN操作符的优点
- 很多条件存在的情况下,IN操作符更加直观、简洁;
- 存在多个OR操作符或者AND操作符时,使用IN操作符,求值顺序更加容易管理
- IN操作符比一组OR操作符执行更快
- IN操作符最大的优点是可以包含其他的SELECT语句,能动态地创建WHERE子句
NOT操作符
NOT
只用来否定其后所跟的任何条件
其从不会单独使用
其可以用在要过滤的列前或者列后
列出除DLL01之外的所有供应商制造的商品
mysql> SELECT PROD_NAME,VEND_ID FROM PRODUCTS -> WHERE NOT VEND_ID = 'DLL01'; +--------------------+---------+ | PROD_NAME | VEND_ID | +--------------------+---------+ | 8 inch teddy bear | BRS01 | | 12 inch teddy bear | BRS01 | | 18 inch teddy bear | BRS01 | | King doll | FNG01 | | Queen doll | FNG01 | +--------------------+---------+
NOT的优势
对于简单的WHERE子句,使用NOT操作符无法突出其优势
但是,在更复杂的子句中,NOT是非常有用的
例如,在与IN操作符联合使用时,NOT可以非常方便简单的找出与条件列表不匹配的行
这篇关于MySQL_高级数据过滤 AND OR IN NOT的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程