mysql---使用操作符过滤数据

本文介绍了如何在MySQL中使用WHERE子句结合AND, OR操作符来过滤数据,强调了计算次序的重要性,并探讨了IN操作符的使用,包括其与OR操作符的对比以及NOT操作符的否定功能。通过实例解释了括号在决定计算次序中的作用,展示了IN操作符在处理多条件和动态构建WHERE子句时的优势。" 72859037,5727739,Java垃圾回收机制详解,"['jvm', '内存', '算法', 'java']

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

1. 组合WHERE子句

1.1 AND操作符

SELECT prod_id, prod_price, prod_name
FROM products
WHERE vend_id = 1003 AND prod_price <= 10;

AND用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行
上述例子中值包含了一个AND,还可以多个AND一起使用

1.2 OR操作符

SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;

OR匹配任意一个条件而不是同时匹配多个

1.3 计算次序

WHERE可以包含任意数目的AND和OR。允许两者结合起来使用。但二者之间在同时使用时存在次序问题。
处理OR操作之前,优先处理AND操作
通过使用括号可以实现分组,即先计算括号中的,然后再计算括号外的
通过一个例子说明一下

  • 没有括号
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10

上面的例子会先处理AND操作符,返回id为1003制造商制造的10元(含10)以上的产品,或者由id为1002的制造商制造的任何产品,没有价格限制

  • 有括号
SELECT prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10

此时,这个例子返回是数据就是由id为1002或1003的制造商制造的价格高于10元(含10)的任何产品

2. IN操作符

圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。
括号中包含有逗号分隔的清单,清单内容为数据库中的合法值

SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
ORDER BY prob_name;

IN操作符完成与OR操作符相同的功能
那么为什么要用IN,IN具有以下优点:

  • 在使用长的合法选项清单时,IN操作符的语法更清楚更直观
  • 在使用IN时,计算的次序更容易管理(使用的操作符更少)
  • IN操作符一般比OR操作符执行更快
  • IN的最大优点是可以包含其他SELECT语句,能够更动态地建立WHERE子句。

3. NOT操作符

NOT操作符用来否定它之后所跟的任何条件

SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
ORDER BY prob_name;

mysql支持使用NOT对IN,BETWEEN和EXIST子句取反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值