国家二级VF机试(关系数据库标准语言SQL)模拟试卷2(共262题)_第1页
国家二级VF机试(关系数据库标准语言SQL)模拟试卷2(共262题)_第2页
国家二级VF机试(关系数据库标准语言SQL)模拟试卷2(共262题)_第3页
国家二级VF机试(关系数据库标准语言SQL)模拟试卷2(共262题)_第4页
国家二级VF机试(关系数据库标准语言SQL)模拟试卷2(共262题)_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级VF机试(关系数据库标准语言SQL)模拟试卷2(共9套)(共262题)国家二级VF机试(关系数据库标准语言SQL)模拟试卷第1套一、选择题(本题共30题,每题1.0分,共30分。)1、SQL的SELECT语句中,“HAVING”用来筛选满足条件的A、列B、行C、关系D、分组标准答案:D知识点解析:本题考查的是“HAVING”短语的含义。在SQL的SELECT语句中,GROUPBY<分组字段1>[,分组字段2…][HAVING分组限定条件],可以按一列或多列分组,还可以使用HAVING进一步限定分组的条件。HAVING子句总是跟在GROUPBY子句之后,不可以单独使用。2、在VisualFoxPro中,假设教师表T(教师号,姓名,性别,职称,研究生导师)中,性别是C型字段,研究生导师是L型字段。若要查询“是研究生导师的女老师”信息,那么SQL语句“SELECT*FROMTWHERE<逻辑表达式>”中的<逻辑表达式>应是A、研究生导师AND性别="女"B、研究生导师OR性别="女"C、性别="女"AND研究生导师=.F.D、研究生导师=.T.OR性别=女标准答案:A知识点解析:根据题意,查询应该同时满足两个条件,即“研究生导师”和“女老师”,两个条件应该用AND连接,故选项B)和选项C)错误;由于“研究生导师”字段是逻辑型,对应表达式应写为“研究生导师=.T.”或者“研究生导师”。3、查询学生选修课程成绩小于60分的学号,正确的SQL语句是A、SELECTDISTINCT学号FROMSCWHERE"成绩"<60B、SELECTDISTINCT学号FROMSCWHERE成绩<"60"C、SELECTDISTINCT学号FROMSCWHERE成绩<60D、SELECTDISTINCT"学号"FROMSCWHERE"成绩"<60标准答案:C知识点解析:查询条件“课程成绩小于60分”对应的条件表达式应该书写为“成绩<60”。4、查询学生表S的全部记录并存储于临时表文件one中的SQL命令是A、SELECT*FROM学生表INTOCURSORoneB、SELECT*FROM学生表TOCURSORoneC、SELECT*FROM学生表INTOCURSORDBFoneD、SELECT(FROM学生表TOCURSORDBFone标准答案:A知识点解析:将查询结果保存在临时表中应使用短语INTOCURSOR<表名>。5、查询成绩在70分至85分之间学生的学号、课程号和成绩,正确的SQL语句是A、SELECT学号,课程号,成绩FROMSCWHERE成绩BETWEEN70AND85B、SELECT学号,课程号,成绩FROMSCWHERE成绩>=70OR成绩<=85C、SELECT学号,课程号,成绩FROMSCWHERE成绩>=70OR<=85D、SELECT学号,课程号,成绩FROMSCWHERE成绩>=70AND<=85标准答案:A知识点解析:如果查询条件的值是在什么范围之内,可以使用BETWEEN…AND…运算。6、查询有选课记录,但没有考试成绩的学生的学号和课程号,正确的SQL语句是A、SELECT学号,课程号FROMSCWHERE成绩=""B、SELECT学号,课程号FROMSCWHERE成绩=NULLC、SELECT学号,课程号FROMSCWHERE成绩ISNULLD、SELECT学号,课程号FROMSCWHERE成绩标准答案:C知识点解析:查询空值时要使用ISNULL,而=NULL是无效的,因为空值不是一个确定的值,所以不能用“=”这样的运算符进行比较。7、查询选修C2课程号的学生姓名,下列SQL语句中错误是A、SELECT姓名FROMSWHEREEXISTS(SELECT*FROMSCWHERE学号=S.学号AND课程号=’C2’)B、SELECT姓名FROMSWHERE学号IN(SELECT学号FROMSCWHERE课程号=’C2’)C、SELECT姓名FROMSJOINSCONS.学号=SC.学号WHERE课程号=’C2’D、SELECT姓名FROMSWHERE学号=(SELECT学号FROMSCWHERE课程号=’C2’)标准答案:D知识点解析:选项A)中,使用EXISTS谓词来检查子查询中是否有结果返回,它的查询过程是:首先在外查询中,从S表中取出第一条记录,再在内查询中,针对该记录,在SC表中逐条记录判断是否存在符合where条件(即“选修C2课程号的学生”)的记录,如果存在,则从外查询的S表中查找出该记录对应的“姓名”值;然后依次类推,从S表中取出第二条记录,在内查询中与SC表中的所有记录进行比较,直到将S表中的所有记录都处理完毕。选项B)是嵌套查询,先在内查询中从SC表中获得选修了C2课程号的学生的“学号”,再在外查询中从S表中查找出这些“学号”对应学生的“姓名”,由于选修了C2课程号的学生可能不止一个,因此在内查询中获得的“学号”是一个集合,因此应该使用运算符IN。选项C)是联接查询,将S表和SC表以“学号”字段相等为条件进行联接,查找出选修了C2课程号的学生。8、在SQLSELECT语句中与INTOTABLE等价的短语是A、INTODBFB、TOTABLEC、INTOFORMD、INTOFILE标准答案:A知识点解析:SQLSELECT语句中INTOTABLE短语和INTODBF短语都可用来定义将查询结果存放到永久表中。另外,INTOARRAY将查询结果存放到数组,INTOCURSOR将查询结果存放到临时表,TOFILE将查询结果存放到文本文件中。9、若SQL语句中的ORDERBY短语中指定了多个字段,则A、依次按自右至左的字段顺序排序B、只按第一个字段排序C、依次按自左至右的字段顺序排序D、无法排序标准答案:C知识点解析:通过在SELECT语句中加入ORDERBY可将查询结果排序,可以按升序和降序排序,命令格式如下:ORDERBY<排序字段1>[ASCIDESC][,排序字段2[ASCIDESC]…]。ASC表示按升序排序,DESC表示按降序排序,可以按一列或多列排序,升序是默认的排列方式。如果短语中指定多个字段,则依次按自左向右的顺序进行排序。10、与“SELECT*FROM教师表INTODBFA”等价的语句是A、SELECT*FROM教师表TODBFAB、SELECT*FROM教师表TOTABLEAC、SELECT*FROM教师表INTOTABLEAD、SELECT*FROM教师表INTOA标准答案:C知识点解析:本题考查查询结果的去向。若在SELECT语句中使用INTODBF|TABLE<表名>,则可以将查询的结果存放到表中,该表是自由表。11、与“SELECT*FROM教师表INTODBFA”等价的语句是A、SELECT*FROM教师表TODBFAB、SELECT*FROM教师表TOTABLEAC、SELECT*FROM教师表INTOTABLEAD、SELECT*FROM教师表INTOA标准答案:C知识点解析:使用短语INTODBF|TABLETableName可以将查询结果存放到永久表中(dbf文件)。生成的表文件是一个自由表。所以与“SELECT*FROM教师表INTODBFA”等价的是“SEIECT*FROM教师表INTOTABLEA”。12、“教师表”中有“职工号”、“姓名”、“工龄”和“系号”等字段,“学院表”中有“系名”和“系号”等字段,计算“计算机”系教师总数的命令是A、SELECTCOUNT(*)FROM教师表INNERJOIN学院表;ON教师表.系号=学院表.系号WHERE系名="计算机"B、SELECTCOUNT(*)FROM教师表INNERJOIN学院表;ON教师表.系号=学院表.系号ORDERBY教师表.系号;HAVING学院表.系名="计算机"C、SELECTSUM(*)FROM教师表INNERJOIN学院表;ON教师表.系号=学院表.系号GROUPBY教师表.系号;HAVING学院表.系名="计算机"D、SELECTSUM(*)FROM教师表INNERJOIN学院表;ON教师表.系号=学院表.系号ORDERBY教师表.系号;HAVING学院表.系名="计算机"标准答案:A知识点解析:由于题意中要求计算系名为“计算机”的教师总数,所以SOL语句的WHERE子句应该为WHERE系名=“计算机”,所以正确的是选项A)。13、“教师表”中有“职工号”、“姓名”、“工龄”和“系号”等字段,“学院表”中有“系名”和“系号”等字段,求教师总数最多的系的教师人数,正确的命令序列是A、SELECT教师表.系号,COUNT(*)AS人数FROM教师表,学院表;GROUPBY教师表.系号INTODBFTEMPSELECTMAX(人数)FROMTEMPB、SELECT教师表.系号,COUNT(*)FROM教师表,学院表;WHERE教师表.系号=学院表.系号GROUPBY教师表.系号INTODBFTEMPSELECTMAX(人数)FROMTEMPC、SELECT教师表.系号,COUNT(*)AS人数FROM教师表,学院表;WHERE教师表.系号=学院表.系号GROUPBY教师表.系号TOFILETEMPSELECTMAX(人数)FROMTEMPD、SELECT教师表.系号,COUNT(*)AS人数FROM教师表,学院表;WHERE教师表.系号=学院表.系号GROUPBY教师表.系号INTODBFTEMPSELECTMAX(人数)FROMTEMP标准答案:D知识点解析:由于“教师表”与“学院表”是通过“系号”进行关系的连接,而选项A)没有WHERE子句,所以选项A)是错误的。选项B)中,由于接下来的SQL语句“SELECTMAX(人数)FROMTEMP”的字段名称为“人数”,而第一条SOL语句没有对查询的结果进行重命名,会产生错误。选项C)中的SQL语句使用短语INTOFILEFileName[ADDITIVE]可以将查询结果存放到文本文件中,FileName是文件名,默认扩展名是txt,接下来的SOL语句“SEI.ECTMAX(人数)FROMTEMP”会产生错误。14、查询尚未最后确定订购单的有关信息的正确命令是A、SELECT名称,联系人,电话号码,订单号FROM客户,订购单WHERE客户.客户号=订购单.客户号AND订购日期ISNULLB、SELECT名称,联系人,电话号码,订单号FROM客户,订购单WHERE客户.客户号=订购单.客户号AND订购日期=NULLC、SELECT名称,联系人,电话号码,订单号FROM客户,订购单FOR客户.客户号=订购单.客户号AND订购日期ISNULLD、SELECT名称,联系人,电话号码,订单号FROM客户,订购单FOR客户.客户号=订购单.客户号AND订购日期=NULL标准答案:A知识点解析:在SQLSELECT查询语句中,用where说明查询条件。在表中尚未确定的值用NULL值表示,而SQL中查询空值时要用ISNULL,不能用“=”。15、查询订购单的数量和所有订购单平均金额的正确命令是A、SELECTCOUNT(DISTINCT订单号),AVG(数量*单价)FROM产品JOIN订购单名细ON产品.产品号=订购单名细.产品号B、SELECTCOUNT(订单号),AVG(数量木单价)FROM产品JOIN订购单名细ON产品.产品号=订购单名细.产品号C、SELECTCOUNT(DISTINCT订单号),AVG(数量(单价)FROM产品,订购单名细ON产品.产品号=订购单名细.产品号D、SELECTCOUNT(订单号),AVG(数量*单价)FROM产品,订购单名细ON产品.产品号=订购单名细.产品号标准答案:A知识点解析:VFP的SELECT语句中用于内联接查询的语法是:SELECT…FROM表1[INNER]JOIN表2ON联接条件where……Count(、)和avg()都是SQL中用于计算的检索函数,其中Count用来计算记录个数,通常应该使用Distinct,除非对关系中的元组个数进行计算。这个题目中要求订购单的数量,显然应该对订单号计数,但订购单明细表中的订单号是有重复的(因为一份订单上可能有多种产品),因此应该在count()中使用Distinct。AVg函数是用来计算平均值的。产品金额=数量木单价。16、查询第一作者为“张三”的所有书名及出版社,正确的SQL语句是A、SELECT书名,出版社FROM图书WHERE第一作者=张三B、SELECT书名,出版社FROM图书WHERE第一作者="张三"C、SELECT书名,出版社FROM图书WHERE"第一作者"=张三D、SELECT书名,出版社FROM图书WHERE"第一作者"="张三"标准答案:B知识点解析:本题考查SELECT语句的正确应用。要查询第一作者为“张三”的所有书名及出版社,那么书名及出版社是要查询的列,查询源是图书表,条件是第一作者为“张三”。17、查询尚未归还的图书编号和借书日期,正确的SQL语句是A、SELECT图书编号,借书日期FROM借阅WHERE还书目期=""B、SELECT图书编号,借书日期FROM借阅WHERE还书日期=NULLC、SELECT图书编号,借书日期FROM借阅WHERE还书日期ISNULLD、SELECT图书编号,借书日期FROM借阅WHERE还书日期标准答案:C知识点解析:在SQL语句中,空值查询用ISNULL。18、查询“读者”表的所有记录并存储于临时表文件one中的SQL语句是A、SELECT*FROM读者INTOCURSORoneB、SELECT*FROM读者TOCURSORoneC、SELECT*FROM读者INTOCURSORDBFoneD、SELECT*FROM读者TOCURSORDBFone标准答案:C知识点解析:在SQL语句中,空值查询用ISNULL。19、查询单位名称中含“北京”字样的所有读者的借书证号和姓名,正确的SQL语句是A、SELECT借书证号,姓名FROM读者WHERE单位="北京%"B、SELECT借书证号,姓名FROM读者WHERE单位="北京*"C、SELECT借书证号,姓名FROM读者WHERE单位LIKE"北京*"D、SELECT借书证号,姓名FROM读者WHERE单位LIKE"%北京%"标准答案:A知识点解析:在SQL语句中,将查询结果保存在临时表中应使用短语INTOCURSOR。20、SQL语句中,能够判断“订购日期”字段是否为空值的表达式是A、订购日期=NULLB、订购日期=EMPTYC、订购日期ISNULLD、订购日期ISEMPTY标准答案:D知识点解析:在SQL的WHRER子句的条件表达式中,字符串匹配的运算符是LIKE,通配符“%”表示0个或多个字符,另外还有一个通配符“_”表示一个字符。21、查询在“北京”和“上海”区域的商店信息的正确命令是A、SELECT*FROM商店WHERE区域名=’北京’AND区域名=’上海’B、SELECT*FROM商店WHERE区域名=’北京’OR区域名=’上海’C、SELECT*FROM商店WHERE区域名=’北京’AND’上海’D、SELECT*FROM商店WHERE区域名=’北京’OR’上海’标准答案:C知识点解析:在SQL,语句中支持空值查询,用ISNULL表示。22、查询商品单价在10到50之间、并且日销售数量高于20的商品名、单价、销售日期和销售数量,查询结果按单价降序。正确命令是A、SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售WHERE(单价BETWEEN10AND50)AND销售数量>20ORDERBY单价DESCB、SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售WHERE(单价BETWEEN10AND50)AND销售数量>20ORDERBY单价C、SELECT商品名,单价,销售日期,销售数量FROM商品,销售WHERE(单价BETWEEN10AND50)AND销售数量>20ON商品.商品号=销售.商品号ORDERBY单价D、SELECT商品名,单价,销售日期,销售数量FROM商品,销售WHERE(单价BETWEEN10AND50)AND销售数量>20AND商品.商品号=销售.商品号ORDERBY单价DESC标准答案:D知识点解析:可以用JOIN…ON…语法进行超连结查询,也可以用WHERE直接表示数据表连接条件。ORDERBY短语表示排序,DESC短语表示降序。23、查询销售金额合计超过20000的商店,查询结果包括商店名和销售金额合计。正确命令是A、SELECT商店名,SUM(销售数量*单价)AS销售金额合计FROM商店,商品,销售WHERE销售金额合计20000B、SELECT商店名,SUM(销售数量*单价)AS销售金额合计>20000FROM商店,商品,销售WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号C、SELECT商店名,SUM(销售数量*单价)AS销售金额合计FROM商店,商品,销售WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号ANDSUM(销售数量木单价)>20000GROUPBY商店名D、SELECT商店名,SUM(销售数量枣单价)AS销售金额合计FROM商店,商品,销售WHERE商品.商品号=销售.商品号AND商店.商店号=销售.商店号GROUPBY商店名HAVINGSUM(销售数量*单价)>20000标准答案:D知识点解析:用WHERE表示数据表连接条件;用GROUPBY表示分组,HAVING总是跟在GROUPBY之后,用来限定分组,即HAVING是用来表示选择分组的条件。24、设有学生表student(学号,姓名,性别,出生日期,院系)、课程表course(课程号,课程名,学时)和选课表score(学号,课程号,成绩),查询同时选修课程号为C1和C5课程的学生的学号,正确的命令是A、SELECT学号FROMscorescWHERE课程号=’C1’AND学号IN;(SELECT学号FROMscorescWHERE课程号=’C5’)B、SELECT学号FROMscorescWHERE课程号=’C1’AND学号=;(SELECT学号FROMscorescWHERE课程号=’C5’)C、SELECT学号FROMscorescWHERE课程号=’C1’AND课程号=’C5’D、SELECT学号FROMscorescWHERE课程号=’C1’OR’C5’标准答案:A知识点解析:本题考查SELECT语句中in短语的应用。in(),括号中是子查询,返回结果集,换句话说子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表,符合要求的输出,反之则不输出。在选项A)中,IN后面的子查询查找到所有课程号=’C5’的学生的学号,再在这个集合中,查询课程号=’C1’的学生的学号。25、SQL查询命令的结构是SELECT...FROM...WHERE...GROUPBY...HAVING...ORDERBY...,其中指定查询条件的短语是A、SELECTB、FROMC、WHERED、ORDERBY标准答案:C知识点解析:在SQL查询语中,WHERE是说明查询条件,即选择元组的条件。26、SQL查询命令的结构是SELECT...FROM...WHERE...GROUPBY...HAVING...ORDERBY...,其中HAVING必须配合使用的短语是A、FROMB、GROUPBYC、WHERED、ORDERBY标准答案:B知识点解析:在SQL查询中,HAVING总是跟在GROUPBY之后,用来限定分组条件。27、如果在SQL查询的SELECT短语中使用TOP,则应该配合使用A、HAVING短语B、GROUBY短语C、WHERE短语D、ORDERBY短语标准答案:D知识点解析:TOP表示排序后满足条件的前几条记录。所以需要和ORDERBY同时使用。28、设有学生表student(学号,姓名,性别,出生日期,院系)、课程表course(课程号,课程名,学时)和选课表score(学号,课程号,成绩),查询“计算机系”学生的学号、姓名、学生所选课程的课程名和成绩,正确的命令是A、SELECTs.学号,姓名,课程名,成绩FROMstudentS,scoresc,coursec;WHEREs.学号=sc.学号,sc.课程号=c.课程号,院系=’计算机系’B、SELECT学号,姓名,课程名,成绩FROMstudents,scoresc,coursec;WHEREs.学号=sc.学号ANDsc.课程号=c.课程号AND院系=’计算机系’C、SELECTs.学号,姓名,课程名,成绩FROM(studentsJOINscoresc;ONs.学号=sc.学号)JOINcoursecONSC.课程号=c.课程号;WHERE院系=’计算机系’D、SELECT学号,姓名,课程名,成绩FROM(studentsJOINscoresc;ONs.学号=sc.学号)JOINcoursecONsc.课程号=c.课程号;WHERE院系=’计算机系’标准答案:C知识点解析:本题考查三个表之间的联接查询。在用SELECT语句进行联接查询,要用JOIN关键字,ON关键字是两表进行联接的字段,对于本题来说,先以s.学号=sc.学号进行学生表和选课表之间联接,再以sc.课程号=c.课程号进行选课表和课程表之间的联接。29、设有学生表student(学号,姓名,性别,出生日期,院系)、课程表course(课程号,课程名,学时)和选课表score(学号,课程号,成绩),查询所修课程成绩都大于等于85分的学生的学号和姓名,正确的命令是A、SELECT学号,姓名FROMstudentsWHERENOTEXISTS(SELECT*FROMscoresc;WHEREsc.学号=s.学号AND成绩<85)B、SELECT学号,姓名FROMstudentsWHERENOTEXISTS(SELECT*FROMscoresc;WHEREsc.学号=s.学号AND成绩>=85)C、SELECT学号,姓名FROMstudents,scorescWHEREs.学号=sc.学号AND成绩>=85D、SELECT学号,姓名FROMstudents,scorescWHEREs.学号=sc.学号ANDALL成绩>=85标准答案:A知识点解析:本题考查SELECT语句中关键字EXISTS的应用。EXISTS是用来判断子查询中是否有或没有结果返回,当EXISTS(查询)有返回时,则返回真,否则返回假。NOTEXISTS则相反。EXISTS做为wHERE条件时,是先对wHERE前的主查询进行查询,然后用主查询的结果一个一个的代入EXISTS的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。选项A)的子查询是查询出选课表中的学号等于学生学号并且学生成绩小于85分的所有学生记录。而在主查询中找出所有学生的学生和姓名不在子查询集的记录就是题目的要求。30、设有学生表student(学号,姓名,性别,出生日期,院系)、课程表course(课程号,课程名,学时)和选课表score(学号,课程号,成绩),查询选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是A、SELECTs.学号,姓名,平均成绩FROMstudents,scorescWHEREs.学号=sc.学号;GROUPBYs.学号HAVINGCOUNT(*)>=5ORDERBY平均成绩DESCB、SELECT学号,姓名,AVG(成绩)FROMstudents,scoresc;WHEREs.学号=sc.学号ANDCOUNT(*)>=5GROUPBY学号ORDERBY3DESCC、SELECTs.学号,姓名,AVG(成绩)平均成绩FROMstudents,scoresc;WHEREs.学号=sc.学号ANDCOUNT(*)>=5;GROUPBYs.学号ORDERBY平均成绩DESCD、SELECTs.学号,姓名,AVG(成绩)平均成绩FROMstudents,scoresc;WHEREs.学号=sc.学号;GROUPBYs.学号HAVINGCOUNT(*)>=5ORDERBY3DESC标准答案:D知识点解析:本题考查SELECT语句中分组和排序短语。在SELECT语句中分组语使用GROUPBYHAVING关键字,排序使用ORDERBY短语,降序使用DESC,本题中用学号分组,用HAVINGCOUNT(*)>=5对分组进行筛选,用ORDERBY3DESC按平均成绩降序排序。国家二级VF机试(关系数据库标准语言SQL)模拟试卷第2套一、选择题(本题共29题,每题1.0分,共29分。)1、使用如下关系:客户(客户号,名称,联系人,邮政编码,电话号码)产品(产品号,名称,规格说明,单价)订购单(订单号,客户号,订购日期)订购单明细(订单号,序号,产品号,数量)查询客户名称中有“网络”二字的客户信息的正确命令是A、SELECT*FROM客户FOR名称LIKE"%网络%"B、SELECT*.FROM客户.FOR名称="%网络%"C、SELECT*FROM客户WHERE名称="%网络%"D、SELECT*FROM客户WHERE名称LIKE"%网络%"标准答案:D知识点解析:VisualFoxPro的SQLSELECT命令的语法格式中WHERE说明查询条件,即选择元组的条件,并且查询语法中没有关键词FOR,所以选项D正确。2、基于学生表S和学生选课表SC两个数据表,它们的结构如下:S(学号,性别,年龄)其中学号、姓名和性别为C型字段,年龄为N型字段。SC(学号,课程号,成绩),其中学号和课程号为C型字段,成绩为N型字段(初始为空值)。查询有选课记录,但没有考试成绩的学生的学号和课程号,正确的SQL语句是A、SELECT学号,课程号FROMscWHERE成绩=""B、SELECT学号,课程号FROMscWHERE成绩=NULLC、SELECT学号,课程号FROMscWHERE成绩ISNULLD、SELECT学号,课程号FROMscWHERE成绩标准答案:C知识点解析:“没有考试成绩”表示成绩字段值为空,而表示空值时应该用“isnull”而不能用“=”,故选项C)正确。3、基于图书表、读者和借阅表三个数据库表,它们的结构如下:图书(图书编号,书名,第一作者,出版社):图书编号、书名、第一作者和出版社为C型字段,图书编号为主关键字;读者(借书证号,单位,姓名,职称):借书证号、单位、姓名、职称为C型字段,借书证号为主关键字;借阅(借书证号,图书编号,借书日期,还书日期):借书证号和图书编号为C型字段,借书日期和还书日期为D型字段,还书日期默认值为NULL,借书证号和图书编号共同构成主关键字。查询单位名称中含“北京”字样的所有读者的借书证号的姓名,正确的SQL语句是A、SELECT借书证号,姓名FROM读者WHERE单位="北京%"B、SELECT借书证号,姓名FROM读者WHERE单位="北京*"C、SELECT借书证号,姓名FROM读者WHERE单位LIKE"北京*"D、SELECT借书证号,姓名FROM读者WHERE单位LIKE"%京%"标准答案:D知识点解析:SQL语句中模糊匹配应使用语句LIKE关键字,所以选项D)为正确答案。4、使用如下三个数据库表:图书(索书号,书名,出版社,定价,ISBN)借书证(借书证号,姓名,性别,专业,所在单位)借书记录(借阅号,索书号,借书证号,借书日期,还书日期)其中:定价是货币型,借书日期和还书日期是日期型,其他是字符型。查询借书证上专业为“计算机”的所有信息,正确的SQL语句是A、SELECT*FEOM借书证WHERE专业="计算机"B、SELECT借书证号FEOM借书证WHERE专业="计算机"C、SELECTALLFEOM借书证WHERE专业="计算机"D、SELECTALLFEOM借书记录WHERE专业="计算机"标准答案:A知识点解析:此题要求查询所有的信息,即所有的字段。住SELECT查询语句中,要求查询所有字段,不只是查询“借书证号”字段,用“*”来表示要查询的所有字段,而不能使用ALL,故选项C)、D)错误,选项A)正确。5、在SOLSELECT查询中,为了使查询结果排序必须使用短语A、ASCB、DESCC、GROUPBYD、ORDERBY标准答案:D知识点解析:在SOLSELECT查询中,使用短语ORDERBY使查询结果排序,所以应选D。ASC表示升序排序,DESC表示降序排序,GROUPBY是指定分组。6、设有学生表S(学号,姓名,性别,年龄)、课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL语句是A、SELECT学号,姓名,课程名,成绩FROMS,SC,C;WHERES.学号=SC.学号ANDSC.学号=C.学号B、SELECT学号,姓名,课程名,成绩;FROM(SJOINSCONS.学号=SC.学号)JOINCONSC.课程号=C.课程号C、SELECTS.学号,姓名,课程名,成绩;FROMSJOINSCJOINCONS.学号=SC.学号ONSC.课程号=C.课程号D、SELECTS.学号,姓名,课程名,成绩;FROMSJOINSCJOINCONSC.课程号=C.课程号ONS.学号=SC.学号标准答案:D知识点解析:连接是关系的基本操作之一,连接查询是一种基于多个关系的查询。JOIN用来连接两个表,而ON短语指定两表连接的关键字。7、SQL的SELECT语句中,“HAVING<条件表达式>”用来筛选满足条件的A、列B、行C、关系D、分组标准答案:D知识点解析:元组是二维表中的一行,表示一个实体的所有属性的集合。在VisaulFoxPro中,元组被称为记录。SQLSELECT中的HAVING短语必须跟随GROUPBY使用,它用来限定分组必须满足的条件,进一步筛选满足条件的元组。8、在SELECT语句中,下列关于HAVING短语的描述中正确的是A、HAVING短语必须与GROUPBY短语同时使用B、使用HAVING短语的同时不能使用WHERE短语C、HAVING短语可以在任意的一个位置出现D、HAVING短语与WHERE短语功能相同标准答案:A知识点解析:SQL查询语句中,使用GROUPBY短语对查询结果进行分组。而HAVING短语必须跟随GROUPBY使用,它用来限定分组必须满足的条件,并且与WHERE不矛盾,在查询中先用WHERRE子句限定元组。有WHERE子句时,GROUPBY子句一般放在其后。9、与“SELECTDISTINCT歌手号FROM歌手WHERE最后得分>=ALL;(SELECT最后得分FROM歌手WHERESUBSTR(歌手号,1,1)="2")”等价的SQL语句是A、SELECTDISTINCT歌手号FROM歌手WHERE最后得分>=;(SELECTMAX(最后得分)FROM歌手WHERESUBSTR(歌手号,1,1)="2")B、SELECTDISTINCT歌手号FROM歌手WHERE最后得分>=;(SELECTMIN(最后得分)FROM歌手WHERESUBSTR(歌手号,1,1)="2")C、SELECTDISTINCT歌手号FROM歌手WHERE最后得分>=ANY;(SELECT最后得分FROM歌手WHERESUBSTR(歌手号,1,1)="2")D、SELECTDISTINCT歌手号FROM歌手WHERE最后得分>=SOME;(SELECT最后得分FROM歌手WHERESUBSTR(歌手号,1,1)="2")标准答案:A知识点解析:题干中的结果是结果是检索出最后得分大于歌手号第一个数字为“2”的所有歌手的歌手号,因为要大于所有第一个数字为“2”的歌手的最后得分,只要满足大于第一个数字为“2”的歌手最后得分即可,MAX函数可用来求最高分。10、SQL语言的查询语句是A、INSERTB、UPDATEC、DELETED、SELECT标准答案:D知识点解析:SQL的查询语句是SELECT,INSERT是插入语句,UPDATE是更新语句,DELETE是删除语句。11、查询成绩在70分至85分之间学生的学号、课程号和成绩,正确的SQL语句是A、SELECT学号,课程号,成绩FROMscWHERE成绩BETWEEN70AND85B、SELECT学号,课程号,成绩FROMscWHERE成绩>=70OR成绩<=85C、SELECT学号,课程号,成绩FROMscWHERE成绩>=70OR<=85D、SELECT学号,课程号,成绩FROMscWHERE成绩>=70AND<=85标准答案:A知识点解析:如果查询条件的值是在什么范围之内,可以使用BETWEEN…AND…运算12、与“SELECT*FROM教师表INTODBFA”等价的语句是A、SELECT*FROM教师表TODBFAB、SELECT*FROM教师表TOTABLEAC、SELECT*FROM教师表INTOTABLEAD、SELECT*FROM教师表INTOA标准答案:C知识点解析:本题考查查询结果的去向。若在SELECT语句中使用INTODBF|TABLE<表名>短语,则可以将查询的结果存放到表中,该表是自由表。所以应选C。13、查询订购单的数量和所有订购单平均金额的正确命令是A、SELECTCOUNT(DISTINCT订单号、),AVG(数量*单价)FROM产品JOIN订购单名细ON产品.产品号=订购单名细.产品号B、SELECTCOUNT(订单号),AVG(数量*单价、)FROM产品JOIN订购单名细ON产品.产品号=订购单名细.产品号C、SELECTCOUNT(DISTINCT订单号),AVG(数量(单价、)FROM产品,订购单名细ON产品.产品号=订购单名细.产品号D、SELECTCOUNT(订单号),AVG(数量*单价)FROM产品,订购单名细ON产品.产品号=订购单名细.产品号标准答案:A知识点解析:VFP的SQLSELECT中内联接查询的语法是:SELECT…FROM表1[INNER]JOIN表2ON联接条件where……Count()和avg()都是SQL中用于计算的检索函数,其中Count用来计算记录个数,通常应该使用Distinct,除非对关系中的元组个数进行计算。这个题目中要求订购单的数量,显然应该对订单号计数,但订购单明细表中的订单号是有重复的(因为一份订单上可能有多种产品),因此应该在count()中使用Distinct。Avg函数是用来计算平均值的。产品金额=数量*单价。14、SQL语句中,能够判断“订购日期”字段是否为空值的表达式是A、订购日期=NULLB、订购日期=EMPTYC、订购日期ISNULLD、订购日期ISEMPTY标准答案:D知识点解析:在SQL的WHRER子句的条件表达式中,字符串匹配的运算符是LIKE,通配符“%”表示0个或多个字符,另外还有一个通配符“_”表示一个字符。15、SQL查询命令的结构是SELECT…FROM…WHERE…GROUPBY…HAVING…ORDERBY…,其中指定查询条件的短语是A、SELECTB、FROMC、WHERED、ORDERBY标准答案:C知识点解析:在SQL查询语句中,WHERE是说明查询条件,即选择元组的条件。16、设有学生表student(学号,姓名,性别,出生日期,院系)、课程表course(课程号,课程名,学时)和选课表score(学号,课程号,成绩),查询选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是A、SELECTs.学号,姓名,平均成绩FROMstudents,scorescWHEREs.学号=sc.学号;GROUPBYs.学号HAVINGCOUNT(*)>=5ORDERBY平均成绩DESCB、SELECT学号,姓名,AVG(成绩)FROMstudents,scoresc;WHEREs.学号=sc.学号ANDCOUNT(*)>=5GROUPBY学号ORDERBY3DESCC、SELECTs.学号,姓名,AVG(成绩)平均成绩FROMstudents,scoresc;WHEREs.学号=sc.学号ANDCOUNT(*)>=5;GROUPBYs.学号ORDERBY平均成绩DESCD、SELECTs.学号,姓名,AVG(成绩)平均成绩FROMstudents,scoresc;WHEREs.学号:sc.学号;GROUPBYs.学号HAVINGCOUNT(*)>=5ORDERBY3DESC标准答案:D知识点解析:本题考查SELECT语句中分组和排序短语。在SELECT语句中分组语使用GROUPBYHAVING关键字,排序使用ORDERBY短语,降序使用DESC,本题中用学号分组,用HAVINGCOUNT(*)>=5对分组进行筛选,用ORDERBY3DESC按平均成绩降序排序。17、有一学生表文件,且通过表设计器已经为该表建立了若干普通索引。其中一个索引的索引表达式为姓名字段,索引名为XM。现假设学生表已经打开,且处于当前工作区中,那么可以将上述索引设置为当前索引的命令是A、SETINDEXTO姓名B、SETINDEXTOXMC、SETORDERTO姓名D、SETORDERTO姓名标准答案:D知识点解析:将索引设置为当前索引的命令格式为:SETORDERTO[nIIlexNumbe|[tag]TagName][ASCENDING]DESCENDIN1,其中可以按索引序号umber)或索引名(TagName)指定索引项。索引序号是指建立索引的先后顺序号,并且按照SETORDERTOInaexfileList命令中的总序号排列。18、下表是用List命令显示的“运动员”表的内容和结构为“运动员”表增加一个字段“得分”的SQL语句是A、CHANGETABLE运动员ADD得分IB、ALTERDATA运动员ADD得分IC、ALTERTABLE运动员ADD得分ID、CHANGETABLE运动员INSERT得分I标准答案:C知识点解析:在SQL中,利用CreateTable语句进行数据定义,利用AlterTable语句修改表结构,利用DropTable语句删除表。19、建立表之间临时关联的命令是A、SETRELATIONTO……B、CREATERELATIONTO……C、TEMPRELATIONTO……D、CREATETEMPTO……标准答案:A知识点解析:用“setrelationto关键字into子表名”命令建立的不同工作区数据表之间的联系,这种联系叫临时关系,也叫关联,或在“数据工作期”窗口建立。建立关联的表中,总有一个是父表,其余为子表。临时关系的作用是每个打开的表都有一个记录指针,用以指向当前记录。在不同工作区中打开的各个表的记录指针通常是彼此独立的,建立了临时关系后,不同工作区的记录指针建立起一种临时的联动关系,当父表的指针移动时,子表的记录指针也随之移动,表被关闭后,临时关系自动解除。20、使用如下数据表:学生.DBF:学号(C,8),姓名(C,6),性别(C,2),出生日期(D)选课.DBF:学号(C,8),课程号(C,3),成绩(N,5,1)将学号为“02080110”、课程号为“102”的选课记录的成绩改为92,正确的SQL语句是A、UPDATE选课SET成绩WITH92WHERE学号="02080110"AND课程号"102"B、UPDATE选课SET成绩=92WHERE学号="02080110"AND课程号="102"C、UPDATEFROM选课SET成绩WITH92WHERE学号="02080110"AND课程号="102"D、UPDATEFROM选课SET成绩=92WHERE学号="02080110"AND课程号="102"标准答案:B知识点解析:SQL的数据更新命令格式是:UPDATE<表名>SET列名1=表达式1[,列名2=表达式2…][WHERE<条件表达式>]。一般使用WHERE子句指定条件,以更新满足条件的一些记录的字段值,并且一次可以更新多个字段。如果不使用WHERE子句,则更新全部记录。21、要使“产品”表中所有产品的单价上浮8%,正确的SQL语句是A、UPDATE产品SET单价=单价+单价*8%FORALLB、UPDATE产品SET单价=单价*1.08FORALLC、UPDATE产品SET单价=单价+单价*8%D、UPDATE产品SET单价=单价*1.08标准答案:D知识点解析:SQL的数据更新命令格式是:UPDATE<表名>SET列名1=表达式1[,列名2=表达式2…][WHERE<条件表达式>]一般使用WHERE子句指定条件,以更新满足条件的一些记录的字段值,并且一次可以更新多个字段。如果不使用WHERE子句,则更新全部记录。22、假设客户表中有客户号(关键字)C1~C10共10条客户记录,订购单表有订单号(关键字)OR1-OR8共8条订购单记录,并且订购单表参照客户表。如下命令可以正确执行的是A、INSERTINTO订购单VALUES(’OR5’,’C5’,{^2008/10/10})B、INSERTINTO订购单VALUES(’OR5’,’C11’,{^2008/10/10})C、INSERTINTO订购单VALUES(’OR9’,’C11’,{^2008/10/10})D、INSERTINTO订购单VALUES(’OR9’,’C5’,{^2008/10/10})标准答案:D知识点解析:客户表和订购单表是相互关联的表,其中客户号是公共字段,客户表是父表,订购单表是子表,题目中说明了订购单表参照客户表,即实施了参照完整性规则。当要向订购单表中插入一条记录时要注意两点:①新记录的订单号不能与表中已有记录的订单号重复,因为订单号是订购单表的主关键字。而题中说明订购单表中.已有订购单号OR1-OR8,就不能再插入订单号为OR5的记录,故可排除A、B选项。②由于订购单表要参照客户表,所以如果在要插入的记录中,联接字段值在父表中没有相匹配的值,则禁止插入。而题中说明父表客户表中并没有C11这个客户号,因此在子表订购单表中不能插入客户号为C11的记录,排除选项C。SOL中,插入操作的命令格式:insertintodbf_name[(fname1[,fname2,…])]values(eExpression1[,eExpression2,…]),其中dbf_name指定要插入的表,当插入的不是完整记录时,可以用fiaame1,fname2,….指定字段,values给出具体的记录值。23、在SQL语句中,插入一条新记录采用的命令是A、INSERTB、ADDC、UPDATED、CREATE标准答案:A知识点解析:本题考查插入记录的命令。在SQL语句中,插入一条新记录采用的命令是INSERT,其格式为:格式1:INSERTINTOdbf_name[(fnamel[,fiaame2,…])]VALUES(eXpression1[,eXpression2,…])格式2:INSERTINTOdbf_nameFROMARRAYArrayName|FROMMEMVAR24、插入一条记录到表结构为(职工号,姓名,工资)的表Employee中,正确的SQL命令是A、INSERTTOEmployeeVALUES("19620426","李平",8000)B、INSERTINTOEmployeeVALUES("19620426","李平",8000)C、INSERTINTOEmployeeRECORD("19620426","李平",8000)D、INSERTTOEmployeeRECORD("19620426","李平",8000)标准答案:B知识点解析:本题考查SQL的数据插入命令。格式如下格式1:INSERTINTOdbf_narne[(fiaame1[,fname2,…])]VALUES(eXpression1[,eXpression2,…])格式2.INSERTINTOdbf_nameFROMARRAYArrayName|FROMMEMVAR【说明】①INSERTINTOdbf_name说明向由dbf_name指定的表中插入记录;②当插入的不是完整的记录时,可以用fiaame1,fname2,…指定字段;③VALUSES(eXpression1[,eXpression2,…])给出具体的记录值;④FROMARRAYArrayName说明从指定的数组中插入记录值;⑤FROMMEMVAR说明根据同名的内存变量来插入记录值,如果同名的变量不存在,那么相应的字段值为默认值或空值。25、SQL命令:ALTERTABLESADD年龄ICHECK年龄>15AND年龄<30,该命令的含义是A、给数据库表S增加一个“年龄”字段B、将数据库表S中“年龄”字段取值范围修改为15至30岁之间C、给数据库表S中“年龄”字段增加一个取值范围约束D、删除数据库表s中的“年龄”字段标准答案:A知识点解析:本题考查ALTER命令的语法。给表新增一列的SQL命令格式为:ALTERTABLE表名ADD(COLUMN)列名数据类型列级约束题中命令的含义是给表S增加一个“年龄”字段,数据类型为整型,年龄的范围为15至30岁之间。26、SOL语句中修改表结构的命令是A、ALTERTABLEB、MODIFYTABLEC、ALTERSTRUCTURED、MODIFYSTRUCTURE标准答案:A知识点解析:SQL定义功能中,表结构修改的关键短语为ALTERTABLE,可直接通过语句修改表结构;选项B)和C)都是错误的命令语句;而选项D)中需要先打开表,然后通过MODIFYSTRUCTURE命令打开表设计器,修改当前表的结构。27、SQL语句中删除表的命令是A、DROPTABLEB、ERASETABLEC、DELETETABLED、DELETEDBF标准答案:A知识点解析:SQL语句中删除表的命令是:DROPTABLE<table_name>DROPTABLE直接从磁盘上删除<tablename>所对应的.dbf文件。28、表名为Employee的表结构是(职工号,姓名,工资),建立表Employee的SQL命令是A、CREATETABLEEmployee(职工号C(10),姓名C(20),工资Y、)B、CREATEEmployeeTABLE(职工号C(10),姓名C(20),工资Y)C、CREATEDATABASEEmployee(职工号C(10),姓名C(20),工资Y)D、CREATEEmployeeDATABASE(职工号C(10),姓名C(20),工资Y)标准答案:A知识点解析:本题考查sq1建立表的命令。格式为:CREATETABLEfDBF<表名>(字段名1字段类型1[(字段宽度)],字段名2字段类型2[(字段宽度)],…)[CHECK<条件表达式>][DEFAULT,<表达式>][PRIMARYKEY|UNIQUE]…)用CREATETABLE命令可以完成表设计器所能完成的所有功能。除具有建立表的基本功能外,CREATETABLE命令还可以建立主关键字(主索引)PRIMARYKEY、定义域完整性的CHECK约束、定义默认值的DEFAULT等。29、SQL语句中删除视图的命令是A、DROPTABLEB、DROPVIEWC、ERASETABLED、ERASEVIEW标准答案:B知识点解析:删除视图文件的命令格式是:DROPVIEW<视图文件名>;建立视图文件的命令式为:CREATEVIEW<视图文件名>。国家二级VF机试(关系数据库标准语言SQL)模拟试卷第3套一、选择题(本题共29题,每题1.0分,共29分。)1、在VisualFoxPro中,如下描述正确的是A、对表的所有操作,都不需要使用USE命令先打开表B、所有SQL命令对表的所有操作都不需使用USE命令先打开表C、部分SQL命令对表的所有操作都不需使用USE命令先打开表D、传统的FoxPro命令对表的所有操作都不需使用USE命令先打开表标准答案:B知识点解析:所有SQL命令对表的所有操作都不需使用USE命令先打开表。USE是VFP中用来打开表的命令。2、基于学生表S和学生选课表SC两个数据表,它们的结构如下:S(学号,性别,年龄)其中学号、姓名和性别为C型字段,年龄为N型字段。SC(学号,课程号,成绩),其中学号和课程号为C型字段,成绩为N型字段(初始为空值)。查询学生选修课程成绩小于60分的学号,正确的SQL语句是A、SELECTDISTINCT学号FROMSCWHERE"成绩"<60B、SELECTDISTINCT学号FROMSCWHERE成绩<"60"C、SELECTDISTINCT学号FROMSCWHERE成绩>60D、SELECTDISTINCT"学号"FROMSCWHERE"成绩">60标准答案:C知识点解析:题目要求查询学生选修课程成绩小于60分的学号,要查询的字段是学号字段,条件是成绩字段的值小于60分,学号和成绩字段在SC表中,所以查询应基于SC表进行,字段即字段变量是变量名,不需要加双引号,所以排除A、D选项。成绩字段为N型字段,即为数值型为数据,不需要加任何的定界符,所以选项B)也是不正确的,正确的SQL语句是SELECTDISTINCT学号FROMSCWHERE成绩>60,即选项C)。3、基于图书表、读者和借阅表三个数据库表,它们的结构如下:图书(图书编号,书名,第一作者,出版社):图书编号、书名、第一作者和出版社为C型字段,图书编号为主关键字;读者(借书证号,单位,姓名,职称):借书证号、单位、姓名、职称为C型字段,借书证号为主关键字;借阅(借书证号,图书编号,借书日期,还书日期):借书证号和图书编号为C型字段,借书日期和还书日期为D型字段,还书日期默认值为NULL,借书证号和图书编号共同构成主关键字。查询第一作者为“张三”的所有书名及出版社,正确的SQL语句是A、SELECT书名,出版社FROM图书WHERE第一作者=张三B、SELECT书名,出版社FROM图书WHERE第一作者="张三"C、SELECT书名,出版社FROM图书WHERE"第一作者"=张三D、SELECT书名,出版社FROM图书WHERE"第一作者"="张三"标准答案:B知识点解析:本题考察的知识点是SQL查询,在SQL,语句中,字段名不需要加引号,字段的取值则需要加引号。所以本题答案为B)。4、使用如下三个表:商店(商店号,商店名,区域名,经理名)商品(商品号,商品名,单价)销售(商店号,商品号,销售日期,销售数量)查询商品单价在10到50之间、并且日销售数量高于20的商品名、单价、销售日期和销售数量,查询结果按单价降序。正确命令是A、SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售WHERE(单价BETWEEN10AND50)AND销售数量>20ORDERBY单价DESCB、SELECT商品名,单价,销售日期,销售数量FROM商品JOIN销售WHERE(单价BETWEEN10AND50)AND销售数量>20ORDERBY单价C、SELECT商品名,单价,销售日期,销售数量FROM商品,销售WHERE(单价BETWEEN10AND50)AND销售数量>20ON商品.商品号=销售.商品号ORDERBY单价D、SELECT商品名,单价,销售日期,销售数量FROM商品,销售WHERE(单价BETWEEN10AND50)AND销售数量>20AND商品.商品号=销售.商品号ORDERBY单价DESC标准答案:D知识点解析:可以用JOIN…ON…语法进行超连接查询,也可以用WHERE直接表示数据表连接条件。ORDERBY短语表示排序,DESC短语表示降序。5、设有订单表order(其中包含字段:订单号,客户号,职员号,签订日期,金额),查询2007年所签订单的信息,并按金额降序排序,正确的SQL命令是A、SELECT*FROMorderWHEREYEAR(签订日期)=2007ORDERBY金额DESCB、SELECT*FROMorderWHILEYEAR(签订日期)=2007ORDERBY金额ASCC、SELECT*FROMorderWHEREYEAR(签订日期)=2007ORDERBY金额ASCD、SELECT*FROMorderWHILEYEAR(签订日期)=2007ORDERBY金额DESC标准答案:A知识点解析:根据SQL查询语句的基本结构,可以很容易发现选项B和选项D中,用来指定查询条件的WHERE关键字错误,首先排除这两个选项,然后,根据题目要求,需要按金额降序排序查询结果,在排序语句中,ASC短语表示升序排序,是默认的排序方式,可省略;而DESC短语表示降序排序,不可以缺少,选项A)和C)中,选项A)采用的是降序排序,与题目要求相符,正确答案为A)。6、设有学生表S(学号,姓名,性别,年龄),查询所有年龄小于等于18岁的女同学,并按年龄进行降序排序,生成新的表WS,正确的SQL语句是A、SELECT*FROMS:WHERE性别=’女’AND年龄<=18ORDERBY4DESCINTOTABLEWSB、SELECT*FROMS;WHERE性别=’女’AND年龄<=18ORDERBY年龄INTOTABLEWSC、SELECT*FROMS;WHERE性别=’女’AND年龄<=18ORDERBY’年龄’DESCINTOTABLEWSD、SELECT*FROMS;WHERE性别=’女’OR年龄<=18ORDERBY’年龄’ASCINTOTABLEWS标准答案:A知识点解析:题干中要求按年龄降序排列,在SQLSELECT中用来排序的关键短语是ORDERBY,可以指定排序方式为升序(ASC)或降序(DESC)。另外,字段名是变量,所以不能加引号,否则是表示一个字符型常量。7、使用如下数据表:学生.DBF:学号(C,8),姓名(C,6),性别(C,2),出生日期(D)选课.DBF:学号(C,8),课程号(C,3),成绩(N,5,1)假定学号的第3、4位为专业代码,要计算各专业学生选修课程号为“101”课程的平均成绩,正确的SQL语句是A、SELECT专业ASSUBS(学号,3,2),平均分ASAVG(成绩)FROM选课;WHERE课程号="101"GROUPBY专业B、SELECTSUBS(学号,3,2)AS专业,AVG(成绩)AS平均分FROM选课;WHERE课程号="101"GROUPBY1C、SELECTSUBS(学号,3,2)AS专业,AVG(成绩)AS平均分FROM选课;WHERE课程号="101"ORDERBY专业D、SELECT专业ASSUBS(学号,3,2),平均分ASAVG(成绩)FROM选课;WHERE课程号="101"ORDERBY1标准答案:B知识点解析:题干要求对各专业计算平均分,所以先要把不同专业的学生进行分组,然后再计算平均分。其中,SQLSELECT中的GROUPBY短句用于对查询结果进行分组,利用AVG()函数求得指定字段的平均值,其中“GROUPBY1”表示按输出结果的第一个字段进行分组。8、查询在“北京”和“上海”出生的学生信息的SQL语句是A、SELECT*FROM学生WHERE出生地=’北京’AND’上海’B、SELECT*FROM学生WHERE出生地:’北京’OR’上海’C、SELECT*FROM学生WHERE出生地=’北京’AND出生地=’上海’D、SELECT*FROM学生WHERE出生地=’北京’OR出生地=’上海’标准答案:D知识点解析:一个学生的出生地,要么在“北京”,要么在“上海”,所以两者的关系是“或”,用关键字or。9、与“SELECT*FROM歌手WHERENOT(最后得分>9.00OR最后得分<8.00)”等价的语句是A、SELECT*FROM歌手WHERE最后得分BETWEEN9.00AND8.00B、SELECT*FROM歌手WHERE最后得分>=8.00AND最后得分<=9.00C、SELECT*FROM歌手WHERE最后得分>9.00OR最后得分<8.00D、SELECT*FROM歌手WHERE最后得分<=8.00AND最后得分>=9.00标准答案:B知识点解析:SELECT查询命令的使用非常灵活,用它可以构造各种各样的查询。本题中给出的查询语句的功能是检索出最后得分不大于9.00或者不小于8.00,即小于或等于9.00和大于或等于8.00的歌手记录。10、设有S(学号,姓名,性别)和SC(学号,课程号,成绩)两个表,用下列SQL语句检索选修的每门课程的成绩都高于或等于85分的学生的学号、姓名和性别,正确的是A、SELECT学号,姓名,性别FROMsWHEREEXISTS;(SELECT*FROMscWHEREsc.学号=s.学号AND成绩<=85)B、SELECT学号,姓名,性别FROMsWHERENOTEXISTS;(SELECT*FROMscWHEREsc.学号=s.学号AND成绩<=85)C、SELECT学号,姓名,性别FROMsWHEREEXISTS;(SELECT*FROMscWHEREsc.学号=s.学号AND成绩>85)D、SELECT学号,姓名,性别FROMsWHERENOTEXISTS;(SELECT*FROMscWHEREsc.学号=s.学号AND成绩<85)标准答案:D知识点解析:题目中给出的四个选项为利用SQL谓词查询实现题干要求,正确的语句应该是:SELECT学号,姓名,性别FROMSWHERENOTEXISTS:(SELECT*FROMSCWHERESC.学号=S.学号AND成绩<85)或者:SELECT学号,姓名,性别FRoMSWHEREEXISTS:(SELECT*FROMSCWHERESC.学号=S.学号AND成绩>=85)。11、查询学生选修课程成绩小于60分的学号,正确的SQL语句是A、SELECTDISTINCT学号FROMSCWHERE"成绩"<60B、SELECTDISTINCT学号FROMSCWHERE成绩<"60"C、SELECTDISTINCT学号FROMSCWHERE成绩<60D、SELECTDISTINCT"学号"FROMSCWHERE"成绩"<60标准答案:C知识点解析:查询条件“课程成绩小于60分”对应的条件表达式应该书写为“成绩<60”。12、在SQLSELECT语句中与INTOTABLE等价的短语是A、INTODBFB、TOTABLEC、INTOFORMD、INTOFILE标准答案:A知识点解析:SOLSELECT。语句中INTOTABLE短语和INTODBF短语都可用来定义将查询结果存放到永久表中。另外,INTOARRAY将查询结果存放到数组,INTOCURSOR将查询结果存放到临时表,TOFILE将查询结果存放到文本文件中。13、“教师表”中有“职工号”、“姓名”、“工龄”和“系号”等字段,“学院表”中有“系名”和“系号”等字段,求教师总数最多的系的教师人数,正确的命令序列是A、SELECT教师表.系号,COUNT(*)AS人数FROM教师表,学院表;GROUPBY教师表.系号INTODBFTEMPSELECTMAX(人数)FROMTEMPB、SELECT教师表.系号,COUNT(*)FROM教师表,学院表;WHERE教师表.系号=学院表.系号GROUPBY教师表.系号INTODBFTEMPSELECTMAX(人数)FROMTEMPC、SELECT教师表.系号,COUNT(*)AS人数FROM教师表,学院表;WHERE教师表.系号=学院表.系号GROUPBY教师表.系号TOFILETEMPSELECTMAX(人数)FROMTEMPD、SELECT教师表.系号,COUNT(*)AS人数FROM教师表,学院表;WHERE教师表.系号=学院表.系号GROUPBY教师表.系号INTODBFTEMPSELECTMAX(人数)FROMTEMP标准答案:D知识点解析:由于“教师表”与“学院表”是通过“系号”进行关系的连接,而选项A)没有WHERE子句,所以选项A)是错误的。选项B)中,由于接下来的SQL语句“SELECTMAX(人数)FROMTEMP”的字段名称为“人数”,而第一条SQL语句没有对查询的结果进行重命名,会产生错误。选项C)中的SQL语句使用短语INTOFILEFileName[ADDITIVE]可以将查询结果存放到文本文件中,FileName是文件名,默认扩展名是txt,接下来的SOL语句“SELECTMAX(人数)FROMTEMP”会产生错误。14、查询“读者”表的所有记录并存储于临时表文件one中的SQL语句是A、SELECT*FROM读者INTOCURSORoneB、SELE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论