单选题
第31到第(35)题基于学生表S和学生选课表SC两个数据库表,它们的结构如下:
S(学号,姓名,性别,年龄)其中学号、姓名和性别为C型字段,年龄为N型字段。
SC(学号,课程号,成绩),其中学号和课程号为C型字段,成绩为N型字段(初始为空值)。
单选题 查询学生选修课程成绩小于60分的学号,正确的SQL语句是 ______。
【正确答案】 C
【答案解析】[知识点] SQL中查询语句的用法 [评析] 题意要求查询学生选修课程成绩小于60分的学号,要查询的字段是学号字段,条件是成绩字段的值小于60分,学号和成绩字段在SC表中,所以查询应基于SC表进行,字段即字段变量是变量名,不需要加双引号,所以排除A、D选项。成绩字段为N型字段,即为数值型数据,不需要加任何的定界符。所以选项B也是不正确的,正确的SQL语句是SELECT DISTINCT 学号 FROM SC WHERE 成绩<60,即选项C。
单选题 查询学生表,S的全部记录并存储于临时表文件one中的SQL命令是 ______。
【正确答案】 A
【答案解析】
[知识点] 指定查询去向
[评析] Into cursor短语将查询结果存放到临时表中,格式为:select*fromInto cursor cursorname。题目要求查询学生表S的全部记录并存储于临时表文件one中,SQL命令为:SELECT*FROM S INTO CURSOR one,所以选项A是正确的,其它选项语法均不正确。
单选题 查询成绩在70分至85分之间学生的学号、课程号和成绩,正确的SQL语句是 ______。
【正确答案】 A
【答案解析】[知识点] Between…And的含义 [评析] 查询成绩在70分至85分之间学生的学号、课程号和成绩,这三个字段都在SC表中,因此查询结果应该是从SC表,成绩在70到85分之间是指包括边界70分和85分,A选项“WHERE 成绩 BETWEEN 70 AND 85”等价于“成绩>=70 and成绩<=85”,是符合题意的,所以选项A是正确的。成绩在70到85之间指成绩既要大于等于70又要小于等于85,两个条件之间的关系应该为“且”的关系,所以选项B、C均不正确。成绩小于等于85应该指明字段的字段名,所以选项D的表达式也是不正确的。
单选题 查询有选课记录,但没有考试成绩的学生的学号和课程号,正确的SQL语句是 ______。
【正确答案】 C
【答案解析】[知识点] 空值查询 [评析] 在SC表中成绩字段为数值型数据且初始为空值,本题要求查询出有选课记录,但没有考试成绩的学生的学号和课程号,只要成绩记录为空就说明没有考试成绩,即查询成绩字段为空值。查询空值时要使用IS NULL,而=NULL是无效的,因为空值不是一个确定的值,所以不能使用“=”这样的运算符进行比较,所以选项C的语法是正确的。
单选题 查询选修C2课程号的学生姓名,下列SQL语句中错误的是 ______。
【正确答案】 D
【答案解析】[知识点] 嵌套查询,连接查询 [评析] 要求查询选修C2课程号的学生的姓名,姓名字段在S表中,而课程号在SC表中,可知查询的结果来自一张表,而条件来自另一张表,所以这里可以用简单的连接查询或者用嵌套查询。 选项A使用谓语EXISTS进行查询,EXISTS或NOT EXISTS是用来检查在子查洵中是否有结果返回(即存在元组或不存在元组)。选项A先查询出SC表中选修了C2课程的所有信息,并指定SC表和S表通过学号公共字段建立联系,接着查询出姓名字段所对应的值,这种查询是可以达到目的的。 选项B是一个嵌套查询,首先在SC表中查出选修了C2课程的学生的学号,接着找出这些学号在S表中所对应的学生的姓名,从而查询出选修了C2课程的学生的姓名。 选项C是一个连接查询,SC表和S表首先通过学号字段建立连接,再找出选修了C2课程的学生的姓名。 选项D中先找出选修了C2课程的学生的学号,因为选修C2课程的学生可能不止一个,因此不能直接用“=”号,而应该用“IN",IN相当于集合运算符∈,所以选项D是错误的。