单选题
(31)到(35)题使用如下数据表。
“学生”表:学号C(8),姓名C(8),性别C(2),系名(10),出生日期D
“课程”表:课程编号C(4),课程名称C(12),开课系名C(10)
“成绩”表:学号C(8),课程编号C(4),成绩I
单选题 检索每门课程的总分,查询结果中包括课程名和总分,正确的语句是( )。
【正确答案】 D
【答案解析】[解析] 进行SQL简单计算查询时,还可以加上GROUP BY子句进行分组计算查询。 通常来说,一个计算函数的范围是满足WHERE子句指定条件的所有记录。当加上GROUP BY子句后,系统会将查询结果按指定列分成集合组。当一个计算函数和一个GROUP BY子句一起使用时,计算函数的范围变为每组所有的记录。 本题通过“GROUP BY成绩.课程编号”可以先将记录按“课程编号”分组,然后再通过函数“SUM(成绩)AS总分”对每组记录求和。其中,通过AS短语可以对进行计算的字段指定一个新的字段名。另外,COUNT()函数是记数函数,ORDER BY是对查询结果进行排序的短语。
单选题 若有如下SQL查询语句: SELECT课程名称,开课系名,COUNT(学号)AS选修人数; FROM成绩,课程; WHERE课程.课程编号=成绩.课程编号; GROUP BY课程名称; HAVING COUNT(*)>3 上述语句所表示的含义是( )。
【正确答案】 C
【答案解析】[解析] 在分组与计算查询语句中,使用HAVING子句可以对分组进一步加以控制。用这个子句定义这些组所必须满足的条件,以便将其包含在结果中。当WHERE子句、GROUP BY子句和HAVING子句同时出现的时候,首先执行WHERE子句,从表中选择符合条件的行:然后由GROUP BY子句对选取的行进行分组;再执行计算函数;最后执行HAVING子句选取满足条件的分组。本题中,WHERE子句中指定的是两表连接的条件:接着通过 GROUP BY子句指明按“课程名称”对记录分组;然后执行函数COUNT()统计分组后,可以确定每门课程中共有多少名学生选修了该课程;最后通过HAVING子句进一步限定输出选修课程人数在三人以上的课程信息。
单选题 为“成绩”表中的“成绩”字段定义有效性检查及错误信息的提示,要求当成绩大于100分时,提示“成绩不能超过100分”的信息,正确的语句是( )。
【正确答案】 C
【答案解析】[解析] 利用SQL命令可以对基本表的结构进行修改,利用下列命令可以修改表结构、定义有效性规则: ALTER TABLE<表名> ALTER[COLUMN]<字段名1>[NULL|NOT NULL] [SET DEFAULT<表达式>] [SET CHECK<逻辑表达式>[ERROR<字符型文本信息>]] |[RENAME COLUMN<字段名2>TO<字段名3>] 其中,SETCHECK<逻辑表达式>[ERROR<字符型文本信息>]可以用来重新设置指定字段的合法值和错误信息提示。
单选题 利用SQL派生一个包含“课程名称”、“姓名”和“成绩”的视图,要求按“课程名称”升序排序,正确的语句是( )。
【正确答案】 D
【答案解析】[解析] 利用SQL命令可以定义直接建立视图,命令格式如下: CREATE VIEW视图名AS; SELECT语句 注意:在定义视图时,SELECT语句部分不需要用括号括起来,用来排序的SQL短语是ORDER BY,而GROUP BY短语的功能是对记录进行分组。
单选题 向“成绩”表末尾插入一条“学号”为“08102002”,“课程编号”为“4001”,“成绩”为“86”的新记录,正确的语句是( )。
【正确答案】 B
【答案解析】[解析] Visual FoxPro支持两种SQL插入格式,第一种为标准格式,第二种是Visual FoxPro的特殊格式。 第一种格式为: INSERT INTO<表名>[(字段名1[,字段名2,...])]; VALUES(表达式1[,表达式2,...]) 其中,INSERT INTO<表名>说明向指定的表中插入记录。当插入的不是完整的记录时,可以用字段名1,字段名2,...指定字段;VALUE(表达式1巳表达式2,...])给出具体的记录值。 插入记录时,要注意插入的数据的类型与其字段类型要相同,本题中成绩为整型数据,不能加字符串定界符(" ")。