数据库上机(二):数据查询(一)
一、实验目的
掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询等。
二、实验内容和结果
1 查询SC表中的全部数据。
select * from SC
2 查询计算机系学生的姓名和年龄。
select Sname ,Sage
from Student
where Sdept = '计算机系'
3 查询成绩在70~80分的学生的学号、课程号和成绩。
方法一:
select Sno, Cno, Grade
from SC
where Grade >= 70 and Grade <= 80
方法二:
select Sno, Cno, Grade
from SC
where Grade between 70 and 80
4查询计算机系年龄在18~20岁的男生姓名和年龄。
select Sname, Sage
from Student
where Ssex = '男' and Sdept = '计算机系'
and Sage >= 18 and Sage <= 20
5 查询C001课程的最高分。
select max (Grade) Grade
from SC
where Cno = 'C001'
6 查询计算机系学生的最大年龄和最小年龄。
select max (Sage) Sage, MIN (Sage) Sage
from Student
where Sdept = '计算机系'
7 统计每个系的学生人数。
select Sdept, count(Distinct Sno)
from Student
Group by Sdept ;
8 统计每门课程的选课人数和最高成绩。
select Cno, MAX(Grade) , COUNT(Sno)
from SC
Group by Cno ;
9 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
select Sno, COUNT(Cno) , SUM (Grade)
from SC
Group by Sno
order by count(Cno)
10 列出总成绩超过200的学生的学号和总成绩。
select Sno, SUM(Grade)
from SC
group by Sno
having SUM (Grade) > 200
11 查询选了C002课程的学生姓名和所在系。
select Sname, Sdept
from Student, SC
where Cno = 'C002'
and SC.Sno = Student.Sno
12 查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。
select Sname, Cno, Grade
from Student, SC
where Student.Sno = SC.Sno
and Grade > 80
order by Grade DESC
13 查询与VB在同一学期开设的课程的课程名和开课学期。
//嵌套查询
select Cname, Semester
from Course
where Semester IN(
select Semester
from Course
where Cname = 'VB'
) ;
14查询与李勇年龄相同的学生的姓名、所在系和年龄。
//嵌套查询
select Sname ,Sdept, Sage
from Student
where Sage IN(
select Sage
from Student
where Sname = '李勇'
) ;
15 查询哪些课程没有学生选修,列出课程号和课程名。
select Cno, Cname
from Course
where not exists(
select *
from SC
where Cno = Course.cno
) ;
16查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号。
select Student.Sno, Sname, SC.Cno
from SC, Student
where SC.Sno = Student.Sno;
//因为要把未选课的学生列出来,所有用了两个查询语句
select Sname, Sno
from Student
where Not exists(
select *
from SC
where Sno = Student.sno
17 查询计算机系哪些学生没有选课,列出学生姓名。
select Sname
from Student
where Not exists(
select *
from SC
where Sno = Student.sno
) and Sdept = '计算机系';
18 查询计算机系年龄最大的三个学生的姓名和年龄。top 3
select top 3 Sage,Sname
from Student
where Sdept = '计算机系'
19列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩。top3
select top 3 Grade, Student.Sno, Sname, Sdept
from Student, SC, Course
where Student.Sno = SC.Sno
and SC.Cno = Course.Cno
and Cname = 'VB'
order by Grade DESC ;
20 查询选课门数最多的前2位学生,列出学号和选课门数。 top 2
select top 2 count(Cno), Sno
from SC
group by Sno
实验小结:任它青苔满地年年不扫,任它尘烟风去一池碎萍,我心向天,仰面花开,本文Author WangGuodong.
来源:oschina
链接:https://my.oschina.net/u/4342169/blog/3228997