版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sha18751330807/article/details/83536187
第六章 过滤数据
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操作符的优点:
- 使用长的合法清单时,IN操作符的语法更加清楚且更直观;
- 计算次序容易管理;
- IN操作符比OR操作符执行清单更快;
- 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;