数据库上机(二):数据查询(一)

数据库上机(二):数据查询(一)

一、实验目的
掌握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.

发布了52 篇原创文章 · 获赞 45 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/nuist_NJUPT/article/details/105394807