4.简单的计算查询
只要数据是按关系方式存入数据库,就可以通过SQL 命令用计算方式进行检索。用于计算检索的函数有:
① COUNT-计数
② SUM-求和
③ AVG-求平均
④ MAX-求最大值
⑤ MIN -求最小值
5 .分组与计算查询
【格式】
SELECT [ALL | DISTINCT] <字段列表>
FROM <表>
[WHERE <条件>]
[GROUP BY <分类字段列表>…]
[HAVING <过滤条件>]
[ORDER BY <排序项> ASC | DESC]
【功能】包括有排序、函数运算等。
6.查询去向
默认情况下,查询输出到一个浏览窗口,用户在“SELECT”语句中可使用[INTO<目标>|TO
FILE<文件名>|TO SCREEN| TO PRINTER]子句选择查询去向:
INTO ARRAY 数组名:将查询结果保存到一个数组中。
CURSOR< 临时表名>:将查询结果保存到一个临时表中。
DBF | TABLE <表名>:将查询结果保存到一个永久表中。
TO FILE<文件名>[ADDITIVE]:将查询结果保存到文本文件中。
如果带“ADDITIVE”关键字,查询结果以追加方式添加到<文件名>指定的文件,否则,以新建或覆盖方式添加到<文件名>指定的文件。
TO SCREEN:将查询结果保在屏幕上显示。
TO PRINTER:将查询结果送打印机打印。
【例1】.在SQL SELECT 语句中,条件表达式用____子句,分组用____子句,排序用____子句。
[解析] 本题考查的知识点是SQL SELECT 语句中各个子句的作用。在SQL SELECT 语句中,条件表达式用WHERE 子句, 分组用GROUPBY 子句,排序用ORDERBY 子句。
[答案]WHERE, GROUP BY, ORDER BY
【例2】.在SELECT—SQL 语句中,HAVING 子句必须与____子句配合使用。
[解析] 本题考查的知识点是SELECT—SQL 语句中各于句的作用。HAVING 子句必须与GROUP BY 于句配合使用,它主要有来限定分组必须满足的条件。
[答案] GROUP BY
【例3】按班级分类显示学生的姓名,课程名,成绩,同一班级按分数排序。
SELECT a.姓名,a.班级名,c.课程名,b.成绩 ;
FROM STUD a,SC b,课程 c GROUP BY 班级名;
WHERE a.学号=b.学号 AND b.课程号=c.课程号;
ORDER BY a.班级名,b.成绩;
【例4】显示成绩在80 至90 之间的学号,姓名,课程名和成绩。
SELECT a.姓名,c.课程名,b.成绩
FROM STUD a,SC b,COURSE c
WHERE a.学号=b.学号 AND b.课程号=c.课程号 AND b.成绩 BETWEEN 80 AND 90
【例5】显示计算机系学生的成绩。
SELECT a.姓名,a.系别代号,c.课程名,b.成绩 ;
FROM STUD a,SC b,COURSE c ;
WHERE a.学号=b.学号 AND b.课程号=c.课程号 AND a.系别代号=“01”
【例6】显示各班总人数。
SELECT 班级名,COUNT(班级名) AS 总人数 ;
FROM STUD ;
GROUP BY 班级名
7.集合的并运算
即UNION,是指将两个SELECT 语句的查询结果通过并运算合并成一个查询结果。
在SQL 中,要进行合并运算,要求两个查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域,即具有相同的数据类型和取值范围。
【例1】显示北京和上海两地区的学生信息。
SELECT * FROM STUD WHERE 籍贯=“北京”
UNION
SELECT * FROM STUD WHERE 籍贯=“上海”
【例2】显示计算机系的学生及所有男学生。
SELECT 学号,姓名,系别代号,性别 ;
FROM STUD ;
WHERE 系别代号="01" UNION ;
SELECT 学号,姓名,系别代号,性别 ;
FROM STUD ;
WHERE 性别=“男”
【例3】显示选修了英语或数学科目的学生学号。
SELECT 学号,课程号 FROM SC ;
WHERE 课程号=“01” UNION ;
SELECT 学号,课程号 FROM SC ;
WHERE 课程号=“02”