SQL Server期末考试试题

3.已知有学生关系S(SNO,SNAME,AGE,DNO),各属性含义依次为学号,姓名、年龄和所在系号;学生选课关系SC(SNO,CNO,SCORE),各属性含义依次为学号、课程号和成绩。
分析以下SQL语句:
SELECT SNO FROM SC
WHERE SCORE=
(SELECT MAX(SCORE)
FROM SC
WHERE CNO=’002’)
请问上述语句完成了什么查询操作?

三、查询设计(每题5分,计25分)
某个学籍数据库有如下表结构:学生(学号,姓名,性别,出生日期,班级) 课程(课程号,课程名称,课程类别,课时) 选课(学号,课程号,成绩)。请完成下列查询要求。
1. 查询出“软件041”班的所有男生的学号和姓名。

2. 查询出课程名称中含有“语言”一词的课程的所有信息。

3.查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。

4.查询出各班级学生人数。

5.查询出“计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。
五、操作题(每小题5分,共20分)
1.收缩数据库XSGL,使其数据库文件的空间为原来的70%;

2.将数据库XSGL更名为XSCJGL;

3.为XSGL数据库创建一个名为Sex_Default,值为“男”的默认值,并将其与XS表的Sex列相绑定,然后解除这个绑定,绑定解除后将此默认值删除;
3.有如下代码,当代码中_]_分别为break continue return时,最后的输出的值为( )
declare @n int
set @n=3
while @n>0
begin
set @n=@n-1
if @n=1 ________
end
print @n
A、1,0,不输出 B、1,1,1 C、0,0,0 D、0,1,2

3、查询出课程号为‘002’,分数最高的学生学号

三、查询设计

1、SELECT 学号,姓名 FROM 学生
WHERE 班级 = '软件041'
2、SELECT * FROM 课程
WHERE 课程名称 LIKE '%语言%'
3、SELECT D.学号,D.姓名,D.班级
FROM (
SELECT TOP 5 学号 
FROM 选课 A
LEFT JOIN 课程 B
ON A.课程号 = B.课程号
WHERE B.课程名称 = 'C语言'
ORDER BY A.成绩 DESC
) C
LEFT JOIN 学生 D
ON C.学号 = D.学号
4、SELECT 班级,COUNT(班级)
FROM 学生
GROUP BY 班级
5、DECLARE @zhangsanchengji FLOAT
SELECT @zhangsanchengji = A.成绩
FROM 选课 A
LEFT JOIN 课程 B
ON A.课程号 = B.课程号
LEFT JOIN 学生 C
ON  A.学号 = C.学号
WHERE B.课程名称 = '计算机应用基础'
AND A.姓名 = '张三'

SELECT D.学号,D.姓名
FROM (
SELECT A.学号,A.成绩
FROM 选课 A
LEFT JOIN 课程 B
ON A.课程号 = B.课程号
WHERE B.课程名称 = '计算机应用基础'
) C
LEFT JOIN 学生 D
ON C.学号 = D.学号
WHERE 成绩 > @zhangsanchengji

五、操作题,这里自己查相关的操作吧,不好描述,sqlserver软件操作起来还是挺方便的。

3、A

break:是跳出本次循环,也就是当@n = 1,循环终止并跳出begin-end执行外部的代码,此时@n = 1。

continue:重新开始循环,但是continue后的代码不执行的,这里直到@n = 0时。

return:过程中无条件退出,后续的所有代码都不执行,所以不会有输出。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-22
3.查询002号课程成绩最高的学生的学号。
三、
1.select 学号,姓名 from 学生 where 班级='软件041' and 性别='男'

2.select * from 课程 where 课程名称 like '%语言%'

3.select 学号,姓名,班级 from 学生 where 学号 in (select top 5 学号 from 选课 where 课程号 in (select 课程号 from 课程 where 课程名='C语言') order by 成绩 desc)
或者
select top 5 学号,姓名,班级 from 学生 inner join 选课 on 学生.学号=选课.学号 inner join 课程 on 选课.课程号=课程.课程号 and 课程名='C语言' order by 成绩 desc

4.select 班级,count(*) from 学生 group by 班级

5. select 学号,姓名 from 学生 where 学号 in (select 学号 from 选课 where 课程号 in (select 课程号 from 课程 where 课程名='计算机应用基础') and 成绩>(select top 1 成绩 from 选课 where 学号 in (select 学号 from 学生 where 姓名='张三') and 课程号 in (select 课程号 from 课程 where 课程名='计算机应用基础'))

五、这个你还是实际操作看看吧。追问

五不会操作啊。

追答

不明白是要那种答案,是要用文字叙述sql用户界面上的操作步骤吗?如果不是,按 wttlzx82回答的就行,另外,补充问题3.的答案是:A、1,0,不输出

追问

万分感谢。。

第2个回答  2011-02-22
3.'002'课程中 成绩最好的学生 学号
三.1.select 学号,姓名 from 学生 where 班级 = '软件041' and 性别 = '男生'
下班了 等回来再帮你 !追问

恩,谢啦,重点是第五题。。。

追答

那我就回答第5题了!
五。
1.执行下面操作:
dbcc shrinkdatabase (XSGL,70)
2.执行下面操作:
EXEC sp_renameDB 'XSGL','XSCJGL'
3.这出题的人有病吧?做完了 全取消了 。。。。
ALTER TABLE XSGL
(Sex_Default nvarchar(2) default '男',
constraint con_num foreign key Sex_Default references XS(Sex)
)
语句是不是这样忘了
直接去表 --》 设计 里面操作就可以 了 添加或 删除

追问

这出题的人有病吧?确实,呵呵
万分感谢那

追答

呵呵 客气!

本回答被提问者采纳
第3个回答  2011-02-22
3、选修002课程成绩最高的学生学号;
三、student(sno,sname,sex ,sbirth ,sdept)
course(cno,cname,csize,ctime)
sc(sno,cno,grade)
1.select sno,sname from student where sex='男'and sdept='软件041'
2.select *from course where cname like '%语言%'
3. Select sno,sname,grade
From SC,student,course
Where (cname=’C语言’
And student.sno=sc.sno sc.cno=course,cno)
Order by grade desc
4. Select count(sno)
From student
Group by sdept追问

操作题会吗?谢啦

相似回答