《数据库管理系统SQL Server》实验报告
第1页
2011年4月13日星期三
实验4 SQL交互式查询——连接查询及嵌套查询
实验日期和时间:
实验室:
班级:
学号:
姓名:
实验环境:
硬件:及执行结果:
select , as 先行课 from 课程 a , 课程 b
where = and = '数据结构'
结果是否正确:正确
方法分析:
给表重命名,然后两个新表连接查询
《数据库管理系统SQL Server》实验报告
第6页
2011年4月13日星期三
查询7:查询同时选修了课程号为“0001”和“0002”的学生学号
代码及执行结果
select 学号 as 选修了1和2号课程的学生的学号 from 选课
where 学号 in (select 学号 from 选课 where 课程号='0001' )
and 课程号='0002'
结果是否正确:正确
方法分析:
嵌套查询
查询8:查询计算机系全体学生的“数据结构”成绩,列出学号、姓名、课程名、成绩,并按成绩降序列表
代码及执行结果:
select ,,, from 学生,课程,选课,系
where = '计算机' and ='数据结构' and =
and = and =
order by DESC
结果是否正确:正确
方法分析:
四个表的等值连接
order by 排序,默认为升序,可以使用 ASC,降序可以使用DESC
《数据库管理系统SQL Server》实验报告
第7页
2011年4月13日星期三
查询9:查询其他系中比信管系所有学生年龄都小的学生姓名及年龄
代码及执行结果:
select ,year(getdate())-year(出生日期) as 年龄
from 学生,系
where = and <>'信管' and
year(getdate())-year(出生日期)< all (select year(getdate())-year(出生日期)
from 学生,系 where = and ='信管')
结果是否正确:正确
方法分析:
两个表的连接
使用了嵌套查询
使用了all,表示所有的都需要满足
查询10:查询没有选修0001号课程的学生
代码及执行结果:
select distinct ,
from 学生,选课
where = and
not in(select distinct from 学生,选课 where 课程号='0001' and =)
结果是否正确:正确
方法分析:
两个表的连接
嵌套查询,distinct删除重复的
《数据库管理系统SQL Server》实验报告
第8页
2011年4月13日星期三
查询11:查询选修了全部课程的学生姓名
代码及执行结果:
select
from 学生
where 学号 in (select 学号 from 选课 group by 学号 having count(*) = (select count(*) from 课程 ))
结果是否正确:正确
方法分析:
使用选课数目相同查询
也可以使用exists 关键字查询
查询12:查询学校中与老师同名的学生姓名
代码及执行结果:
select
from 学生,教师
where =
结果是否正确:正确
方法分析:
两个表的连接
《数据库管理系统SQL Server》实验报告
第9页
2011年4月13日星期三
查询13:查询每一门课的间接先修课(即先修课的先修课)
代码及执行结果:
select , 直接先行课, 间接先行课
from 课程 a, 课程 b,课程 c
where = and =
结果是否正确:正确
方法分析:
给同一个表重命名
用三个新表连接查询
数据库SQL实验报告--交互式查询(连接查询及嵌套查询) 来自淘豆网m.daumloan.com转载请标明出处.