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

第六章 过滤数据

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;

你可能感兴趣的:(读书笔记,mysql)