使用关系表达式查询
WHERE语句中,关系表达式由关系运算符和列组成,可用于列值的大小相等判断。主要的运算符有
操作符 | 说明 |
---|---|
= | 相等 |
< > | 不相等 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
SELECT f_name,f_price
FROM fruits
WHERE f_price = 10.2
使用 BETWEEN AND 表示范围
SELECT f_name,f_price FROM fruits WHERE f_price BETWEEN 2.00 AND 10.20;
使用 IN 关键字
IN关键字用来查询满足指定条件范围内的记录。
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id IN (101,102)
使用 LIKE 关键字
1.百分号通配符 % ,匹配任意长度的字符,甚至包括零字符。
SELECT f_id,f_name
FROM fruits
WHERE f_name LIKE 'b%'; #查询首字母为b
2.下划线通配符 “_”,一次只能匹配任意一个字符。
SELECT f_id,f_name FROM fruits WHERE f_name LIKE '____y' #匹配y前面只有四个字母的记录
3.匹配指定范围中的任何单个字符。
方括号 ‘[ ]’ 指定一个字符集合,只要匹配其中任何一个字符,即为所查找的文本。
SELECT *FROM fruits
WHERE f_name LIKE '[ abc ]%'
4.匹配不属于指定范围的任何单个字符。
SELECT *FROM fruits
WHERE f_name LIKE '[ ^abc ]%'
使用 IS NULL 查询空值
SELECT c_id,c_name,c_email FROM customers WHERE c_email IS NULL #c_email 为空
SELECT c_id,c_name,c_email FROM customers WHERE c_email IS NOT NULL #c_email 不为空
使用 EXISTS 关键字
EXISTS 关键字后面的参数是一个任意的子查询,系统对子查询进行运算判断是否返回行,返回为TRUE,执行外层语句,不返回为FALSE,不执行外层语句。
SELECT * FROM fruits
WHERE EXISTS
(SELECT s_name FROM suppliers WHERE s_id = 107);
SELECT * FROM fruits
WHERE f_price>20 AND EXISTS
(SELECT s_name FROM suppliers WHERE s_id = 107);
使用 ORDER BY 排序
1.单行排序
SELECT f_name FROM fruits ORDER BY f_name;
2.多行排序
SELECT f_name FROM fruits ORDER BY f_name,f_price;
3.指定方向排序
默认情况下ASC为升序,DESC为降序。
SELECT f_name FROM fruits ORDER f_price DESC;
使用 GROUP BY 分组
1.创建分组
SELECT s_id,COUNT(*) AS Total FROM fruits GROUP BY s_id;
2.多字段分组
SELECT s_id,f_name FROM fruits group by s_id,f_name;
使用 HAVING 对分组结果过滤
SELECT s_id,COUNT(*) AS Total FROM fruits GROUP BY s_id HAVING COUNT(*) >1;
使用 UNION 合并查询结果集
使用 ALL 效果是不删除重复也不对结果进行自动排序
SELECT s_id,f_name,f_price
FROM fruits
WHERE f_price < 9.0
UNION ALL
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id = 101;