用SQL语句创建如下三个基本表:学生表(Studen t)、课程表(Course)、学生选课表(SC),结构如下所示
Studen t表结构
Create table Student
(
Sno varchar(7) primar y key,
Snamevarchar(10) not null,
Ssex char (2) check(Ssex=‘男’or Ssex=’女’),
Sage int check(Sage betwee n 15 and 45),
Sdeptvarchar(20) defaul t(‘计算机系’)
)
Course表结构
Create tablecourse
(
Cno varchar(10) primar y key,
Cnamevarchar(20) not null,
Ccredi t int check(Sctedi t>0),
Semest er int check(Semest er>0),
Period int check(Period>0)
)
SC表结构
Create tableSC
(
Sno varcha r(7) foreig n key refere ncesstuden t(Sno),
Cno varcha r(10) foreig n key refere ncescourse(Cno),
Gradeint check(Gradebetwee n 0 and 100),
Primar y key (Sno,Cno)
)
1.查询学生选课表中的全部数据。
SELECT *
FROM SC
go
2.查询计算机系学生的姓名、年龄。
Select Sname,Sage
From Studen t
WhereSdept=’计算机系’
3.查询成绩在70~80分之间的学生的学号、课程号和成绩。
Select Sno,Cno,Grade
From Course,Sc
Wherecourseo=sc.Cno and sc.Gradebetwee n 70 and 80
4.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名和年龄。
Select Sname,Sage
From Studen t
WhereSage betwee n 18 and 20 and Ssex=’男’and Sdept=’计算机系’
go
5.查询课程号为“C01”的课程的最高分数。
Select top 1 Grade select max(Grade) as 最高分
From Sc from Sc
WhereCno=’C01’ whereCno=’C01’
Orderby Gradedesc orderby Gradedesc
6.查询计算机系学生的最大年龄和最小年龄。
Select max(Sage) as 年龄最大,min(Sage) as 年龄最小
From Studen t
WhereSdept=’计算机系’
7.统计每个系的学生人数。
Select count(Sdept) as 学生人数,Sdept
From Studen t
Groupby Sdept
8.统计每门课程的选课人数和考试最高分。
Select count(Sno) as选课人数,c.Sno,max(Grade) as最高分
From Course c left join Sc s on co=s.Cno
Groupby c.Cno
9.统计每个学生的选课门数和考试平均成绩,并按学号的升序显示结果。
Select sno,avg(grade) as ’平均成绩’,count(cno) as ’选课门数’
From sc
Groupby sno
Orderby sno
10.查询总成绩超过200分的学生,要求列出学号、总成绩。
Select sno,sum(grade)
From sc
sql容易学吗Groupby sno
Having sum(grade)>200
11.查询选修了课程“C02”的学生的姓名和所在系。
Select sname,sdept
From studen t s1,sc s2
Wheres1.sno=s2.sno and s2o=’c02’
12.查询成绩在80分以上的学生的姓名、课程号和成绩,并按
成绩的降序排列结果。
Select s1.sname,ade
From studen t s1,sc s2
Wheres1.sno=s2.sno and grade>80
Orderby gradedesc
13.查询哪些课程没有人选修、要求列出课程号和课程名。Select co,came
From course c left join sc s on co=so
Groupby co,came
Having count(s.sno)=0
14.用子查询实现如下查询:
(1)查询选修了课程“C01”的学生的姓名和所在系。
Select sname,sdept,sno
From studen t
Wheresno in (
Select sno
From sc
Wherecno=’c01’
)
(2)查询信息系成绩在80分以上的学生的学号、姓名。
Select sno,sname
From studen t
Wheresdept=’外语系’and sno in(
Select sno
From sc
Wheregrade>80
)
(3)查询计算机系考试成绩最高的学生的姓名。
Select s1.snamefrom studen ts
Wheresdept=’计算机系’ and sno in
(select sno from sc
Wheregradein
(select max(Grade)from sc)
)
15.删除选课成绩小于50分的学生的选课记录。
Delete from sc
Wheregrade<70
Select* from sc—验证
16.将所有选修了课程“C01”的学生的成绩加10分:
Update sc
Set grade=grade+10
Wherecno=’c01’
17.将计算机系所有选修了课程“计算机文化基础”课程的学生的成绩加10分。
Select*from sc
Update sc
Set grade=grade+10
Wherecno in
(select cno from course
Wherecname=’计算机文化基础’)
18.创建查询学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。
Select* from course
Select* from studen ts
Select* from sc
Create view 学生基本信息
As
Select studen ts.sno,sname,sdept,sco,cname,ccredi t
From course,sc,studen ts
Wherecourseo=sco
And sco=studen ts.sno
19.创建查询每个学生的平均成绩的视图,要求列出学生学号
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论