过滤数据关键字:WHERE
WHERE的位置:FROM之后,ORDER BY 之前,很好理解。
例:
1.//返回prod_price值为2.50的行
SELECT prod_name,prod_price
FROM products
WHERE prod_price = 2.50;
2.///
SELECT prod_name,prod_price
FROM products
WHERE prod_name = 'fuses';
我们注意到两个WHERE子句条件,有一个加了引号,一个没有加,那么何时使用引号呢?
单引号用来限定字符串,如果将值与串类型的列进行比较,则需要用引号。若与数值列比较的值不用引号。
BETWEEN的例子
SELECT id
FROM bbs_sku
WHERE sku_price BETWEEN 100 AND 200;
空值检查:
SELECT prod_name
FROM products
WHERE prod_price IS NULL;
WHERE子句操作符列表如下:
AND 和 OR操作符
AND的优先级高于OR ,所以当两者混合时,优先执行AND操作符
例:检索由供应商1003制造的且价格小于等于10的所有产品的名称和价格
SELECT prod_id,prod_price,prod_name
FROM products
WHERE vend_id=1003 AND prod_price <=10;
AND用来指示检索满足所有给定条件的行。
OR 用来指示检索满足任一条件的行。
例:由任一个指定供应商制造的所有产品名和价格
SELECT prod_name,prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;
1.4. AND和OR混合使用
优先级:圆括号()> AND > OR
例如:由供应商1002或1003制造的且价格在10元以上的产品
SELECT prod_name,prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
2. IN操作符
用法:用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。
SELECT prod_name,prod_price
FROM products
WHERE vend_id IN (1002,1003)
ORDER BY prod_name;
IN与OR功能相同。IN比OR效率更快。
3. NOT操作符
只有一个功能:否定它之后的所有条件
例 :列出除1002和1003之外的所有供应制造商的产品。
SELECT prod_name,prod_price
FROM products
WHERE vend_id NOT IN (1002,1003)
ORDER BY prod_name;
MySQL中的NOT可以与IN、BETWEEN 和 EXISTS使用,这与其他数据库不一样。