实验六:数据表高级查询
一、实验目的
1.掌握SELECT语句的基本语法和查询条件表示方法;
2.掌握数据表的连接查询方法;
3.掌握嵌套查询的表示及使用;
4.掌握集合查询的表示及使用
二、实验学时
2学时
三、实验要求
1.了解SELECT语句的基本语法格式和执行方法;
2.了解连接查询的表示及使用;
3.掌握嵌套查询和集合查询的使用的方法;
4.完成实验报告;
四、实验内容
以实验5数据库为基础,请使用T-SQL 语句实现进行以下操作:
1.查询名字中第2个字为‘向’的学生姓名和学号及选修的课程号、课程名;
select Sname,Sno,Cno,Cname
from student,course
where Sname like'_向%'
2.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;
select a.Sname,a.Sno,a.Sdept,b.Cno,Grade
from student a,SC,course b
where b.cno=SC.cno and a.Sno=SC.sno and (b.Cname='数学'or b.Cname='大学英语')
3.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
select *
from student
where Sage !=(
select Sage
from student
where Sname='张力')
4.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;
select student.Sno,student.Sname,
student.Sdept,sum(course.Ccredit)
from student,SC,course
where student.Sno=SC.Sno and SC.Cno=course.Cno
group by student.Sname,student.Sno,student.Sdept
5.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
select student.Sno,student.Sname,SC.Cno
from student,SC
where student.Sno=SC.Sno and SC.Sno in(
select SC.Sno
from SC,student
where Cno in(
select Cno
from SC,Student
where Sc.sno=student.sno and
student.Sname='张力')
6.查询只被一名学生选修的课程的课程号、课程名;
select Cno,Cname
from course
where cno in
(select cno
from SC
group by Cno
having count(Sno)=1)
7.使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;
select Sno,Sname
from student
where sno in(
select sno
from SC,course
where course.Cname='数据结构')
8.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
select Sno,Sname,Sdept
from student
where Sdept !='CS' and
Sage<Any
(select Sage
from student
where Sdept='CS')
9.使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;
select Sname
from student
where Sdept !='WM' and
Sage<All
(select Sage
from student
where Sdept='WM')
10.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;
select *
from student
where Sdept in (
select sdept
from student
where Sname='张力')
select s1.*
from student s1,student s2
where s1.Sno=s2.Sno and s1.Sdept in (
select student.Sdept
from student
where Sname='张力')
and s1.Sname<>'张力'
11.使用集合查询列出CS系的学生以及性别为女的学生学号及姓名;
select Sno,Sname
from student
where Sdept='CS'
intersect
select Sno,Sname
from student
where Ssex='女'
12.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;
select *
from student
where Sdept='CS'
intersect
select *
from student
where Sage<=19
五、实验步骤
命令方式:在【SQL Server Management Studio】窗口左上方选择【新建查询】按钮,启动SQL编辑器窗口,在光标处输入T-SQL语句,单击【执行】按钮。