第5章SQL的应用试卷.ppt

3.重定向输出(INTO) INTO或TO子句,表示查询结果可以重定输出方向,其格式是: [INTO 〈目标〉] | [TO FILE〈文件名〉[ADDITIVE] | TO PRINTER] 例5-14 写出对教学管理数据库进行如下操作的命令。 (1)将例5-12的查询结果保存到test1.txt文本文件中。 (2)查询学生所学课程和成绩,输出学号、姓名、课程名和成绩,并将查询结果存入testtable表中。 * 操作1: SELECT a.学号,姓名,性别,课程名,成绩 FROM 学生 a,选课 b,课程 c WHERE a.学号=b.学号 AND b.课程号=c.课程号 ORDER BY 性别,课程名,成绩 DESC TO FILE test1 操作2: SELECT a.学号,姓名,b.课程号,成绩 FROM 学生 a,选课 b WHERE a.学号=b.学号 INTO CURSOR test SELECT a.学号,姓名,课程名,成绩 FROM test a,课程 b WHERE a.课程号=b.课程号 INTO TABLE testtable ORDER BY a.学号 * 3.输出合并(UNION) 输出合并是指将两个查询结果进行集合并操作,其子句格式是: [UNION [ALL] 〈SELECT命令〉] 其中ALL表示结果全部合并。若没有ALL,则重复的记录将被自动取掉。合并的规则是: (1)不能合并子查询的结果。 (2)两个SELECT命令必须输出同样的列数。 (3)两个表各相应列出的数据类型必须相同,数字和字符不能合并。 (4)仅最后一个SELECT命令中可以用ORDER BY子句,且排序选项必须用数字说明。 * 例5-15 对教学管理数据库,列出选修“01101”或“01102”课程的所有学生的学号。 SELECT 学号 FROM 选课 WHERE 课程号=01101 UNION SELECT 学号 FROM 选课 WHERE 课程号=01102 * 4.分组统计(GROUP BY)与筛选(HAVING) 使用GROUP BY子句可以对查询结果进行分组,其格式是: GROUP BY 〈分组选项1〉[,〈分组选项2〉…] 其中〈分组选项〉可以是字段名,也可以是分组选项的序号(第1个分组选项的序号为1)。 GROUP BY子句可以将查询结果按指定列进行分组,每组在列上具有相同的值。若在分组后还要按照一定的条件进行筛选,则需使用HAVING子句,其格式是: HAVING 〈筛选条件表达式〉 * 例5-16 写出对教学管理数据库进行如下操作的命令: (1)分别统计男女生人数。 (2)分别统计男女生中少数民族学生人数。 (3)列出平均成绩大于80分的课程号,并按平均成绩升序排序。 (4)统计每个学生选修课程的门数(超过1门的学生才统计),要求输出学生学号和选修门数,查询结果按选课门数降序排列,若门数相同,按学号升序排列。 * 操作1: SELECT 性别,COUNT(*) AS 人数 FROM 学生 GROUP BY 性别 操作2: SELECT 性别,COUNT(*) FROM 学生 GROUP BY 性别 WHERE 少数民族否 注意,不能把命令写成如下形式: SELECT 性别,COUNT(性别) FROM 学生 GROUP BY 性别 HAVING 少数民族否 该命令是对少数民族学生按“性别”字段进行分组统计,所以相对于操作1而言,增加了WHERE子句,限定了查询操作的记录范围。 * 操作3: SELECT 课程号,AVG(成绩) AS 平均成绩 FROM 选课 GROUP BY 课程号 HAVING 平均成绩=80 ORDER BY 平均成绩 ASC 操作4: SELECT 学号,COUNT(课程号) AS 选课门数 FROM 选课 GROUP BY 学号 HAVING COUNT(课程号)1 ORDER BY 2 DESC,1 * 5.3.1 建立表结构 除通过表设计器建立表之外,在Visual FoxPro中还可以通过SQL的CREATE TABLE命令建立表,其命令格式是: CREATE TABLE|DBF 〈表名1〉 [NAME 〈长表名〉][FREE] (〈字段名1〉 〈类型〉(〈宽度〉[,〈小数位数〉])[NULL|NOT NULL] [CHECK 〈条件表达式1〉[ERROR 〈出错显示信息〉]] [DEFAULT 〈表达式1〉][PRIMARY KEY | UNIQUE]REFERENCES 〈表名2〉 [TAG 〈标识1〉] [〈字段名2〉〈类型〉(〈宽度〉[,〈小数位数〉])[NULL|NOT NULL] [CHECK 〈条件表达式2〉[ERROR 〈出错显示信

文档评论(0)

1亿VIP精品文档

相关文档