一 where过滤
1 使用AND 和 OR 组合查询条件
SELECT * from sell WHERE Sell_Price>=1000 and(or) Sell_Price<=2000
2 使⽤用Between 和 Not Between 过滤记录
SELECT * from sell WHERE Sell_Price BETWEEN 1000 and 2000(Not Between 不在这范围)
3 使⽤用IN 和 Not IN 过滤记录
SELECT * from worker WHERE Work_id IN ('9601','9702') (Not IN就不是这个...范围)
4使⽤用LIKE 和 通配符过滤记录
% 有零个或更多字符组成 - 单个字符
[] 指定范围 例如【A~F】[^]指定范围外 [^A~F]
• 例、从“WORKER”中查找姓名中第⼆二个字 是“⽂文”的职员信息。
Select * FROM worker Where work_name LIKE ' _文_'
• 例:查询worker表中所有姓王的职员信息
Select * from student Where student_name like ' 王%'
• 例、显⽰示姓刘和姓王的职员信息
Select * FROM worker Where work_name LIKE ' [刘王]%'
• 例、从“worker”表中检索职⼯工编号末位数字不 在2~6范围内的职员。
select * from worker where work_id like '%[^2- 6]'
5 使⽤用空值过滤记录
select * from supplier where sup_tel is (not) null
二 having过滤
汇总出销售总计在1000元以上的职员的编号及销售总计
select word_id,sum(sell_price) from sell where sell_price > 1000 group by word_id
where筛选是先选出销售价格在1000以上的,然后再分组汇总
select word_id,sun(sell_price)from sell group by word_id having sum(sell_price)>1000
having筛选是先分组汇总,再选出销售总价在1000以上的
不同点:
1 WHERE检查每条记录是否满⾜足条件,⽽而HAVING检查分组汇总之后的 各组汇总数据是否满⾜足条件;
2 在Having⼦子句中可⽤用集合函数,在Where⼦子句中则不能。