[1]删除考试成绩为NULL的记录。delete FROM [dbo].[选课表] WHERE 考试成绩 is null;
[2]将04014122号学生的B00101课程的考试成绩修改为78分UPDATE [dbo].[选课表] SET [考试成绩] = 78 WHERE [学号]='04014122' and [课程编号]='B00101';
[3]查询学生的全部信息select * from [dbo].[学生];
[4]查询所有课程名称和学时信息select [课程名称],[学时] from [dbo].[课程];
[5]查询学时大于等于40的课程编号和课程名称。select [课程编号],[课程名称] from [dbo].[课程] where [学时]>40;
[6]查询课时在50到60(含)之间的课程信息。select * from [dbo].[课程] where [学时]>50 and [学时]<60;
[7]使用between查询课时在50到60(含)之间的课程信息。select * from [dbo].[课程] where [学时] between 50 and 60;
[8]查询具有教授和副教授职称的教师信息select * from [dbo].[教师] where [职称]='教授' or [职称]='副教授';
[9]查询责任教师字段为空值的记录。select * from [dbo].[课程] where [责任教师] is null;
[10]查询职称为讲师或副教授的教师信息。select * from [dbo].[教师] where [职称]='讲师' or [职称]='副教授';
[11]查询或浏览课程性质和学时信息select [课程性质],[学时] from [dbo].[课程];
[12]查询“专业基础”课程的信息,并将结果存储到Student模式下、表名为“专业基础”。select * into 专业基础 from [dbo].[课程] where [课程性质]='专业基础';
[13]按教师编号升序列出所有教师信息。select * from [dbo].[教师] order by [教师编号] asc;
[14]查询所有学生信息,先按生源升序排序、再按学号升序排序。select * from [dbo].[学生] order by [生源] asc; select * from [dbo].[学生] order by 学号 asc;
[15]从选课表中查询考试成绩最高的3条选课信息。select TOP(3) *FROM [dbo].[选课表] order by [考试成绩] DESC;
[16]从选课表中查询考试成绩在前15%的选课记录信息,如果随后有成绩并列的记录也一起列出。select TOP(15) percent *FROM [dbo].[选课表] order by [考试成绩] DESC;
[17]查询考试成绩在90分以上(含)的学生的学号、姓名、相应的课程名称和考试成绩(使用CROSS JOIN连接完成查询)。select [dbo].[学生].[学号],[姓名],[课程名称],[考试成绩]
from [dbo].[学生] cross join [dbo].[课程] cross join [dbo].[选课表] where [dbo].[学生].[学号]=[dbo].[选课表].[学号] and [dbo].[课程].[课程编号]= [dbo].[选课表].[课
程编号] and 考试成绩>=90;
[18]查询目前有多少责任教师。select COUNT(distinct 责任教师)as 'shuliang' from [dbo].[课程] ;
[19]查询数据库课程的平均成绩。select avg(考试成绩) from [dbo].[选课表],[dbo].[课程] where [dbo].[选课表].[课程编号]=[dbo].[课程].[课程编号] and 课程名称='数据库';
[20]查询各院系教师的人数 select [名称],COUNT(*) 教师人数 from [dbo].[教师],[dbo].[院系] where [dbo].[教师].[院系]=[dbo].[院系].[编号] group by [名称];
[21]查询各门课程考试成绩的平均分、最高分和最低分。select [课程名称], avg(考试成绩),max(考试成绩),min(考试成绩) from [dbo].[课程],[dbo].[选课表] where [dbo].[课程].[课
程编号]=[dbo].[选课表].[课程编号] group by 课程名称;
[22]查询专业基础课平均分大于等于60分的各门课程考试成绩的平均分、最高分和最低分。 select [课程名称], avg(考试成绩),max(考试成绩),min(考试成绩) from [dbo].[课
程],[dbo].[选课表] where [dbo].[课程].[课程编号]=[dbo].[选课表].[课程编号] and 课程性质='专业基础' group by 课程名称 having avg(考试成绩)>=60;
[23]查询所有专业基础课的信息,并计算其总学时 select sum(学时) as '总学时',* from [dbo].[专业基础];
[24]查询学生的考试成绩(要求查询学号、姓名、课程名称和考试成绩),同时计算每个学生的平均成绩、最高成绩和最低成绩。select 学生.[学号],[姓名],[课程名称],[考试成绩] from
[dbo].[课程],[dbo].[选课表],[dbo].[学生] where 学生.[学号]=[dbo].[选课表].[学号] and [dbo].[选课表].[课程编号]=[dbo].[课程].[课程编号] order by [dbo].[学生].[学号]
compute avg(考试成绩) ,max(考试成绩),min(考试成绩) by [dbo].[学生].[学号];
[26]查询由教授负责的课程信息(课程编号、课程名称、学时和课程性质)select [课程编号],[课程名称],[学时],[课程性质] from [dbo].[课程] where [责任教师] in (select [教
师编号]from [dbo].[教师] where [职称] = '教授');
[27]查询责任教师的有关信息(姓名、性别、职称、专业)。select * from [dbo].[教师] where [教师编号] in (select [责任教师] from [dbo].[课程] group by [责任教师]);
[28]查询有考试成绩大于数据库课程全部考试成绩的学生信息。 select *from [dbo].[学生] where [学号] in (select [学号] from [dbo].[选课表] where [考试成绩]>all(select [考
试成绩] from [dbo].[选课表],[dbo].[课程] where [dbo].[选课表].[课程编号]=[dbo].[课程].[课程编号] and [课程名称]='数据库'));
[29]查询“系统分析与设计”课程的责任教师的姓名、职称,以及所负责的其他课程(课程编号和课程名称)。select [课程编号],[课程名称],[姓名],[职称] from [dbo].[教师],[dbo].[课
程] where [dbo].[教师].[教师编号]=[dbo].[课程].[责任教师] and [责任教师] in (select [责任教师] from [dbo].[课程] where [课程名称]='系统分析与设计');
[30]查询哪些学生(学号和姓名)有未完成考试的课程(考试成绩为NULL)select [学号],[姓名] from [dbo].[学生] where [学号] in (select [学号] from [dbo].[选课表] where [考
试成绩] is null);
[31]查询哪些学生(学号和姓名)没有未完成考试的课程(考试成绩为NULL)select [学号],[姓名] from [dbo].[学生] where [学号] in (select [学号] from [dbo].[选课表] where
[考试成绩] is not null);
1.查询门门课程都及格的学生的学号select Sno from S where not exists (select Sno from SC where Sno=S.Sno AND Grade<60) and exists(select *from SC where Sno=S.Sno);
2.查询既有课程大于90分又有课程不及格的学生的学号select Sno from S WHERE Sno IN(SELECT Sno from SC where Sno=S.Sno AND Grade>=90) AND Sno IN (select Sno from SC where
Sno=S.Sno AND Grade<60);
3.查询平均分不及格的课程号和平均成绩SELECT AVG(Grade),Cno from SC where Cno in(select Cno from C)GROUP BY Cno HAVING AVG(Grade)<60;
4.找出至少选修了2号学生选修过的全部课程的学生号select Sno from SC where Sno in(select Sno from S) group by Sno having COUNT(*)> =2;
5.求各门课程去掉一个最高分和最低分后的平均分select avg([Grade]) as 平均成绩 from [dbo].[SC] where [Grade] not in (select top(1) [Grade] from [dbo].[SC] order by[Grade]
asc) and [Grade] not in (select top(1) [Grade] from [dbo].[SC] order by [Grade] desc);
6.查询7号课程没有考试成绩的学生学号select SC.Sno from SC,S where SC.Sno=S.Sno AND Cno='7' AND Grade IS NULL;
7.查询7号课程成绩在90分以上或60分以下的学生学号。select SC.Sno from SC,S where SC.Sno=S.Sno AND CNO='7' AND Grade not between 60 and 90;
8.查询课程名以“数据”两个字开头的所有课程的课程号和课程名 select Cno,Cname from C where Cname like '数据%';
9.查询每个学生所有课程的平均成绩,输出学生学号和平均成绩select AVG(Grade) ,SC.Sno from S,SC WHERE S.Sno=SC.Sno GROUP BY SC.Sno;
10.查询每门课程的选修人数,输出课程号和选修人数。SELECT SC.Cno ,COUNT(*) AS '选修人数' from SC,C where SC.Cno=C.Cno GROUP BY SC.Cno;
11.查询选修7号课程的学生的学号、姓名、性别select S.Sno,Sname,Sex from S,SC WHERE S.Sno=SC.Sno AND Cno='7';
12.查询选修7号课程的学生的平均年龄 SELECT AVG(Age) from S,SC WHERE S.Sno=SC.Sno AND Cno='7';
13.查询有30名以上学生选修的课程号select SC.Cno from C,SC WHERE SC.Cno=C.Cno GROUP BY SC.Cno HAVING COUNT(*)>= 30;
14.查询至今没有考试不及格的学生学号SELECT S.Sno FROM S,SC WHERE S.Sno=SC.Sno GROUP BY S.Sno having min(Grade)>=60;
15.查询所有考试成绩的平均分相同的学生学号分组SELECT S.Sno,AVG(Grade) FROM SC,S WHERE S.SNO=SC.Sno GROUP BY S.Sno ;
16.找出选修课程号为C2的学生学号与成绩select SC.Sno,SC.Grade from SC WHERE Cno='C2';
17找出选修课程号为C4的学生学号与姓名 select S.Sno,S.Sname from S,SC WHERE Cno='C4';
18.找出选修课程名为 Maths 的学生学号与姓名SELECT S.Sno,S.Sname from S,SC,C WHERE S.Sno=SC.Sno AND SC.Cno=C.Cno AND Cname='Maths';
19.找出选修课程号为C2或C4的学生学号SELECT SC.Sno FROM SC WHERE Cno='C2' OR Cno='C4';
20.找出选修课程号为C2和C4的学生学号SELECT SC.Sno FROM SC WHERE Cno='C2' AND Cno='C4';
21.找出不学C2课程的学生姓名和年龄SELECT Sname,age from S WHERE Sno NOT IN (SELECT Cno from SC WHERE Cno='C2');
22.找出选修了数据库课程的所有学生姓名SELECT S.Sname from S,SC,C WHERE S.Sno=SC.Sno AND SC.Cno=C.Cno AND Cname='数据库';
23.找出数据库课程不及格的女生姓名SELECT S.Sname from S,SC,C WHERE S.Sno=SC.Sno AND SC.Cno=C.Cno AND Cname='数据库' AND Sex='女' AND Grade<60;
24.找出各门课程的平均成绩,输出课程名和平均成绩select C.Cname,AVG(Grade) from SC,C group by C.Cname;
25.找出各个学生的平均成绩,输出学生姓名和平均成绩SELECT S.Sname,AVG(Grade) from S,SC where S.Sno=SC.Sno GROUP BY S.Sname,S.Sno;
26.找出至少有30个学生选修的课程名select C.Cname FROM C,SC WHERE SC.Cno=C.Cno GROUP BY C.Cname,C.Cno HAVING COUNT(*)>30;
27.找出选修了不少于3门课程的学生姓名SELECT S.Sname FROM S,SC WHERE S.Sno=S.Sno GROUP by S.Sname,SC.Sno HAVING COUNT(*)>=3;
28.找出各门课程的成绩均不低于90分的学生姓名SELECT S.Sname FROM S,SC WHERE S.Sno=SC.Sno GROUP BY Sname,SC.Sno HAVING MIN(Grade)>=90;
29.找出数据库课程成绩不低于该门课程平均分的学生姓名select s.Sname from s,sc,C where s.Sno=sc.Sno and sc.Cno=c.Cno and Cname='数据库' and Grade>(select avg(grade) from
SC,S where c.cno=sc.cno and Cname=' 数据库');
30.找出各个系科男女学生的平均年龄和人数select AVG(age),sex,sdept,count(*) from S group by Sex,Sdept;
31. 找出计算机系(JSJ) 课 程 平 均 分 最 高 的 学 生 学 号 和 姓 名 select s.sno,s.Sname from s,SC where s.Sno=sc.Sno and Sdept='JSJ' group by s.Sname,s.Sno having
avg(Grade)>all(select avg(Grade) from s,sc where s.Sno=sc.Sno and Sdept='JSJ' group by sc.Sno);
32.查询每门课程的及格率create view v_all(cno,cnt)as select cno, count(*) from sc group by cnocreate view v_pass(cno,cnt_pass)as select cno, count(*) from sc where
grade>=60 group by cnoselect v_all.cno, cnt_pass*100/cnt from v_all, v_pass where v_all.cno = v_pass.cno
33.查询平均分不及格的学生的学号,姓名,平均分select s.sno ,s.Sname,avg(Grade) from s,sc where s.sno=sc.Sno group by s.Sno,s.Sname having avg(Grade)<60;
34.查询平均分不及格的学生人数select count(*) from s,sc where s.Sno=sc.Sno group by s.Sno,s.Sname having avg(Grade)<60;