‘壹’ 如何使用sql语句操作“学生课程数据库中的三个关系”
设学生课程数据库中有三个关系:
学生关系S(学号,姓名,年龄,性别)
学习关系SC(学号,课程号毁搏,成绩)
课程关系C(课程号,课程名)
其中
S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示
学号、课程号、姓名、年龄、性别、成绩和课程名。
用SQL语句表达下列操作
(1).检索选修课程名称为“MATHS”的学生的学号与姓名
SELECT
S.学号,S.姓名
FROM SC INNER JOIN C ON SC.课程号 = C.课程号 INNER JOIN S ON SC.学号 = S.学号
where C.课程名 = 'MATHS'
(2).检索至少学习了课程号为“C1”和“C2”的学生的学号
SELECT 学号,iCount=Sum(iCount) From (
SELECT 学号,iCount=1 FROM SC Where 课程号 = 'C1' OR 课程号 = 'C2'
) A Group by 学号
(3).检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄
SELECT 学号,姓名,年龄 FROM S WHERE 性别='女' And 年龄 >= 18 And 年龄 <纤碧祥= 20
(4).检索平均成绩超过80分的学生的学号和慧贺平均成绩
SELECT * FROM (
SELECT 学号,平均成绩=Avg(成绩) FROM SC Group By 学号
) A WHERE 平均成绩 > 80
(5).检索选修了全部课程的学生姓名
SELECT
S.姓名
FROM
(
SELECT 学号 FROM(SELECT 学号,学习课程总数=Count(课程号),课程总数=Isnull((select count(课程号) From C),0) FROM SC Group By 学号) A Where 学习课程总数 = 课程总数
) L INNER JOIN S ON L.学号 = S.学号
(6).检索选修了三门以上的学生的姓名
SELECT
S.姓名
FROM
(
SELECT 学号 FROM (SELECT 学号,课程数=sum(iCount) FROM (SELECT 学号,iCount=1 FROM SC) A GROUP BY 学号) A WHERE 课程数 > 3
) L INNER JOIN S ON L.学号 = S.学号
‘贰’ 有一个“学生-课程”数据库,数据库中包括三个表:
以oracle为例:
1、createtablestudent(Snonumber(10)primarykey,
Snamevarchar2(20),
Ssexvarchar2(2),
Sagenumber(10),
Sdeptvarchar2(20)
);
2、SELECT*FROMstudentFROMSdept='计算机'ORDERBYSnoDESC
3、SELECTDISTINCTstudent.Sno,student.Sname,student.Ssex
FROMstudent,Course,SC
wherestudent.Sno=SC.SnoANDCourse.Cno=SC.Cno
ANDCourse.Ccredit=5ANDSC.Grade>60
4、createorreplacetriggermy_trig
afterdeleteonstudent
foreachrow
begin
deletefromSCwhereSno=:student.Sno;
end;
‘叁’ 设有学生选修课程数据库
1) select 课程号, 课程名称 from 课程表 where 教师姓名='李老师'
2) select 学号, 姓名 from 学生表 where (性别='女') and (年龄>23)
3) select 课程名称 from 课程表 where 课程号 in (select 选课表.课程号 from 选课表,学生表 where (选课表.学号=学生表.学号) and (学生表.姓名='李小波'))
4) select 姓名, 所在系 from 学生表 where 学号 in (select distinct 学号from 选课表 where 成绩 >= 80)
5) select distinct 学生表.学号, 姓名 from 学生表, 选课表, 课程表 where (选课表.学号=学生表.学号) and (选课表.课程号=课程表.课程号) and (课卖返程名称 <>'操作系统')
6)至少选修两门以上课程的学生姓名、性别。 select [姓名], [性别] from [学生表] where [学号] in (SELECT [学号] FROM [选课表] group by [学号] having count([学号])>1)
7) select count(学号) from 选课表毕局, 课程表 where (选课表.课程号=课程表.课程号) and (教师姓名='李老师')
8) select distinct 学生表.学号, 学生表.姓名 from 学生表, 选课表, 课程表 where (选课表.学号=学生表.学号) and (选课表.课程号=课程表.课程号) and (教师姓名<>'中数饥李老师')
9) select top 1 学生表.学号, 姓名, 所在系 from 学生表, 选课表, 课程表 where (选课表.学号=学生表.学号) and (选课表.课程号=课程表.课程号) and (课程名称 = '操作系统) order by 成绩 desc
‘肆’ 设有一个学生—课程数据库,其中包括三个表:
1.查询所有学生的学号、姓名、所在系
Select sno,sname,sdept
From student
2.查询全体学生的学号、姓名、性别,年龄,系别的信息
Select *
From student
3.查询全体学生的姓名及其出生年份
Select sname,datadiff(year,sage,2010) as 出生年份
From student
4.查询信息工程系全体学生的名单
Select sname
From student
Where sdept=’信息工程系’
5.查询所有年龄在20岁以下的学生姓名以及年龄
Select sname,sage
From student
Where sage<20
6.查询考试成绩不及格的学生的学号
Select sno
From score
Where grade<60
7.查询年龄在20-25(包括20、25)之间的学生的姓名、系别和年龄
Select sname,sdept,sage
From student
Where sage>=20 and sage<=25
8.查询不在软件系、网络系、也不在外语系学生的姓名和性别
select sname,sex
from student
where sdept <>'软件系、网络系、外语系'
9.查询所有姓李且全名为三个汉字的学生的姓名、学号、和性别
select sname,sno,sex
from student
where sname like '李_ _'
10.查询姓名中第二个字为'阳'字的学生的姓名
select sname
from student
where sname like '_阳%'
11.查询信息工程系年龄在20岁以下的学生的姓名
select sname
from student
where sage<20 and sdept='信息工程系'
12.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列
select sno,grade
from score
where cno='3'
order by grade desc
13.查询全体学生的学号、姓名等情况,结果按照所在系的升序排序,同一系的按年龄降序排列
select sno,sname
from student
order by sdept asc,sage desc
14.统计学生总人数
select count(*) as 人数
from student
15.查询选修课课程的学生人数
select count(*) as 人数
from score
16.计算1号课程的学生平均分数
select avg(grade) 均分
from score
where cno='1'
17.查询选修了1号课程的学生最高分数
select max(grade) 最高分
from score
where cno='1'
18.求各课程号及相应的选修课人数
select cno,distinct(sno)
from score
group by cno
19.查询选修了3门以上课程的学生号
select sno
from score
group by sno
having count(cno)>3
20.查询选修2学分的课程且该课程的成绩在90分以上的所有学生的姓名
select sname
from student,course,score
where student.sno=score.sno and course.cno=score.cno and ccredit=2 and grade>90
21.查询每个学生的学号、姓名、选修的课程号和成绩
select student.sno,sname,cno,grade
from student,score,course
where student.sno=score.sno and score.cno=course.cno
22.查询所有选修了1号课程的学生姓名
select sname
from student,score
where student.sno=score.sno and score.cno='1'
23.查询选修了课程名为“计算机信息管理”的学生的学号和姓名
select sno,sname
from student,course,score
where student.sno=score.sno and course.cno=score.cno
and cname='计算机信息管理'
希望能给你帮助
‘伍’ 有一个“学生课程”数据库,数据库中包括三个表:
创建“学生-课程”数据库:将数据文件和日志有一个“学生-课程”数据库,数据库中包括三个表:
(1)“学生”表1使用T-SQL语言完成下列操作1