实验六1、查询所有数学系学生的信息。
--select * from s where 系='数学系'2、查询李老师所教的课程号、课程名--select 课程号,课程名from c where 教师like '李%'3、查询年龄大于20岁的女同学的学号和姓名。
--select 学号,姓名from s where year(getdate())-year(出生日期)>20 and 性别='女'4、查询学号为‘H0301’所选修的全部课程成绩。
--select 成绩from sc where 学号= 'H0301'5、查询平均成绩都在80分以上的学生学号及平均成绩。
--select 学号,AVG(成绩) from sc group by 学号having AVG(成绩)>806、查询至少有6人选修的课程号。
--select 课程号from sc group by 课程号having count(*)>=67、查询C02号课程得最高分的学生的学号--select 学号from sc where 课程号='c02' and 成绩=(select max(成绩) from sc where 课程号='c02')8、查询学号为’J0101’的学生选修的课程号和课程名--select 课程号,课程名from c,sc where 学号='j0101' and c.课程号=sc.课程号9、‘李小波’所选修的全部课程名称。
--select c.课程名from s,c,sc where s.学号=sc.学号and c.课程号=sc.课程号and 姓名='李小波'10、所有成绩都在70分以上的学生姓名及所在系。
--select 姓名,系from s,sc where s.学号=sc.学号group by 姓名, 系having min(成绩)>=7011、英语成绩比数学成绩好的学生select sc2.学号from c c1,c c2,sc sc1,sc sc2where c1.课程名='英语' and c2.课程名='数学' and sc1.成绩>sc2.成绩and sc1.学号=sc2.学号and c1.课程号=sc1.课程号and c2.课程号=sc2.课程号或:Select sc1.学号from sc sc1, sc sc2 where sc1.学号=sc2.学号And (sc1.课程号in (select 课程号from c where 课程名= ‘英语’))And (sc2.课程号in (select 课程号from c where 课程名= ‘数学’))And sc1.成绩>sc2.成绩12、至少选修了两门课及以上的学生的姓名和性别select 姓名,性别from s,scwhere s.学号=sc.学号group by 姓名, 性别having count(*)>=213、选修了李老师所讲课程的学生人数select count(*) from c,scwhere 教师like '李%' and c.课程号=sc.课程号group by sc.课程号14、‘操作系统’课程得最高分的学生的姓名、性别、所在系select 姓名,性别,系from s,sc,cwhere s.学号=sc.学号and c.课程号=sc.课程号and c.课程名=’操作系统’ and 成绩=10015、显示所有课程的选修情况。
select * from c left join sc on c.课程号=sc.课程号16、取出没有选修‘操作系统’课程的学生姓名和年龄select distinct(姓名),(year(getdate())-year(出生日期))as 年龄from s,c,scwhere sc.学号=s.学号and c.课程号=sc.课程号and c.课程号not in (select 课程号from c where 课程名='操作系统')(没选课的学生呢?)select 姓名,(year(getdate())-year(出生日期)) as 年龄from swhere 学号not in(select 学号from sc,c where sc.课程号=c.课程号and 课程名='操作系统')17、没有选修李老师所讲课程的学生--select 学号from sc where 课程号not in (select 课程号from c where 教师like '李%')或select 姓名from s where 姓名not in(select 姓名from s left join sc on s.学号=sc.学号where sc.课程号in (select c.课程号from c where 教师like '李%') )(没选课的学生呢?)select 学号, 姓名from s where 学号not in( select 学号from sc where (课程号in(select 课程号from c where 教师like '李%')))18、取出选修了全部课程的学生姓名,性别。
Select s.姓名,s.性别from s where not exists(select * from c where not exists(select * from sc where sc.学号=s.学号and sc.课程号= c.课程号))19、检索至少选修课程“数据结构”和“C语言”的学生学号。
select sc.学号, c.课程名from c,sc where c.课程名= '数据结构' and c.课程号= sc.课程号and 学号in( select sc.学号from sc ,c where c.课程名= 'C语言' and c.课程号= sc.课程号)20、检索学习课程号为C02的学生学号与姓名。
--select s.学号,姓名from sc,s where 课程号='c02' and s.学号=sc.学号21、检索选修课程号为C01或C02的学生学号,姓名和所在系select distinct s.学号, s.姓名,s.系from s inner join sc on s.学号= sc.学号where sc.课程号='C02' or sc.课程号= 'C01'或:select 学号, 姓名, 系from swhere 学号in (select 学号from sc where 课程号='C02' or课程号='C01') --课程号in ('C02','C01') )22、检索至少选修课程号为C01和C03的学生姓名。
--select s.姓名from sc,s where sc.学号=s.学号and 课程号='c01' and s.学号in (select 学号from sc where 课程号='c03')或:select 姓名from swhere 学号in (select 学号from sc where 课程号='C01')and 学号in (select 学号from sc where 课程号='C03')23、检索每个学生的年龄。
--select year(getdate())-year(出生日期) as 年龄from s24、在S中检索学生的姓名和出生年份,输出的列名为STUDENT_NAME和BIRTH_YEAR。
select 姓名as STUDENT_NAME,year(出生日期) as BIRTH_YEAR from s25、向学生选课数据表SC中插入一个元组(S0404,C06,90)insert into sc values ('S0403','C06',90)26、把课程名为VB的成绩从学生选课数据表SC中删除delete from sc where 课程号IN (SELECT 课程号FROM CWHERE 课程名='VB')27、把女同学的成绩提高10%。
--update sc set 成绩= 成绩*1.1 where 学号in (select 学号from s where 性别='女')28、列出选修课程超过3门的学生姓名及选修门数。
select S.姓名,count(*) as 选修门数from S,SC where S.学号=SC.学号group by S.姓名having count(*)>329、求选修了各课程的学生的人数。
select 课程号,count(*) as 人数from SC group by 课程号30、在学生选课数据表SC中,求选修课程C01的学生的学号和得分,并将结果按分数降序排序。
select 学号,成绩from sc where 课程号='c01' order by 成绩desc31、查找每个同学的学号及选修课程的平均成绩情况。
select 学号, avg(成绩) as 平均成绩from sc group by 学号32、列出学生所有可能的选课情况。
--select * from c cross JOIN s33、列出每个同学的学号、姓名及选修课程的平均成绩情况,没有选修的同学也列出。
select s.学号, s.姓名, avg(成绩) from sc right join s on sc.学号=s.学号group by s.学号, s.姓名34、列出每个同学的学号及选修课程号,没有选修的同学也列出select s.学号,课程号from sc right join s on s.学号= sc.学号35、如果学号为J0404的学生的成绩少于90,则加上10分。
update sc set 成绩= 成绩+ 10 where 学号= 'J0404' and 成绩< 9036、将成绩最低的学生的成绩加上10分。
--update sc set 成绩=成绩+10 where sc.成绩=(select min(成绩)from sc)37、将前3名成绩最高的学生的成绩减去10分。