Mysql必知必会Note-第六章&第七章 过滤数据

本文详细介绍了如何使用SQL的WHERE子句进行数据过滤,包括使用各种操作符如AND、OR、IN、BETWEEN、NOT等进行复杂条件的组合,以及如何利用这些操作符提高查询效率。

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

第六章 过滤数据

WHERE子句

WHERE子句用于指定检索条件(搜索条件),WHERE子句在FROM子句之后给出。

【实例】

SELECT prod_name, prod_price
FROM products
WHERE prod_price = 2.5;

该语句从products表中检索两个列,但不返回所有行,只返回prod_price=2.5的行。
数据也可以在应用层过滤,但是客户机处理数据的工作会极大的影响应用的性能,并且需要服务器通过网络发送多余数据,浪费了网络带宽。
ps:ORDER BY子句位置在WHERE子句之后

WHERE子句操作符

操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
BETWEEN AND在指定两个值之间

WHERE子句可以检查空值,如下:

// 这条语句返回没有价格的所有产品,即价格字段为空
SELECT prod_name
FROM products
WHERE prod_price IS NULL;

第七章 数据过滤

利用AND,OR操作符组合WHERE子句

通过逻辑操作符AND和OR可以进行组合条件过滤,AND操作符表示检索满足所有给定条件的行,OR操作符检索匹配任一条件的行。

【实例】

// 检索由供应商1003制造且价格小于等于10美元的所有产品的id和价格
SELECT prod_id, prod_price
FROM products
WHERE vend_id = 1003 AND prod_price <= 10;

// 检索任一指定供应商制造的产品的名字和价格
SELECT prod_name, prod_price
FROM poductd
WHERE vend_id = 1002 OR vend_id = 1003;

计算次序

在使用AND和OR操作符进行组合过滤的过程中,要注意操作符的优先级问题。AND在计算次序中优先级更高,因此,我们推荐使用圆括号来进行分组,明确计算次序。

IN操作符

IN操作符用来指定条件的范围,范围内的每个条件都可以匹配,相当于OR操作符。IN的合法取值都包含在圆括号中,并通过逗号分隔。

【实例】

// 检索供应商1002和1003制造的所有产品,并根据商品名排序
SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
ORDER BY prod_name;

IN操作符的优点:

  1. 使用长的合法清单时,IN操作符的语法更加清楚且更直观;
  2. 计算次序容易管理;
  3. IN操作符比OR操作符执行清单更快;
  4. IN最大的优点是可以包含其他SELECT语句,使得能够动态的建立WHERE子句,例如:
    // 检索table_a表中包含table_b表中id的所有数据
    SELECT * 
    FROM table_a
    WHERE id IN (SELECT id FROM table_b);
    

NOT操作符

NOT操作符用于否定它之后的条件。
NOT可对IN,BETWEEN和EXISTS子句取反。
【实例】

// 检索1002,1003之外供应商制造的产品的名字和价格
SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
ORDER BY vend_id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值