数据库第九章参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章T-SQL基础
P164
1.从功能上划分,SQL分为哪4类?[难度↓]
【解】SQL语句通常分成以下4类:
数据查询语言
数据操作语言
数据定义语言
数据控制语言
2.NULL代表什么含义?将其与其他值进行比较会产生什么结果?如果数值型列中存在NULL,会产生什么结果?[难度↓]
【解】在数据库中,NULL是一个特殊值,表示数值未知。
NULL不同于空字符或数字0,也不同于零长度字符串。
比较两个空值或将空值与任何其他数值相比均返回未知,这是因为每个空值均为未知。
空值通常表示未知、不可用或以后添加数据。
如果某个列上的空值属性为NULL,表示接受空值;空值属性为NOT NULL,表示拒绝空值。
如果数值型列中存在NULL,则在进行数据统计时就会产生不正确的结果。
3.使用T-SQL语句向表中插入数据应注意什么?[难度↓]
【解】在使用T-SQL语句向表中插入数据时要注意以下几点:
当向表中所有列都插入新数据时,可以省略列表名,但是必须保证VALUES 后的各数据项位置同表定义时的顺序一致。
要保证表定义时的非空列必须有值,即使这个非空列没有出现在插入语句中,也必须如此。
插入字符型和日期型值时,要加入单引号。
没有列出的数据类型应该具有以下属性之一:identity属性、timestamp 数据类型、具有NULL属性或者有一个默认值。
对于具有identity属性
的列,其值由系统给出,用户不必往表中插入数据。
4.在SELECT语句中DISTINCT、ORDER BY、GROUP BY和HA VING子句的功能各是什么?[难度↓]
【解】各子句的功能如下。
DISTINCT:查询唯一结果。
ORDER BY:使查询结果有序显示。
GROUP BY:对查询结果进行分组。
HA VING:筛选分组结果。
5.在一个SELECT语句中,当WHERE子句、GROUP BY子句和HA VING子句同时出现在一个查询中时,SQL的执行顺序如何?[难度↓↓]
【解】其执行顺序如下:
(1)执行WHERE子句,从表中选取行。
(2)由GROUP BY对选取的行进行分组。
(3)执行聚合函数。
(4)执行HA VING子句选取满足条件的分组。
8.内连接、外连接有什么区别?[难度↓]
【解】内连接是从结果中删除与其他被连接表中没有匹配行的所有行,因此内连接可能会丢失信息。
外连接会把内连接中删除原表中的一些行保留下来,保留哪些行由外连接的类型决定。
9.外连接分为左外连接、右外连接和全外连接,它们有什么区别?[难度↓]【解】左外连接从结果中保留第一个表的所有行,但只包含第二个表中与第一个表匹配的行,第二个表相应的空行被放入NULL值。
右外连接从结果中保留第二个表的所有行,但只包含第一个表中与第二个表匹配的行,第一个表相应的空行被放入NULL值。
全外连接会把两个表所有行都显示在结果中,并尽可能多地匹配数据和连接条件。
12.给出以下T-SQL语句的输出结果[难度↓↓]
SELECT student.姓名,course.课程号,score.分数
FROM student,course,score
WHERE student.学号=score.学号AND course.课程号=score.课程号
ORDER BY student.学号,course.课程号
【解】先按照学号,学号相同时再按照课程号从小到大的顺序显示学生的姓名,考试的课程号及分数。
14.给出以下T-SQL语句的输出结果[难度↓↓]
USE school
SELECT course.课程名,A VG(score.分数) AS '平均分'
FROM course,score
WHERE course.课程号=score.课程号AND score.分数IS NOT NULL
GROUP BY course.课程名
HA VING A VG(score.分数)>80
【解】查询平均分高于80分的课程名和该门课程的平均分
16.给出以下T-SQL语句的输出结果[难度↓↓]
USE school
SELECT a.班号,a.姓名,score.课程号,score.分数
FROM student a,score
WHERE a.学号=score.学号AND score.分数=
(SELECT MAX(score.分数)
FROM student b,score
WHERE b.学号=score.学号AND b.班号=a.班号)
【解】查询各班课程考试最高分的学生的姓名,所在班号,课程号及分数22.编写一个程序,输出所有学生的学号和平均分,并以平均分递增排序。
[难度↓↓]
【解】对应的程序如下:
USE school
GO
SELECT 学号,A VG(分数) AS '平均分'
FROM score
GROUP BY 学号
ORDER BY A VG(分数)
GO
程序运行结果如下:
24.编写一个程序,输出所有同学参加考试的课程的信息。
[难度↓↓]
【解】对应的程序如下:
USE school
GO
SELECT *
FROM course
WHERE EXISTS
(SELECT 课程号FROM score
WHERE course.课程号=score.课程号AND 分数IS NOT NULL)
GO
程序运行结果如下:
26.编写一个程序,查询所有成绩高于该课程平均分的记录,且按课程号有序排列。
[难度↓↓↓]
【解】对应的程序如下:
USE school
GO
SELECT *
FROM score a
WHERE 分数> (SELECT A VG(分数) FROM score b WHERE a.课程号=b.课程号)
ORDER BY 课程号
GO
程序执行结果如下:。