SQL语句创建学生信息数据库表地示例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用SQL语句创建如下三个基本表:学生表(Student)、课程
表(Course)、学生选课表(SC),结构如下所示
Student表结构列名说明数据类型约束
Sno学号字符串,长度为7主码
Sname姓名字符串,长度为10非空
Ssex性别字符串,长度为2取‘男’或‘女’
Sage年龄整数取值15~45
Sdept所在院系字符串,长度为20默认为‘计算机系’CreatetableStudent
(
Snovarchar(7)primarykey,
Snamevarchar(10)notnull,
Ssexchar(2)check(Ssex=‘男’orSsex=’女’),
Sageintcheck(Sagebetween15and45),
Sdeptvarchar(20)default(‘计算机系’) )
Course表结构列名说明数据类型约束
Cno课程号字符串,长度为10主码
Cname课程名字符串,长度为20非空
Ccredit学分整数取值大于0
Semester学期整数取值大于0
Period学时整数取值大于0
Createtablecourse
(
Cnovarchar(10)primarykey,
Cnamevarchar(20)notnull,
Ccreditintcheck(Sctedit>0),
Semesterintcheck(Semester>0),
Periodintcheck(Period>0)
)
SC表结构
列名说明数据类型约束
Sno学号字符串,长度为7主码,引用Student的外码
Cno课程号字符串,长度为10主码,引用Course的外码
Grade成绩整数取值0~100
CreatetableSC
(
Snovarchar(7)foreignkeyreferencesstudent(Sno),
Cnovarchar(10)foreignkeyreferencescourse(Cno),
Gradeintcheck(Gradebetween0and100),
Primarykey(Sno,Cno)
)
1.查询学生选课表中的全部数据。
SELECT*
FROMSC
go
2.查询计算机系学生的姓名、年龄。
SelectSname,Sage
FromStudent
WhereSdept=’计算机系’
3.查询成绩在70~80分之间的学生的学号、课程号和成绩。SelectSno,Cno,Grade
FromCourse,Sc
o=oandsc.Gradebetween70and80
4.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名和年龄。
SelectSname,Sage
FromStudent
WhereSagebetween18and20andSsex=’男’andSdept=’计算机系’go
5.查询课程号为“C01”的课程的最高分数。
Selecttop1Gradeselectmax(Grade)as最高分
FromScfromSc
WhereCno=’C01’whereCno=’C01’OrderbyGradedescorderbyGradedesc
6.查询计算机系学生的最大年龄和最小年龄。
Selectmax(Sage)as年龄最大,min(Sage)as年龄最小FromStudent
WhereSdept=’计算机系’
7.统计每个系的学生人数。
Selectcount(Sdept)as学生人数,Sdept
FromStudent
GroupbySdept
8.统计每门课程的选课人数和考试最高分。
Selectcount(Sno)as选课人数, c.Sno,max(Grade)as最高分o=o
o
9.统计每个学生的选课门数和考试平均成绩,并按学号的升序
显示结果。
Selectsno,avg(grade)as’平均成绩’,count(cno)as’选课门数’Fromsc
Groupbysno
Orderbysno
10.查询总成绩超过200分的学生,要求列出学号、总成绩。
Selectsno,sum(grade)
Fromsc
Groupbysno
Havingsum(grade)>200
11.查询选修了课程“C02”的学生的姓名和所在系。Selectsname,sdept
Fromstudents1,scs2
Wheres1.sno=o=’c02’
12.查询成绩在80分以上的学生的姓名、课程号和成绩,并按
成绩的降序排列结果。
Selects1.sname,o,s2.grade
Fromstudents1,scs2
Wheres1.sno=s2.snoandgrade>80
Orderbygradedesc
13.查询哪些课程没有人选修、要求列出课程号和课程名。
o,ame
o=o
o,ame
Havingcount(s.sno)=0
14.用子查询实现如下查询:
(1)查询选修了课程“C01”的学生的姓名和所在系。
Selectsname,sdept,sno
Fromstudent
Wheresnoin(
Selectsno
Fromsc
Wherecno=’c01’
)
(2)查询信息系成绩在80分以上的学生的学号、姓名。
Selectsno,sname
Fromstudent
Wheresdept=’外语系’andsnoin(
Selectsno
Fromsc
Wheregrade>80 )
(3)查询计算机系考试成绩最高的学生的姓名。
Selects1.snamefromstudents
Wheresdept=’计算机系’andsnoin
(selectsnofromsc
Wheregradein