文档库 最新最全的文档下载
当前位置:文档库 › 数据库技术与应用SQL Server 2008第4章习题参考答案

数据库技术与应用SQL Server 2008第4章习题参考答案

第4章习题解答

1.思考题

(1)在SQL的查询语句SELECT中,使用什么选项实现投影运算?什么选项实现连接运算?什么选项实现选择运算?

答:在SQL的查询语句中,select选项实现(投影)运算,from选项实现(连接)运算,where选项实现(选择)运算。

(2)一个子SELECT的结果作为查询的条件,即在一个SELECT语句的WHERE子句中出现另一个SELECT语句,这种查询称为什么查询?其功能是什么?

答:称为嵌套查询。嵌套查询是T-SQL语言的高级查询,它可以用多个简单的基本查询构成复杂的查询,从而增强其查询功能。

(3)在SELECT语句中,定义一个区间范围的特殊运算符是什么?检查一个属性值是否属于一组值中的特殊运算符又是什么?

答:在SELECT 语句中,定义一个区间范围的特殊运算符是BETWEEN,检查一个属性值是否属于一组值的特殊运算符是IN。

(4)在T-SQL语句中,与表达式“工资BETWEEN 2000 AND 5000”功能相同的表达式如何写?

答:工资>=2000 AND 工资<=5000

(5)语句“SELECT * FROM 成绩表WHERE 成绩>(SELECT avg(成绩) FROM 成绩表)”的功能是什么?

答:查询成绩表中所有成绩大于平均成绩的记录

2.选择题

(1)在SELECT语句中,需显示的内容使用“*”,则表示(B)。

A.选择任何属性B.选择所有属性

C.选择所有元组D.选择主键

(2)查询时要去掉重复的元组,则在SELECT语句中使用( D)。

A.All B.UNION C.LIKE D.DISTINCT

(3)在SELECT语句中使用GROUP BY C_NO时,C_NO必须(C)。

A.在WHERE子句中出现B.在FROM子句出现

C.在SELECT子句中出现D.在HAVING子句中出现

(4)使用SELECT语句进行分组查询时,为了去掉不满足条件的分组,应当(B)。

A.使用WHERE子句

B.在GROUP BY后面使用HAVING子句

C.先使用WHERE子句,再使用HA VING子句

D.先使用HA VING子句,再使用WHERE子句

(5)在T-SQL语句中,与表达式“仓库号Not In("wh1","wh2")”功能相同的表达式是(D)。

A.仓库号="wh1" And 仓库号="wh2" B.仓库号<>"wh1" Or 仓库号<>"wh2"

C.仓库号<>"wh1" Or 仓库号="wh2" D.仓库号<>"wh1" And 仓库号<>"wh2"

第6~10题使用如下3个表:

第6~10题使用如下3个表:

部门:部门号Char (8),部门名Char (12),负责人Char (6),电话Char (16)

职工:部门号Char (8),职工号C har(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-27

C.SELECT * FROM 职工WHERE 出生日期="1972-10-27"

D.SELECT * FROM 职工WHERE 出生日期='1972-10-27'

(8)查询每个部门年龄最长者的信息,要求得到的信息包括部门名和最长者的出生日期,正确的命令是( A )。

A.SELECT 部门名,min(出生日期) FROM 部门JOIN 职工ON 部门.部门号=职工.部门号GROUP BY 部门名

B.SELECT 部门名,max(出生日期) FROM 部门JOIN 职工ON 部门.部门号=职工.部门号GROUP BY 部门名

C.SELECT 部门名,min(出生日期) FROM 部门JOIN 职工WHERE 部门.部门号=职工.部门号GROUP BY 部门名

D.SELECT 部门名,max(出生日期) FROM 部门JOIN 职工WHERE 部门.部门号=职工.部门号GROUP BY 部门名

(9)查询所有目前年龄在35岁以上(不含35岁)的职工信息(姓名、性别和年龄),正确的命令是(C)。

A.SELECT 姓名,性别,YEAR(GETDATE())-YEAR(出生日期) AS 年龄FROM 职工WHERE 年龄>35

B.SELECT 姓名,性别,YEAR(GETDATE())-YEAR(出生日期) AS年龄FROM 职工WHERE YEAR(出生日期)>35

C.SELECT 姓名,性别,YEAR(GETDATE())-YEAR(出生日期) AS年龄FROM 职工WHERE YEAR(GETDATE())-YEAR(出生日期)>35

D.SELECT 姓名,性别,年龄=YEAR(GETDATE())-YEAR(出生日期) FROM 职工WHERE 出生日期>35

(10)查询有10名以上(含10名)职工的部门信息(部门名和职工人数),并按职工人数降序排序。正确的命令是(D)。

A.SELECT 部门名,COUNT(职工号) AS 职工人数FROM 部门,职工WHERE 部门.部门号=职工.部门号GROUP BY 部门名HAVING COUNT(*)>=10 ORDER BY COUNT(职工号)

ASC

B.SELECT 部门名,COUNT(职工号) AS 职工人数FROM 部门,职工WHERE 部门.部门号=职工.部门号GROUP BY 部门名HAVING COUNT(*)>=10 ORDER BY St_Info.St_ID DESC C.SELECT 部门名,COUNT(职工号) AS 职工人数FROM 部门,职工WHERE 部门.部门号=职工.部门号GROUP BY 部门名HAVING COUNT(*)>=10 ORDER BY 职工人数ASC

D.SELECT 部门名,COUNT(职工号) AS 职工人数FROM 部门,职工WHERE 部门.部门号=职工.部门号GROUP BY 部门名HAVING COUNT(*)>=10 ORDER BY 职工人数DESC

相关文档
相关文档 最新文档