三. 试用SQL查询语句表达下列对教学数据库3个基本表:学生,课程,成绩的查询。
学生( 学号,姓名,,性别,专业,年级,班别):
成绩(学号,课程编号,成绩);
课程(课程编号,课程名称),
1.查询学生表中所有记录。
select * from学生
2.查询学生表中女学生的学号,姓名信息。
select 学号,姓名from学生where 性别=‘女’
3.从学生表中查所有姓名中第2个字是“小”的学生记录。
select * from学生where 姓名like ‘_小%’
4.从成绩表中查询所有不及格的学生记录。
select学号from 成绩where 成绩<60
5.计算选修课程号为“C1”课程的学生的总评成绩。
select sum(成绩)总评成绩from 成绩where课程编号=‘C1’
6.从成绩表中检索所有“C2”号课程成绩高于80分的学生记录。
select 学号from 成绩where 成绩>80 and课程编号=‘C2’
7.查询成绩表中每位学生的学号和各科的总成绩,并按总成绩降序排列。
select 学号,sum(成绩)AS总成绩from 成绩group by学号ORDER BY sum(成绩)desc
8.请查询选修课程名称为“数据库原理”的学生的学号和姓名。
Select 学生.学号,姓名from学生where学号in (select学号from 成绩where
课程编号=( select课程编号from课程where 课程名称=‘数据库原理’))
9.请查询选了课但未有成绩的的学生的学号和课程编号。
select 学生.学号,课程编号from学生,成绩where 成绩IS NULL and学生.学号=成绩.
学号
10.请查询所有选修了课程编号为“C2”的学生的学号和姓名,且这些学生此门课程的成绩
高于该课程平均成绩。
select 学号,姓名from学生where 学号in(select 学号from 成绩where课程编号=‘C2’and 成绩>( select avg(成绩) from成绩group by 课程编号having 课程编号=‘C2’))
11.请查询成绩在60-90之间,或者课程编号为“C2”的学生的学号和姓名和班别。select 学号,姓名,班别from 学生where学号in(select 学号from 成绩where课程编号=‘C2’or 成绩>=60 and 成绩<=90)
12.请查询选修了“C2”课程并取得该课程高分的学生的学号,姓名和成绩,将该信息保存
到STUMAX。
select 学号,姓名,成绩into stumax from 学生where学号in(select 学号from 成绩where课程编号=‘C2’and 成绩>=all)
1.请在成绩表中添加一行记录,学号为“200016”,课程编号为“C2”,成绩为“89”。
insert into 成绩values(‘200016’,‘C2’,89)
2.请在学生表中添加一行记录,学号为“200016”,姓名为“张亮”,专业为“电子信息”,
年级为“2000”,班别为“412”。
insert into 学生(学号,姓名,专业,年级,班别)
values(‘200016’,‘张亮’,‘电子信息’,‘2000’,‘412’)
3.请将未选课学生的学号,姓名信息插入到未选课表中。
select 学号,姓名into 未选课from学生where 学号not in (select 学号from 成绩) insert into NONSTU
select 学号,姓名from学生where 学号not in (select 学号from 成绩)
4.在学生表中搜索姓名为“张亮”的学生记录,并将记录中的年级修改为“2001”,班别
修改为“413”。
update 学生set 年级=‘2001’,班别=‘413’where 姓名=‘张亮’
5. 将所有选修了“数据库原理”的学生的成绩加5分。
update 成绩set 成绩=成绩+5 from 成绩,课程where 成绩.课程编号=课程.课程编号and 课程名称=‘数据库原理’
6. 在成绩表中删除指定成绩低于80分的记录,
delete FROM 成绩where 成绩<80
7. 在成绩表中删除一个学生所有记录,该学生姓名为“张亮”,姓名信息存储在学生表中。delete FROM成绩where学号=(select 学号from 学生where 姓名=‘张亮’)
8.请建立一个电子专业的学生信息视图。
create view 学生信息视图as select * from 学生where 专业=‘电子’
9.建立查询所有学生的学号,姓名,课程名称及成绩信息的视图。
create view 学生视图as select distinct(学生.学号),姓名,课程名称,成绩from 学生,课程,成绩from
where 学生.学号=成绩.学号and 课程.课程编号=成绩.课程编号10. 请删除第9题的视图。
drop view 学生视图
11.请在第8题视图中查女学生的学生基本信息。
select *from学生信息视图where 性别=‘女’
12. 请在电子专业的学生视图中插入一电子专业学生信息,该学生信息为:学号为“200009”,
姓名为“张丽”,性别为“女”,专业为“电子”,年级为“1”。
insert into 学生信息视图values(‘200009’,‘张丽’,‘电子’,‘1’,‘’,‘女’) 13. 请在电子专业的学生视图中学号为“200009”的同学年级改为“2”。
update学生信息视图set 年级=‘2’where学号=‘200009’
二.试用SQL查询语句表达下列对教学数据库3个基本表S,C SC的查询
S(S#,SNAME,SAGE,SEX)
C (C#,CNAME,TEACHER )
SC(S#,C#,GRADE)
(1)在表C中统计开设课程的教师人数。
select count(distinct TEACHER)
from    C
(2)求选修4号课程的女生的平均年龄
select avg(SAGE)
from s
where sex=’女’ and s# in
(select s#
From sc
Where c#=’ 4’)
(3)求每个学生都选修课程(已有成绩)的门数和平均成绩
select s#, avg(GRADE), count(c#)
from sc
group by s#
(4)统计每个学生选修课程的门数(超过3门的学生才统计)。要求输出学生学号和选修门
数,查询结果按门数降序排列,若门数相同按学号升序排列。
select s#, count(c#)
from sc
group by s#
having count(*)>3
order by count(*) desc ,sc.s# asc
(5)检索学号比王同学大,而年龄比他小的学生姓名。
select SNAME
from s
where s#>( select s# From s where sname=’王%’)
and sage<( select sage From s where sname=’王%’)
(6)在表SC中检索成绩为空值得学生学号和课程号。
select s#, c#
sql统计每个系的学生人数
from sc
where grade is null
(7)检索姓名以刘开头的所有学生的姓名和年龄
select sname, sage
from s
where sname like ‘刘%’
(8)求年龄大于女同学平均年龄的男同学的姓名和年龄
select sname, sage
from s
where sex= ‘男’ and sage>
(select avg(sage)
from s
where sex=’女’)
(9)求年龄大于所有女同学年龄的男同学的姓名和年龄
select sname, sage
from s
where sex=’男’and sage>all
(select sage
from s
where sex=’女’)
(10)查询选修2号课程且成绩在90分以上的所有学生
select s.s# , sname
from s ,sc
where s.s#=sc.s# and sc.c#=2 ade>90
(11)查询每个学生及其选修的课程名及其成绩。
select s.s# , sname ,    came , sc.grade
from s ,sc ,c
where s.s#=sc.s# and sc.c#=c.c#
(12)查询选修4号课程的女生的平均成绩。
select avg(SAGE) 平均成绩
from s , sc
where sex='女' and c#='4' and s.s#=sc.s#
三试用SQL更新语句对上面的3个基本表进行更新操作
(1)向基本表S中插入一个学生记录(‘11041101’,‘zhang’,17,’女’)
INSERT INTO S V ALUES(‘11041101’,’ zhang’,17,’女’)
(2)在S表中检索每一门课程成绩都大于80分的学生学号,姓名和性别,并把检索的信息送到另一个已存在的基本表STUDENT(S#,SNAME,SEX)
INSERT INTO Student
select s#, SNAME,SEX
from s
where EXISTS
(select *
from sc
where grade >=80 AND SC.S# = S.S#)
(3)在SC中删除尚无成绩的选课记录
DELETE FROM SC
where grade is null
(4)把W ANG同学的选课记录全部删除
DELETE FROM SC
Where S#=
(SELECT S#
FROM S
WHERE SNAME=’WANG’)
四设库中包含3个表:
学生表:student(sno学号,sname,sex,sage,sdept系)