1、二级 VISUAL+FOXPRO-94 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.在 SELECT 语句中,下列关于 HAVING 短语的描述中正确的是(分数:2.00)A.HAVING 短语必须与 GROUP BY 短语同时使用B.使用 HAVING 短语的同时不能使用 WHERE 短语C.HAVING 短语可以在任意的一个位置出现D.HAVING 短语与 WHERE 短语功能相同2.在 SQL 的 SELECT 查询的结果中,消除重复记录的方法是(分数:2.00)A.通过指定主索引实现B.通过指定惟一索引实现C.使用 DISTI
2、NCT 短语实现D.使用 WHERE 短语实现3.假设每个歌手的“最后得分”的计算方法是:去掉一个最高分和一个最低分,取剩下分数的平均分。根据“评分”表求每个歌手的“最后得分”,并存储于表 TEMP 中,表 TEMP 中有两个字段:“歌手号”和“最后得分”,并且按最后得分降序排列,生成表 TEMP 的 SQL 语句是(分数:2.00)A.SELECT 歌手号,(COUNT(分数)-MAX(分数)-MIN(分数)/(SUM(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 歌手号 ORDER BY 最后得分 DESCB.SELECT 歌手号,(COUNT(分数)
3、-MAX(分数)-MIN(分数)/(SUM(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 评委号 ORDER BY 最后得分 DESCC.SELECT 歌手号,(SUM(分数)-MAX(分数)-MIN(分数)/(COUNT(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 评委号 ORDER BY 最后得分 DESCD.SELECT 歌手号,(SUM(分数)-MAX(分数)-MIN(分数)/(COUNT(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 歌手号 ORDER BY 最后得分
4、DESC4.与“SELECT * FROM 歌手 WHERE NOT(最后得分9.00 OR 最后得分8.00)”等价的语句是(分数:2.00)A.SELECT * FROM 歌手 WHERE 最后得分 BETWEEN 9.00 AND 8.00B.SELECT * FROM 歌手 WHERE 最后得分=8.00 AND 最后得分=9.00C.SELECT * FROM 歌手 WHERE 最后得分9.00 OR 最后得分8.00D.SELECT * FROM 歌手 WHERE 最后得分=8.00 AND 最后得分=9.005.假设 temp.dbf 数据表中有两个字段“歌手号”和“最后得分”,
5、下面程序段的功能是:将 temp.dbf 中歌手的“最后得分”填入“歌手”表对应歌手的“最后得分”字段中(假设已增加了该字段),在下划线处应该填写的 SQL 语句是 USE 歌手 DO WHILE.NOT.EOF() _ REPLACE 歌手.最后得分 WITH a2 SKIP ENDDO(分数:2.00)A.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 TO ARRAY aB.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 INTO ARRAY aC.SELECT * FROM temp WHERE temp.歌手号=歌手
6、.歌手号 TO FILE aD.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 INTO FILE a6.与“SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分=ALL; (SELECT 最后得分 FROM 歌手 WHERE SUBSTR(歌手号,1,1)=“2“)“ 等价的 SQL 语句是(分数:2.00)A.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分=;(SELECT MAX(最后得分)FROM 歌手 WHERE SUBSTR(歌手号,1,1)=“2“)B.SELECT DISTINCT 歌手号
7、FROM 歌手 WHERE 最后得分=;(SELECT MIN(最后得分)FROM 歌手 WHERE SUBSTR(歌手号,1,1)=“2“)C.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分=ANY;(SELECT 最后得分 FROM 歌手 WHERE SUBSTR(歌手号,1,1)=“2“)D.SELECT DISTINCT 歌手号 FROM 歌手 WHERE 最后得分=SOME;(SELECT 最后得分 FROM 歌手 WHERE SUBSTR(歌手号,1,1)=“2“)7.假设“订单”表中有订单号、职员号、客户号和金额字段,正确的 SQL 语句只能是(分数
8、:2.00)A.SELECT 职员号 FROM 订单;GROUP BY 职员号 HAVING COUNT(*)3 AND AVG_金额200B.SELECT 职员号 FROM 订单;GROUP BY 职员号 HAVING COUNT(*)3 AND AVG(金额)200C.SELECT 职员号 FROM 订单;GROUP BY 职员号 HAVING COUNT(*)3 WHERE AVG(金额)200D.SELECT 职员号 FROM 订单;GROUP BY 职员号 WHERE COUNT(*)3 AND AVG_金额2008.假设同一名称的产品有不同的型号和产地,则计算每种产品平均单价的 S
9、QL 语句是(分数:2.00)A.SELECT 产品名称,AVG(单价)FROM 产品 GROUP BY 单价B.SELECT 产品名称,AVG(单价)FROM 产品 ORDER BY 单价C.SELECT 产品名称,AVG(单价)FROM 产品 ORDER BY 产品名称D.SELECT 产品名称,AVG(单价)FROM 产品 GROUP BY 产品名称9.设有 S(学号,姓名,性别)和 SC(学号,课程号,成绩)两个表,用下列 SQL 语句检索选修的每门课程的成绩都高于或等于 85 分的学生的学号、姓名和性别,正确的是(分数:2.00)A.SELECT 学号,姓名,性别 FROM s WH
10、ERE EXISTS;(SELECT*FROM sc WHERE sc.学号=s.学号 AND 成绩=85)B.SELECT 学号,姓名,性别 FROM s WHERE NOT EXISTS;(SELECT*FROM sc WHERE sc.学号=s.学号 AND 成绩=85)C.SELECT 学号,姓名,性别 FROM s WHERE EXISTS;(SELECT*FROM sc WHERE sc.学号=s.学号 AND 成绩85)D.SELECT 学号,姓名,性别 FROM s WHERE NOT EXISTS;(SELECT*FROM sc WHERE sc.学号=s.学号 AND 成绩
11、85)10.与“SELECT DISTINCT 产品号 FROM 产品 WHERE 单价=ALL(SELECT 单价 FROM 产品 WHERE SUBSTR(产品号,1,1)=“2“)”等价的 SQL 命令是(分数:2.00)A.SELECT DISTINCT 产品号 FROM 产品 WHERE 单价=;(SELECT MAX(单价)FROM 产品 WHERE SUBSTR(产品号,1,1)=“2“)B.SELECT DISTINCT 产品号 FROM 产品 WHERE 单价=;(SELECT MIN(单价)FROM 产品 WHERE SUBSTR(产品号,1,1)=“2“)C.SELECT
12、 DISTINCT 产品号 FROM 产品 WHERE 单价=ANY;(SELECT 单价 FROM 产品 WHERE SUBSTR(产品号,1,1)=“2“)D.SELECT DISTINCT 产品号 FROM 产品 WHERE 单价=SOME;(SELECT 单价 FROM 产品 WHERE SUBSTR(产品号,1,1)=“2“)11.SQL 语言的查询语句是(分数:2.00)A.INSERTB.UPDATEC.DELETED.SELECT12.SQL 的 SELECT 语句中,“HAVING”用来筛选满足条件的(分数:2.00)A.列B.行C.关系D.分组13.在 Visual Fox
13、Pro 中,假设教师表 T(教师号,姓名,性别,职称,研究生导师)中,性别是 C 型字段,研究生导师是 L 型字段。若要查询“是研究生导师的女老师”信息,那么 SQL 语句“SELECT * FROM T WHERE逻辑表达式”中的逻辑表达式应是(分数:2.00)A.研究生导师 AND 性别=“女“B.研究生导师 OR 性别=“女“C.性别=“女“ AND 研究生导师=.F.D.研究生导师=.T. OR 性别=女14.查询学生选修课程成绩小于 60 分的学号,正确的 SQL 语句是(分数:2.00)A.SELECT DISTINCT 学号 FROM SC WHERE “成绩“60B.SELEC
14、T DISTINCT 学号 FRCIM SC WHERE 成绩 “60“C.SELECT DISTINCT 学号 FROM SC WHERE 成绩 60D.SELECT DISTINCT “学号“ FROM SC WHERE “成绩“6015.查询学生表 S 的全部记录并存储于临时表文件 one 中的 SQL 命令是(分数:2.00)A.SELECT * FROM 学生表 INTO CURSOR oneB.SELECT * FROM 学生表 TO CURSOR oneC.SELECT * FROM 学生表 INTO CURSOR DBF oneD.SELECT * FROM 学生表 TO CU
15、RSOR DBF one16.查询成绩在 70 分至 85 分之间学生的学号、课程号和成绩,正确的 SQL 语句是(分数:2.00)A.SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 BETWEEN 70 AND 85B.SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 =70 OR 成绩=85C.SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 =70 OR =85D.SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 =70 AND =8517.查询有选课记录,但没有考试成绩的学生的学号和课程号,正确的 SQL 语句是
16、(分数:2.00)A.SELECT 学号,课程号 FROM sc WHERE 成绩=“B.SELECT 学号,课程号 FROM sc WHERE 成绩=NULLC.SELECT 学号,课程号 FROM sc WHERE 成绩 IS NULLD.SELECT 学号,课程号 FROM sc WHERE 成绩18.查询选修 C2 课程号的学生姓名,下列 SQL 语句中错误是(分数:2.00)A.SELECT 姓名 FROM S WHERE EXISTS(SELECT * FROM SC WHERE 学号=S.学号 AND 课程号=“C2“)B.SELECT 姓名 FROM S WHERE 学号 IN
17、(SELECT 学号 FROM SC WHERE 课程号=“C2“)C.SELECT 姓名 FROM S JOIN SC ON S.学号=SC.学号 WHERE 课程号=“C2“D.SELECT 姓名 FROM S WHERE 学号=(SELECT 学号 FROM SC WHERE 课程号=“C2“)19.在 SQL SELECT 语句中与 INTO TABLE 等价的短语是(分数:2.00)A.INTO DBFB.TO TABLEC.INTO FORMD.INTO FILE20.若 SQL 语句中的 ORDER BY 短语中指定了多个字段,则(分数:2.00)A.依次按自右至左的字段顺序排序
18、B.只按第一个字段排序C.依次按自左至右的字段顺序排序D.无法排序21.与“SELECT * FROM 教师表 INTO DBFA”等价的语句是(分数:2.00)A.SELECT * FROM 教师表 TO DBF AB.SELECT * FROM 教师表 TO TABLE AC.SELECT * FROM 教师表 INTO TABLE AD.SELECT * FROM 教师表 INTO A22.与“SELECT * FROM 教师表 INTO DBFA”等价的语句是(分数:2.00)A.SELECT * FROM 教师表 TO DBF AB.SELECT * FROM 教师表 TO TABL
19、E AC.SELECT * FROM 教师表 INTO TABLE AD.SELECT * FROM 教师表 INTO A23.“教师表”中有“职工号”、“姓名”、“工龄”和“系号”等字段,“学院表”中有“系名”和“系号”等字段,计算“计算机”系教师总数的命令是(分数:2.00)A.SELECT COUNT(*)FROM 教师表 INNER JOIN 学院表;ON 教师表.系号=学院表.系号 WHERE 系名=“计算机“B.SELECT COUNT(*)FROM 教师表 INNER JOIN 学院表;ON 教师表.系号=学院表.系号 ORDER BY 教师表.系号;HAVING 学院表.系名=
20、“计算机“C.SELECT SUM(*)FROM 教师表 INNER JOIN 学院表;ON 教师表.系号=学院表.系号 GROUP BY 教师表.系号;HAVING 学院表.系名=“计算机“D.SELECT SUM(*)FROM 教师表 INNER JOIN 学院表;ON 教师表.系号=学院表.系号 ORDER BY 教师表.系号;HAVING 学院表.系名=“计算机“24.“教师表”中有“职工号”、“姓名”、“工龄”和“系号”等字段,“学院表”中有“系名”和“系号”等字段,求教师总数最多的系的教师人数,正确的命令序列是(分数:2.00)A.SELECT 教师表.系号,COUNT(*)AS
21、人数 FROM 教师表,学院表;GROUP BY 教师表.系号 INTO DBF TEMPSELECT MAX(人数) FROM TEMPB.SELECT 教师表.系号,COUNT(*)FROM 教师表,学院表;WHERE 教师表.系号=学院表.系号 GROUP BY 教师表.系号 INTO DBF TEMPSELECT MAX(人数)FROM TEMPC.SELECT 教师表.系号,COUNT(*)AS 人数 FROM 教师表,学院表;WHERE 教师表.系号=学院表.系号 GROUP BY 教师表.系号 TO FILE TEMPSELECT MAX(人数) FROM TEMPD.SELEC
22、T 教师表.系号,COUNT(*)AS 人数 FROM 教师表,学院表;WHERE 教师表.系号=学院表.系号 GROUP BY 教师表.系号 INTO DBF TEMPSELECT MAX(人数)FROM TEMP25.查询尚未最后确定订购单的有关信息的正确命令是(分数:2.00)A.SELECT 名称,联系人,电话号码,订单号 FROM 客户,订购单 WHERE 客户.客户号=订购单.客户号 AND 订购日期 IS NULLB.SELECT 名称,联系人,电话号码,订单号 FROM 客户,订购单 WHERE 客户.客户号=订购单.客户号 AND 订购日期=NULLC.SELECT 名称,联
23、系人,电话号码,订单号 FROM 客户,订购单 FOR 客户.客户号=订购单.客户号 AND 订购日期 IS NULLD.SELECT 名称,联系人,电话号码,订单号 FROM 客户,订购单 FOR 客户.客户号=订购单.客户号 AND 订购日期=NULL26.查询订购单的数量和所有订购单平均金额的正确命令是(分数:2.00)A.SELECT COUNT(DISTINCT 订单号),AVG(数量*单价)FROM 产品 JOIN 订购单名细 ON 产品.产品号=订购单名细.产品号B.SELECT COUNT(订单号),AVG(数量木单价)FROM 产品 JOIN 订购单名细 ON 产品.产品号=
24、订购单名细.产品号C.SELECT COUNT(DISTINCT 订单号),AVG(数量(单价)FROM 产品,订购单名细 ON 产品.产品号=订购单名细.产品号D.SELECT COUNT(订单号),AVG(数量*单价)FROM 产品,订购单名细 ON 产品.产品号=订购单名细.产品号27.查询第一作者为“张三”的所有书名及出版社,正确的 SQL 语句是(分数:2.00)A.SELECT 书名,出版社 FROM 图书 WHERE 第一作者=张三B.SELECT 书名,出版社 FROM 图书 WHERE 第一作者=“张三“C.SELECT 书名,出版社 FROM 图书 WHERE “第一作者“
25、=张三D.SELECT 书名,出版社 FROM 图书 WHERE “第一作者“=“张三“28.查询尚未归还的图书编号和借书日期,正确的 SQL 语句是(分数:2.00)A.SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期=“B.SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期=NULLC.SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期 IS NULLD.SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期29.查询“读者”表的所有记录并存储于临时表文件 one 中的 SQL 语句是(分数:2.00)A.SEL
26、ECT * FROM 读者 INTO CURSOR oneB.SELECT * FROM 读者 TO CURSOR oneC.SELECT * FROM 读者 INTO CURSOR DBF oneD.SELECT * FROM 读者 TO CURSOR DBF one30.查询单位名称中含“北京”字样的所有读者的借书证号和姓名,正确的 SQL 语句是(分数:2.00)A.SELECT 借书证号,姓名 FROM 读者 WHERE 单位=“北京%“B.SELECT 借书证号,姓名 FROM 读者 WHERE 单位=“北京*“C.SELECT 借书证号,姓名 FROM 读者 WHERE 单位 LI
27、KE “北京*“D.SELECT 借书证号,姓名 FROM 读者 WHERE 单位 LIKE “%北京%“31.SQL 语句中,能够判断“订购日期”字段是否为空值的表达式是(分数:2.00)A.订购日期=NULLB.订购日期=EMPTYC.订购日期 IS NULLD.订购日期 IS EMPTY32.查询在“北京”和“上海”区域的商店信息的正确命令是(分数:2.00)A.SELECT * FROM 商店 WHERE 区域名=“北京“ AND 区域名=“上海“B.SELECT * FROM 商店 WHERE 区域名=“北京“ OR 区域名=“上海“C.SELECT * FROM 商店 WHERE
28、区域名=“北京“ AND “上海“D.SELECT * FROM 商店 WHERE 区域名=“北京“ OR “上海“33.查询商品单价在 10 到 50 之间、并且日销售数量高于 20 的商品名、单价、销售日期和销售数量,查询结果按单价降序。正确命令是(分数:2.00)A.SELECT 商品名,单价,销售日期,销售数量 FROM 商品 JOIN 销售 WHERE(单价 BETWEEN 10 AND 50)AND 销售数量20ORDER BY 单价 DESCB.SELECT 商品名,单价,销售日期,销售数量 FROM 商品 JOIN 销售 WHERE(单价 BETWEEN 10 AND 50)A
29、ND 销售数量20ORDE RBY 单价C.SELECT 商品名,单价,销售日期,销售数量 FROM 商品,销售 WHERE(单价 BETWEEN 10 AND 50) AND 销售数量20ON 商品.商品号=销售.商品号 ORDER BY 单价D.SELECT 商品名,单价,销售日期,销售数量 FROM 商品,销售 WHERE(单价 BETWEEN 10 AND 50)AND 销售数量20AND 商品.商品号=销售.商品号 ORDER BY 单价 DESC34.查询销售金额合计超过 20000 的商店,查询结果包括商店名和销售金额合计。正确命令是(分数:2.00)A.SELECT 商店名,S
30、UM(销售数量*单价) AS 销售金额合计 FROM 商店,商品,销售 WHERE 销售金额合计 20000B.SELECT 商店名,SUM(销售数量+单价) AS 销售金额合计20000FROM 商店,商品,销售 WHERE 商品.商品号=销售.商品号 AND 商店.商店号=销售.商店号C.SELECT 商店名,SUM(销售数量+单价) AS 销售金额合计 FROM 商店,商品,销售 WHERE 商品.商品号=销售.商品号 AND 商店.商店号=销售.商店号 AND SUM(销售数量*单价)20000 GROUP BY 商店名D.SELECT 商店名,SUM(销售数量*单价) AS 销售金额
31、合计 FROM 商店,商品,销售 WHERE 商品.商品号=销售.商品号 AND 商店.商店号=销售.商店号 GROUP BY 商店名 HAVING SUM(销售数量*单价)2000035.设有学生表 student(学号,姓名,性别,出生日期,院系)、课程表 course(课程号,课程名,学时)和选课表 score(学号,课程号,成绩),查询同时选修课程号为 C1 和 C5 课程的学生的学号,正确的命令是(分数:2.00)A.SELECT 学号 FROM score sc WHERE 课程号 =“C1“ AND 学号 IN;(SELECT 学号 FROM score sc WHERE 课程号
32、 =“C5“)B.SELECT 学号 FROM score sc WHERE 课程号 =“C1“ AND 学号 =;(SELECT 学号 FROM score sc WHERE 课程号 =“C5“)C.SELECT 学号 FROM score sc WHERE 课程号 =“C1“ AND 课程号 =“C5“D.SELECT 学号 FROM score sc WHERE 课程号 =“C1“ OR “C5“36.SQL 查询命令的结构是 SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY.,其中指定查询条件的短语是(分数:2.00)A.SELECTB.FROMC.
33、WHERED.ORDERBY37.SQL 查询命令的结构是 SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY.,其中 HAVING必须配合使用的短语是(分数:2.00)A.FROMB.GROUPBYC.WHERED.ORDERBY38.如果在 SQL 查询的 SELECT 短语中使用 TOP,则应该配合使用(分数:2.00)A.HAVING 短语B.GROU BY 短语C.WHERE 短语D.ORDER BY 短语39.设有学生表 student(学号,姓名,性别,出生日期,院系)、课程表 course(课程号,课程名,学时)和选课表 score(学号,课程
34、号,成绩),查询“计算机系”学生的学号、姓名、学生所选课程的课程名和成绩,正确的命令是(分数:2.00)A.SELECT s.学号,姓名,课程名,成绩 FROM student s,score sc,course c;WHERE s.学号=sc.学号,sc.课程号=c.课程号,院系=“计算机系“B.SELECT 学号,姓名,课程名,成绩 FROM student s,score sc,course c;WHERE s.学号=sc.学号 AND sc.课程号=c.课程号 AND 院系 =“计算机系“C.SELECT s.学号,姓名,课程名,成绩 FROM(student s JOIN score
35、 sc;ON s.学号=sc.学号) JOIN course c ON sc.课程号=c.课程号;WHERE 院系=计算机系D.SELECT 学号,姓名,课程名,成绩 FROM(student s JOIN score sc;ON s.学号=sc.学号) JOIN course c ON sc.课程号=c.课程号;WHERE 院系=“计算机系“40.设有学生表 student(学号,姓名,性别,出生日期,院系)、课程表 course(课程号,课程名,学时)和选课表 score(学号,课程号,成绩),查询所修课程成绩都大于等于 85 分的学生的学号和姓名,正确的命令是(分数:2.00)A.SEL
36、ECT 学号,姓名 FROM student s WHERE NOT EXISTS(SELECT * FROM score sc;WHERE sc.学号=s.学号 AND 成绩 85)B.SELECT 学号,姓名 FROM student s WHERE NOT EXISTS(SELECT * FROM score sc;WHERE sc.学号=s.学号 AND 成绩 =85)C.SELECT 学号,姓名 FROM student s,score scWHERE s.学号=sc.学号 AND 成绩 =85D.SELECT 学号,姓名 FROM student s,score scWHERE s
37、.学号=sc.学号 AND ALL 成绩 =8541.设有学生表 student(学号,姓名,性别,出生日期,院系)、课程表 course(课程号,课程名,学时)和选课表 score(学号,课程号,成绩),查询选修课程在 5 门以上(含 5 门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是(分数:2.00)A.SELECT s.学号,姓名,平均成绩 FROM student s,score sc WHERE s.学号=sc.学号;GROUP BY s.学号 HAVING COUNT(*)=5 ORDER BY 平均成绩 DESCB.SELECT 学号,姓名,AVG(成绩)
38、FROM student s,score sc;WHERE s.学号=sc.学号 AND COUNT(*)=5 GROUP BY 学号 ORDER BY 3 DESCC.SELECT s.学号,姓名,AVG(成绩) 平均成绩 FROM student s,score sc;WHERE s.学号=sc.学号 AND COUNT(*)=5;GROUP BY s.学号 ORDER BY 平均成绩 DESCD.SELECT s.学号,姓名,AVG(成绩) 平均成绩 FROM student s,score sc;WHERE s.学号=sc.学号;GROUP BY s.学号 HAVING COUNT(*
39、)=5 ORDER BY 3 DESC42.查询 2009 年被借过书的图书编号和借书日期,正确的 SQL 语句是(分数:2.00)A.SELECT 图书编号,借书日期 FROM 借阅 WHERE 借书日期=2009B.SELECT 图书编号,借书日期 FROM 借阅 WHERE year(借书日期)=2009C.SELECT 图书编号,借书日期 FROM 借阅 WHERE 借书日期=year(2009)D.SELECT 图书编号,借书日期 FROM 借阅 WHERE year(借书日期)=year(2009)43.设有读者(借书证号,单位,姓名,职称)和借阅(借书证号,图书编号,借书日期,还
40、书日期)表,查询所有“工程师”读者借阅过的图书编号,正确的 SQL 语句是(分数:4.00)A.SELECT 图书编号 FROM 读者,借阅 WHERE 职称=“工程师“B.SELECT 图书编号 FROM 借阅 WHERE 图书编号=;(SELECT 图书编号 FROM 借阅 WHERE 职称=“工程师“)C.SELECT 图书编号 FROM 借阅 WHERE 借书证号 IN;(SELECT 借书证号 FROM 读者 WHERE 职称=“工程师“)D.SELECT 图书编号 FROM 读者,图书 WHERE 职称=“工程师“44.设有订单表 order(其中包含字段:订单号,客户号,职员号,
41、签订日期,金额),删除 2002 年 1 月 1日以前签订的订单记录,正确的 SQL 命令是(分数:4.00)A.DELETE TABLE order WHERE 签订日期2002-1-1B.DELETE TABLE order WHILE 签订日期2002-1-1C.DELETE FROM order WHERE 签订日期2002-1-1D.DELETE FROM order WHILE 签订日期2002-1-145.计算每名运动员的“得分”的正确 SQL 语句是(分数:4.00)A.UPDATE 运动员 FIELD 得分=2*投中 2 分球+3*投中 3 分球+罚球B.UPDATE 运动员
42、 FIELD 得分 WTTH 2*投中 2 分球+3*投中 3 分球+罚球C.UPDATE 运动员 SET 得分 WTTH 2*投中 2 分球+3*投中 3 分球+罚球D.UPDATE 运动员 SET 得分=2*投中 2 分球+3*投中 3 分球+罚球46.使用如下数据表: 学生.DBF:学号(C,8),姓名(C,6),性别(C,2),出生日期(D) 选课.DBF:学号(C,8),课程号(C,3),成绩(N,5,1) 插入一条记录到“选课”表中,学号、课程号和成绩分别是“02080111”、“103”和 80,正确的 SQL 语句是(分数:4.00)A.INSERT INTO 选课 VALUE
43、S(“02080111“,“103“,80)B.INSERT VALUES(“02080111“,“103“,80) TO 选课(学号课程号成绩)C.INSERTVALUES(“02080111“,“103“,80) INTO 选课(学号,课程号成绩)D.INSERT INTO 选课(学号,课程号,成绩)FROM VALUES(“02080111“,“103“,80)二级 VISUAL+FOXPRO-94 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.在 SELECT 语句中,下列关于 HAVING 短语的描述中正确的是(分数:2.00)
44、A.HAVING 短语必须与 GROUP BY 短语同时使用 B.使用 HAVING 短语的同时不能使用 WHERE 短语C.HAVING 短语可以在任意的一个位置出现D.HAVING 短语与 WHERE 短语功能相同解析:解析 SQL 查询语句中,使用 GROUP BY 短语对查询结果进行分组。而 HAVING 短语必须跟随 GROUP BY 使用,它用来限定分组必须满足的条件,并且与 WHERE 不矛盾,在查询中先用 WHERE 子句限定元组。有 WHERE 子句时,GROUP BY 子句一般放在其后。2.在 SQL 的 SELECT 查询的结果中,消除重复记录的方法是(分数:2.00)A
45、.通过指定主索引实现B.通过指定惟一索引实现C.使用 DISTINCT 短语实现 D.使用 WHERE 短语实现解析:解析 本题考查 SQL 查询的几个特殊选项。在 SQL-SELECT 语句中,DISTINCT 关键词用于消除查询结果中的重复记录。3.假设每个歌手的“最后得分”的计算方法是:去掉一个最高分和一个最低分,取剩下分数的平均分。根据“评分”表求每个歌手的“最后得分”,并存储于表 TEMP 中,表 TEMP 中有两个字段:“歌手号”和“最后得分”,并且按最后得分降序排列,生成表 TEMP 的 SQL 语句是(分数:2.00)A.SELECT 歌手号,(COUNT(分数)-MAX(分数
46、)-MIN(分数)/(SUM(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 歌手号 ORDER BY 最后得分 DESCB.SELECT 歌手号,(COUNT(分数)-MAX(分数)-MIN(分数)/(SUM(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 评委号 ORDER BY 最后得分 DESCC.SELECT 歌手号,(SUM(分数)-MAX(分数)-MIN(分数)/(COUNT(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 评委号 ORDER BY 最后得分 DESCD.S
47、ELECT 歌手号,(SUM(分数)-MAX(分数)-MIN(分数)/(COUNT(*)-2) 最后得分;FROM 评分 INTO DBF TEMP GROUP BY 歌手号 ORDER BY 最后得分 DESC 解析:解析 SQL 具备计算方式的检索,通过计数函数 COUNT()可以得到评委的人数,歌手平均分的计算应该是“评委总数-2”,即 COUNT(*)-2,而 SUM()函数用于求和,所以排除选项 A 和 B。因为是计算歌手的平均分,应该按歌手号进行分组,使用 GROUP BY 短语可以对记录进行分组。4.与“SELECT * FROM 歌手 WHERE NOT(最后得分9.00 OR
48、 最后得分8.00)”等价的语句是(分数:2.00)A.SELECT * FROM 歌手 WHERE 最后得分 BETWEEN 9.00 AND 8.00B.SELECT * FROM 歌手 WHERE 最后得分=8.00 AND 最后得分=9.00 C.SELECT * FROM 歌手 WHERE 最后得分9.00 OR 最后得分8.00D.SELECT * FROM 歌手 WHERE 最后得分=8.00 AND 最后得分=9.00解析:解析 SELECT 查询命令的使用非常灵活,用它可以构造各种各样的查询。本题中给出的查询语句的功能是检索出最后得分不大于 9.00 或者不小于 8.00,即
49、小于或等于 9.00 和大于或等于 8.00 的歌手记录。5.假设 temp.dbf 数据表中有两个字段“歌手号”和“最后得分”,下面程序段的功能是:将 temp.dbf 中歌手的“最后得分”填入“歌手”表对应歌手的“最后得分”字段中(假设已增加了该字段),在下划线处应该填写的 SQL 语句是 USE 歌手 DO WHILE.NOT.EOF() _ REPLACE 歌手.最后得分 WITH a2 SKIP ENDDO(分数:2.00)A.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 TO ARRAY aB.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 INTO ARRAY a C.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 TO FILE aD.SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号 INTO FILE a解析:解析 由题目中给出的“REPLACE 歌手.最后得分 WITH a2”语句