1第4章习题解答1.思考题(1)在SQL的查询语句SELECT中,使用什么选项实现投影运算?什么选项实现连接运算?什么选项实现选择运算?答:在SQL的查询语句中,select选项实现(投影)运算,from选项实现(连接)运算,where选项实现(选择)运算。(2)一个子SELECT的结果作为查询的条件,即在一个SELECT语句的WHERE子句中出现另一个SELECT语句,这种查询称为什么查询?其功能是什么?答:称为嵌套查询。嵌套查询是T-SQL语言的高级查询,它可以用多个简单的基本查询构成复杂的查询,从而增强其查询功能。(3)在SELECT语句中,定义一个区间范围的特殊运算符是什么?检查一个属性值是否属于一组值中的特殊运算符又是什么?答:在SELECT语句中,定义一个区间范围的特殊运算符是BETWEEN,检查一个属性值是否属于一组值的特殊运算符是IN。(4)在T-SQL语句中,与表达式“工资BETWEEN2000AND5000”功能相同的表达式如何写?答:工资=2000AND工资=5000(5)语句“SELECT*FROM成绩表WHERE成绩(SELECTavg(成绩)FROM成绩表)”的功能是什么?答:查询成绩表中所有成绩大于平均成绩的记录2.选择题(1)在SELECT语句中,需显示的内容使用“*”,则表示(B)。A.选择任何属性B.选择所有属性C.选择所有元组D.选择主键(2)查询时要去掉重复的元组,则在SELECT语句中使用(D)。A.AllB.UNIONC.LIKED.DISTINCT(3)在SELECT语句中使用GROUPBYC_NO时,C_NO必须(C)。A.在WHERE子句中出现B.在FROM子句出现C.在SELECT子句中出现D.在HAVING子句中出现(4)使用SELECT语句进行分组查询时,为了去掉不满足条件的分组,应当(B)。A.使用WHERE子句B.在GROUPBY后面使用HAVING子句C.先使用WHERE子句,再使用HAVING子句2D.先使用HAVING子句,再使用WHERE子句(5)在T-SQL语句中,与表达式“仓库号NotIn(wh1,wh2)”功能相同的表达式是(D)。A.仓库号=wh1And仓库号=wh2B.仓库号wh1Or仓库号wh2C.仓库号wh1Or仓库号=wh2D.仓库号wh1And仓库号wh2第6~10题使用如下3个表:第6~10题使用如下3个表:部门:部门号Char(8),部门名Char(12),负责人Char(6),电话Char(16)职工:部门号Char(8),职工号Char(10),姓名Char(8),性别Char(2),出生日期Datetime工资:职工号Char(10),基本工资Numeric(8,2),津贴Numeric(8,2),奖金Numeric(8,2),扣除Numeric(8,2)(6)查询职工实发工资的正确命令是(C)。A.SELECT姓名,(基本工资+津贴+奖金-扣除)AS实发工资FROM工资B.SELECT姓名,(基本工资+津贴+奖金-扣除)AS实发工资FROM工资WHERE职工.职工号=工资.职工号C.SELECT姓名,(基本工资+津贴+奖金-扣除)AS实发工资FROM工资,职工WHERE职工.职工号=工资.职工号D.SELECT姓名,(基本工资+津贴+奖金-扣除)AS实发工资FROM工资JOIN职工WHERE职工.职工号=工资.职工号(7)查询1972年10月27日出生的职工信息的正确命令是(D)。A.SELECT*FROM职工WHERE出生日期={1972-10-27}B.SELECT*FROM职工WHERE出生日期=1972-10-27C.SELECT*FROM职工WHERE出生日期=1972-10-27D.SELECT*FROM职工WHERE出生日期='1972-10-27'(8)查询每个部门年龄最长者的信息,要求得到的信息包括部门名和最长者的出生日期,正确的命令是(A)。A.SELECT部门名,min(出生日期)FROM部门JOIN职工ON部门.部门号=职工.部门号GROUPBY部门名B.SELECT部门名,max(出生日期)FROM部门JOIN职工ON部门.部门号=职工.部门号GROUPBY部门名C.SELECT部门名,min(出生日期)FROM部门JOIN职工WHERE部门.部门号=职工.部门号GROUPBY部门名D.SELECT部门名,max(出生日期)FROM部门JOIN职工WHERE部门.部门号=职工.部门号GROUPBY部门名(9)查询所有目前年龄在35岁以上(不含35岁)的职工信息(姓名、性别和年龄),正确的命令是(C)。A.SELECT姓名,性别,YEAR(GETDATE())-YEAR(出生日期)AS年龄FROM职工WHERE年龄35B.SELECT姓名,性别,YEAR(GETDATE())-YEAR(出生日期)AS年龄FROM职工WHEREYEAR(出生日期)35C.SELECT姓名,性别,YEAR(GETDATE())-YEAR(出生日期)AS年龄FROM职工WHEREYEAR(GETDATE())-YEAR(出生日期)35D.SELECT姓名,性别,年龄=YEAR(GETDATE())-YEAR(出生日期)FROM职工WHERE出生日期353(10)查询有10名以上(含10名)职工的部门信息(部门名和职工人数),并按职工人数降序排序。正确的命令是(D)。A.SELECT部门名,COUNT(职工号)AS职工人数FROM部门,职工WHERE部门.部门号=职工.部门号GROUPBY部门名HAVINGCOUNT(*)=10ORDERBYCOUNT(职工号)ASCB.SELECT部门名,COUNT(职工号)AS职工人数FROM部门,职工WHERE部门.部门号=职工.部门号GROUPBY部门名HAVINGCOUNT(*)=10ORDERBYSt_Info.St_IDDESCC.SELECT部门名,COUNT(职工号)AS职工人数FROM部门,职工WHERE部门.部门号=职工.部门号GROUPBY部门名HAVINGCOUNT(*)=10ORDERBY职工人数ASCD.SELECT部门名,COUNT(职工号)AS职工人数FROM部门,职工WHERE部门.部门号=职工.部门号GROUPBY部门名HAVINGCOUNT(*)=10ORDERBY职工人数DESC