参考答案:C【解析】修改表结构可使用ALTER TABLE命令,为表增加字段的命令格式为:
ALTER TABLE <表名>
ADD[COLUMN]<字段类型>[<长度>[,<小数位数>])][NULL|NOT NULL]
[CHECK <逻辑表达式1>[ERROR <字符型文本提示信息>]][DEFAULT <默认值表达式>]
[ADD PRIMARY KEY <索引表达式2> TAG <索引名1>]
[ADD UNIQUE <索引表达式3> TAG <索引名2>]
套用ALTER TABLE的命令格式,选项C)正确。
33. 设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,并假定学号的第3、4位为专业代码。要计算各专业学生选修课程号为"101"课程的平均成绩,正确的SQL语句是( )。
A) SELECT 专业 AS SUBS(学号,3,2),平均分 AS AVG (成绩)FROM 选课 WHERE 课程号="101" GROUP BY 专业
B) SELECT SUBS(学号,3,2)AS 专业, AVG(成绩)AS 平均分 FROM 选课 WHERE 课程号="101" GROUP BY 1
C) SELECT SUBS(学号,3,2)AS 专业, AVG(成绩)AS 平均分 FROM 选课 WHERE 课程号="101" ORDER BY 专业
D) SELECT专业 AS SUBS(学号,3,2),平均分 AS AVG (成绩)FROM 选课 WHERE 课程号="101" ORDER BY 1
参考答案:B【解析】SUBSTR(<字符表达式>,<起始位置>[,<长度>])为取子串函数,从指定表达式值的指定起始位置取指定长度的子串作为函数值。要计算各专业学生选修课程号为"101"课程的平均成绩,应按学号分组,即GROUP BY 1。因此B)为正确选项。
34. 设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,查询选修课程号为"101"课程得分最高的同学,正确的SQL语句是( )。
A) SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号="101" AND 成绩>=ALL(SELECT 成绩 FROM 选课)
B) SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 成绩>=ALL (SELECT 成绩 FROM 选课 WHERE 课程号="101")
C) SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 成绩>=ANY(SELECT 成绩 FROM 选课 WHERE 课程号="101")
D) SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号="101" AND 成绩>=ALL (SELECT 成绩 FROM 选课 WHERE 课程号="101")
参考答案:D【解析】查询的基本形式由SELECT-FROM-WHERE查询块组成。其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,WHERE说明查询条件,即选择元组的条件。内层"SELECT 成绩 FROM 选课 WHERE 课程号="101""语句查询出了选修课程号为101的成绩,外层格式正确的为D)选项。
35. 在SELECT语句中,以下有关HAVING短语的正确叙述是( )。
A) HAVING短语必须与GROUP BY短语同时使用
B) 使用HAVING短语的同时不能使用WHERE短语
C) HAVING短语可以在任意的一个位置出现
D) HAVING短语与WHERE短语功能相同
参考答案:A【解析】HAVING子句总是跟在GROUP BY子句之后,而不可以单独使用,HAVING子句和WHERE子句并不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组。因此A)选项说法正确。
36. 在SQL的SELECT查询的结果中,消除重复记录的方法是( )。
A) 通过指定主索引实现 B) 通过指定唯一索引实现
C) 使用DISTINCT短语实现 D) 使用WHERE短语实现