实验五数据查询
一、实验目的
(1)掌握SELECT语句的语法
(2)掌握基于单表的查询方法
(3)掌握基于多表的查询方法
(4)掌握相关与不相关的嵌套查询
(5)掌握使用UNION的集合查询
二、实验环境
WINDOWS 7+SQL SERVER 2005
三、实验准备
1.以最便捷的方式在EDUC数据库中新建3张表,各表的结构如下所示:
2.利用企业管理器向表中插入记录
STUDENT的内容
COURSE的内容
SC的内容
四、实验内容
1.查询全体学生的学号和姓名
2.查询全体学生的详细记录
3.查询CS学院的学生姓名、年龄、系别
4.查询所有选修过课程的学生学号
5.查询考试不及格的学生学号
6.查询不是CS学院的学生姓名、年龄、系别(三种方法实现)
7.查询年龄在18-20岁的学生学号、姓名、系别、年龄
8.查询姓刘的学生情况
9.查询姓刘或姓李的学生情况(注意不同的写法)
10.查询姓刘且名字为两个字的学生情况
11.查询1995年以后出生的学生姓名
12.利用内部函数year()查找CS学院学生的出生年份
13.查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。
14.查询学生总人数
15.查询选修了课程的学生人数(两种方法实现)
16.查询选修了2号课程的学生总人数和平均成绩
17.查询选修2号课程学生的最好成绩
18.查询每个系的系名及学生人数
19.查找每门课的选修人数及平均成绩
20.查找没有选修课的课程情况
五、提高实验
1.查询每个学生及其选课情况(等值连接和右连接)
2.查询每门课的间接选修课
3.查询既选修了2号课程又选修了3号课程的学生姓名、学号
4.查询和刘晨同一年龄的学生
5.查询选修了课程名为“数据库”的学生姓名和年龄(相关子查询和不相关子查询)
6.查询其他系中比IS系任一学生年龄小的学生名单(两种解法)
7.查询其他系中比IS系所有学生年龄都小的学生名单(两种解法)
8.查询选修了全部课程的学生姓名(相关子查询和不相关子查询)
9.查询计算机系学生及其性别是男的学生
10.查询张立同学不学的课程的课程号
11.查询选修了3号课程的学生平均年龄
12.求每门课程学生的平均成绩
13.统计每门课程的学生选修人数(超过1人的才统计)。要求输出课程号和选修人数,结果按人数降序排列,若人数相同,按课程号升序排列
select student.*,sc.*
from student,sc
where student.sno=sc.sno;
select student.*,sc.*
from student left outer join sc on(student.sno=sc.sno);
select s1.sno,s1.sname,s1.sdept
from student s1, student s2
where s1.sdept=s2.sdept
select sname,student.sno
from student,sc s1,sc s2
where s1.sno=s2.sno and https://www.wendangku.net/doc/4a2440065.html,o='2'and https://www.wendangku.net/doc/4a2440065.html,o='3'
and s1.sno=student.sno and s2.sno=student.sno
select sno,sname,sage
from student
where sage in(select sage
from student
where sname like'刘晨')
select sname,sage
from student,course
where cno in(select cno
from course
where cname='数据库')
select sname,sage
from student
where exists
(
select*
from sc
where exists(select*
from course
where sc.sno=student.sno and cname='数据库'and https://www.wendangku.net/doc/4a2440065.html,o=https://www.wendangku.net/doc/4a2440065.html,o));