实验三  SQL语言进行简单查询
一、实验目的
掌握简单数据查询操作。
二、实验内容
使用各种查询条件完成指定的查询操作
三、实验步骤
1、查询选修了课程的学生人数。
select count(*)
from sc;
2、查询学生200515004选修课程的总学分数。
select sum(credit)
from student,course,sc
where student.sno=sc.sno and
course.cno=sc.cno and
student.sno='200515004'
3、查所有有成绩的学生学号和课程号。
select *
from student,sc
where student.sno=sc.sno and
grade is not null;
4、查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄
select sname,sdept,sage
from student
where sage between 20 and 23;
5、查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
select sno,grade
from sc
where cno='3'
order by grade desc
6、求哪些学生还没有被分配系?
select sno,sname
from student
where sdept is null;
7、求CS系中所有男同学的学生姓名和年龄。
select sname,sage
from student
where sdept='cs' and
ssex='';
8、我校开设的课程中哪些课程名以“数据”两个字开头?
select cno
from course
where sdept like'数据%';
9、求哪些学生的姓名中第2个字是“立”?
select *
from student
where sname LIKE '_%'
10、求哪些学生的成绩为优秀,求出该学生的学号及相应的课程号。
select student.sno,course.cno
from student,sc,course
where student.sno=sc.sno and
sc.cno=course.cno and
grade>='90'
11、求既不是CS系,也不是MA系的学生中年龄不小于20的学生姓名。
select sname
from student
where sdept not in('cs','ma')
and sage>=20;
12、求CS系中男女学生的数量分别是多少?
select ssex,count(sno)
from student
where sdept='cs'
group by ssex;
13、求各系中每个年龄段的学生总人数,要求结果中对系进行排序,同一个系的按年龄排序。即想得到右表所示的结果。
select sdept,sage,count(*)
from student
group by sdept,sage
order by sdept asc,sage asc
14、查询各系的学生的人数并按人数从多到少排序 
select sdept,count(sno)
from student
group by sdept
order by count(sno)
15、查询各系的男女生学生总数并按系别升序排列女生排在前
select sdept,ssex,count(sno)
from student
group by sdept,ssex
order by ssex desc , count(sno) asc;
16、查询选修了3门课程已上的学生的学号和姓名
select sc.sno,student.sname
from sc,student
where sc.sno=student.sno
group by sc.sno,student.sname
having count(*)>3;
17、查询每个学生所选课程的平均成绩最高分最低分和选课门数
select sc.sno,sc.cno,avg(grade),max(grade),min(grade),count(sc.cno)
from course,sc
where course.cno=sc.cno
group by sc.sno,sc.cno
18、查询至少选修了2门课程的学生的平均成绩.
select sc.sno,student.sname,avg(grade)
from sc,student
where sc.sno=student.sno
group by sc.sno,student.sname
having count(*)>=2;
19、查询平均分超过80分的学生的学号和平均分.
比较求各学生的60分以上课程的平均分.
select sno,avg(grade)
from sc
group bysql统计每个系的学生人数 sno
having avg(grade)>=80
20、查询”信息系”(IS)中选修了2门课程以上的学生的学号.
select sc.sno,count(sc.cno)
from student,course,sc
where sc.sno=student.sno and
course.cno=sc.cno and
sdept='is'
group by sc.sno
having count(sc.cno)=2;
21、打印李勇的成绩单(即求李勇所选修的课程名及其成绩)。
Select cname,grade
From student,course,sc
Where student.sno=sc.sno
and course.cno=sc.cno
and sname='李勇'
22、求不及格和缺考的学生所在系、学号、姓名及相应课程名,要求按系排序,同一个系的按学号排序。
Select sdept,student.sno,sname,cname
From student,sc
Where student.sno=sc.sno
and sc.cno=course.cno
and (grade <60 or grade is null)
Order by sdept,student,sno
23、求CS系不及格和缺考的学生学号、姓名及相应课程名,要求按学号排序。
Select student.sno,sname,cname
From student,course,sc
Where student.sno=sc.sno and
course.cno=sc.cno
and(grade<60 or grade is null)
Order by student.sno
24、求既不是CS系,也不是MA系缺考学生的学号、姓名及相应课程名。
Select student.sno,sname,cname
From student,course,sc
Where student.sno=sc.sno and
course.cno=sc.cno and grade is null
and sdept not in('cs','ma')
25、求选修“数据库课程的学生平均成绩。
Select avg(grade)
From course,sc
where course.cno=sc.cno and cname='DB'
26、求每一门课程的学生平均成绩,要求输出课程名及对应的平均成绩,并按平均成绩由大到小排序。
Select cname,avg(grade)
From course,sc
Where sc.cno=course.cno
Group by cname
Order by avg(grade) desc
27、求李勇所选修的总学分(即成绩及格的课程学分总和)。
Select sum(credit)
From student,sc,course
Where student.sno=sc.sno
and sc.cno=course.cno
and grade>=60
and sname='李勇'

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