课程名称
数据库原理
实验
成绩
实验名称
实验四 复杂查询
学号
姓名
班级
日期
2014.3.28
实验目的:
1. 掌握SELECT语句复杂查询的使用。
    2. 掌握多表连接查询的方法。
3. 掌握非相关子查询、相关子查询的用法。
    4. 掌握谓词在查询中的应用。
实验平台:
利用安装的SQL SERVER 2008及其交互查询工具-查询编辑器来操作SQL语言。
实验内容:
    使用SQL语言实现下列嵌套查询。
1. 查询张星老师所教授的全部课程的课程名及其学分。如图1所示:
1
2. 查询在信息系学习的全部学生的基本情况。如图2所示:
2
3. 查询没有选修任何课程的学生的姓名。如图3所示:
3
4. 查询选修课总学分在10学分以下的学生的姓名。如图4所示:
4
5. 查询各门课程最高成绩的学生的姓名及其成绩。如图5所示:
5
6. 查询选修了学号1001的学生所选修的全部课程的学生的学号。如图6所示:
6
7. 查询选修了张星老师所开设的全部课程的学生的姓名。如图7所示:
7
2.SQL语句:
    1select 课程名,学分 from  course where 教师编号 in
        (select 教师编号  from teacher where 教师姓名 ='张星')
(2)select * from student ,dept
        where student .所在系 =dept.所在系 and 系名='信息'
3select 姓名 from student where not exists
    (select 课程号 from sc where student.学号 =sc.学号  )
(4)select student.姓名 from student where student.学号
        in (select student. 学号 from student
        left outer join sc on (student.学号 =sc.学号 )
    left outer join course on (course.课程号  =sc.课程号 )
    group by student.学号
    having SUM(学分)<10 or isnull (SUM (学分),0)=0)
5select 课程号, 姓名,成绩 from student,sc 
    where student.学号 =sc.学号 and 成绩
    in(select MAX (成绩)from sc group by 课程号)
select语句查询日期6select distinct 学号 from sc scx  where not exists(select * from sc
    scy where scy.学号='1001'  and not exists (select * from sc scz
    where scx.学号 =scz.学号 and scx.课程号  =scz.课程号))
7select 姓名 from student  where not exists(select * from course,teacher
    where 教师姓名='张星'  and teacher.教师编号=course.教师编号
    and not exists (select * from sc where
    student.学号 =sc.学号 and course.课程号 =sc.课程号  ))
实验总结(结论或问题分析):
通过此次实验,了解SQL提供了SELECT语句进行数据查询。
查询分类:单表查询、连接查询、嵌套查询、集合查询等。
    1.掌握SELECT语句复杂查询的使用。
    2.掌握多表连接查询的方法。
3.掌握非相关子查询、相关子查询的用法。
4.掌握谓词在查询中的应用以及利用谓词演算将一个逻辑蕴涵的谓词等价转换为:
pq≡¬pq

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。