上篇文章《实用sql查询语句详解1:给列取别名、查询部分行、多列排序》介绍了简单查询语句,这节课给大家讲解基本条件查询、集合函数、分组查询、子查询、并集和交集。
基本条件查询
比较运算符:>,>=,<,<=,=,!=
between a and b,in(a,b,c),not exists,is null,like ‘%_’,or,and, any,all等
between…and 和not between and
把某一字段中内容在特定范围内的记录查询出来。
例如查询成绩在60到80分的学生信息:
SELECT StudentID, Score FROM SCore WHERE Score BETWEEN 60 AND 80
in(a,b,c)
把某一字段中内容与所列出的查询内容列表匹配的记录查询出来
SELECT SName AS 学员姓名,SAddress As 地址 FROM Students WHERE SAddress IN ('北京','广州','上海')
模糊查询 like
通配符有%、_、[ ]、[^]
%:后面可以跟零个或多个字符
_:匹配任意单个字符
[ ]:查询一定范围内的单个字符,包括两端数据
[^]:表示不在一定范围内的单个字符,包括两端数据
例:查询姓熊的员工并且名字只有两个字的员工信息
例:查询年龄在23-27周岁的员工信息
集合函数 -sum,count,max,min,avg
SELECT AVG(SCore) AS 平均成绩, MAX (Score) AS 最高分,MIN (Score) AS 最低分 From Score WHERE Score >=60
分组查询—GROUP BY
group by 字段名 having 组过滤条件
SELECT CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID
分组查询—多列分组
SELECT StudentID AS 学员编号,CourseID AS 内部测试, AVG(Score) AS 内部测试平均成绩 FROM Score GROUP BY StudentID,CourseID
分组查询—HAVING
SELECT StudentID AS 学员编号,CourseID AS 内部测试, AVG(Score) AS 内部测试平均成绩 FROM Score GROUP BY StudentID,CourseID HAVING COUNT(Score)>1
分组查询—对比
- WHERE子句从数据源中去掉不符合其搜索条件的数据
- GROUP BY子句搜集数据行到各个组中,统计函数为各个组计算统计值
- HAVING子句去掉不符合其组搜索条件的各组数据行
SELECT 部门编号, COUNT(*) FROM 员工信息表 WHERE 工资 >= 2000 GROUP BY 部门编号 HAVING COUNT(*) > 1
逻辑运算符(NOT、AND、OR)
NOT:取反;
AND:逻辑与;
OR:逻辑或;
例:利用AND查询Employee表中的年龄小于30岁的所有女员工 的信息;
例;利用NOT查询年龄不小于30岁的所有女员工的信息
例:利用组合查询年龄不大于40的男员工信息或年龄大于30的女员工信息;
子查询
SELECT * FROM BOOKS B WHERE B.PRICE IN (SELECT MAX(PRICE) FROM BOOKS);
并集(Union)和交集(Intersect)
(SELECT * FROM BOOKS B, BORROW C WHERE B.BNO=C.BNO AND B.BNAME = '计算方法' INTERSECT SELECT * FROM BOOKS B, BORROW C WHERE B.BNO=C.BNO AND B.BNAME != '计算方法习题集') ORDER BY C.CNO DESC;
本文来自投稿,不代表125jz立场,如若转载,请注明出处:http://www.125jz.com/1090.html