一、过滤数据-使用WHERE子句
1. WHERE子句操作符
= 等于,!= 不等于,< 小于, > 大于, <= 小于等于, >= 大于等于, BETWEEN AND 在指定的两个值之间
2. 检查单个值
# 名字等于fuses
SELECT prod_id, prod_price, prod_name
FROM products
WHERE prod_mane = 'fuses';
# 价格大于10
SELECT prod_id, prod_price, prod_name
FROM products
WHERE prod_price > 10;
#供应商ID不是1003
SELECT vend_id, prod_price, prod_name
FROM products
WHERE vend_id != 1003;
# 范围值检查
SELECT vend_id,prod_name,prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;
3. 空值检查
# NULL表示空值,no value
SELECT vend_id,prod_name,prod_price
FROM products
WHERE prod_price IS NULL;
IS NULL:如果列值为 NULL,则该运算符返回 true。
IS NOT NULL:如果列值不为NULL,则该运算符返回 true。
<=>:该运算符用于两个值的对比,当两个值都为 NULL 时(这一点与 = 运算符不同),返回 true。
包含 NULL 的条件都是比较特殊的。不能在列中使用 = NULL 或 ! = NULL 来寻找 NULL 值。这样的比对通常都是失败的,因为不可能得知这样的比对是否为真。
二、 过滤数据-AND&OR
1. AND表示同时满足所有条件
# 供应商1003,价格小于等于10的产品
SELECT vend_id, prod_name, prod_price
FROM prodcuts
WHERE vend_id = 1003 AND prod_price <= 10;
2. OR表示满足所有的单个条件
# 是1002供应商,或者是价格等于10
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR prod_price = 10;
3. 次序计算
# MySql优先处理AND, 后处理OR,先满足vend_id = 1003 AND prod_price = 10
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price = 10;
# 要先处理OR,应该加()
SELECT vend_id, prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price = 10;
4. IN指定条件范围
# 检索1002,1003供应商并用名称排序
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
ORDER BY prod_name;
5. NOT表在WHERE子句中用来否定后跟的条件
NOT IN可以用来取反
# 检索不是1002,1003供应商并用名称排序
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
ORDER BY prod_name;
三、 数据过滤-LIKE子句+通配符 %, _
1. %表示任何字符串出现任意次数,区分大小写
# 检索以jet起头的产品名字(和JET起头不匹配)
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE 'jet%';
# 检索产品名字中任意位置有care字符
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE '%care%';
# 检索产品名字中以s开头e结尾的字符,长度不限
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE 's%e';
2. _表示任何字符串出现单次,指一个字符,其他功能和%一样