《SQL语句创建学生信息数据库表的示例.docx》由会员分享,可在线阅读,更多相关《SQL语句创建学生信息数据库表的示例.docx(8页珍藏版)》请在第壹文秘上搜索。
1、用SQL语句创立如下三个基本表:学生表(StUderIt)、课程表(Course).学生选课表(SC),构造如下所示Student表构造列名说明数据类型约束Sno学号字符串,长度为7主码Sname姓名字符串,长度为10非空Ssex性别字符串,长度为2取男或女Sage年龄整数取值1545Sdept所在院系字符串,长度为20默认为计算机系CreatetableStudentSnovarchar(7)primarykey,Snamevarchar(10)notnull,Ssexchar(2)check(Ssex=男orSsex=,女),Sageintcheck(Sagebetween15and45)
2、,SdeptVarChar(20)default(,计算机系)Course表构造列名说明数据类型约束Cno课程号字符串,长度为10主码Cname课程名字符串,长度为20非空Ccredit学分整数取值大于0Semester学期整数取值大于0Period学时整数取值大于0CreatetablecourseCnovarchar(10)primarykey,Cnamevarchar(20)notnul1,Ccreditintcheck(ScteditO),Semesterintcheck(SemesterO),Periodintcheck(Period0)SC表构造列名说明数据类型约束Sno学号字符串
3、,长度为7主码,引用Student的外码Cno课程号字符串,长度为io主码,引用CoUrSe的外码Grade成绩整数取值0100CreatetableSCSnovarchar(7)foreignkeyreferencesstudent(Sno),Cnovarchar(10)foreignkeyreferencescourse(Cno),Gradeintcheck(GradebetweenOand100),Primarykey(Sno,Cno)1 .查询学生选课表中的全部数据。SELECT*FROMSCgo2 .查询计算机系学生的姓名、年龄。SelectSname,SageFromStudent
4、WhereSdept=,计算机系3 .查询成绩在7080分之间的学生的学号、课程号和成绩。SelectSno,Cno,GradeFromCourse,ScWherecourse,cno=sc.Cnoandsc.Gradebetween70and804 .查询计算机系年龄在1820之间且性别为“男的学生的姓名和年龄。SelectSname,SageFromStudentWhereSagebetween18and20andSsex=,男andSdept=计算机系go5 .查询课程号为“C01”的课程的最高分数。Selecttop1Gradeselectmax(Grade)as最高分FromScfr
5、omScWhereCno=,COl,whereCno=,COl,Order by Grade descorder by Grade desc6 .查询计算机系学生的最大年龄和最小年龄。Selectmax(Sage)as年龄最大,min(Sage)as年龄最小FromStudentWhereSdept三,计算机系7 .统计每个系的学生人数。Selectcount(Sdept)as学生人数,SdeptFromStudentGroupbySdept8 .统计每门课程的选课人数和考试最高分。Selectcount(Sno)as选课人数,c.Sno,max(Grade)as最高分FromCoursecl
6、eftjoinSo=s.CnoGroupbyc.Cno9 .统计每个学生的选课门数和考试平均成绩,并按学号的升序显示结果。Selectsno,avg(grade)as,平均成绩,count(cno)as,选课门数,FromscGroupbysnoOrderbysno10 .查询总成绩超过200分的学生,要求列出学号、总成绩。Selectsno,sum(grade)FromscGroupbysnoHavingsum(grade)20011 .查询选修了课程“C02”的学生的姓名和所在系。Selectsname,sdeptFromstudentsi,scs2Wheresi.sno=o三,c02,1
7、2 .查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。Selectsi.sname,o,s2.gradeFromstudentsi,scs2Wheresi.sno=s2.snoandgrade80Orderbygradedesc13 .查询哪些课程没有人选修、要求列出课程号和课程名。So,ameFo=oGo,ameHavingcount(s.sno)=014 .用子查询实现如下查询:(1)查询选修了课程“C01”的学生的姓名和所在系。Selectsname,sdept,snoFromstudentWheresnoin(SelectsnoFromscWherecno三,c
8、l,)(2)查询信息系成绩在80分以上的学生的学号、姓名。Selectsno,snameFromstudentWheresdopt三,外语系andsnoin(SelectsnoFromscWheregrade80)(3)查询计算机系考试成绩最高的学生的姓名。Selectsi.snamefromstudentsWheresdcpt三,计算机系,andsnoin(selectsnofromscWheregradein(selectmax(Gracle)fromsc)15 .删除选课成绩小于50分的学生的选课记录。DeletefromscWheregrade70Select*fromsc验证16 .
9、将所有选修了课程“C01”的学生的成绩加10分:UpdatescSetgrade=grade+10WhereCnO=cl,17 .将计算机系所有选修了课程“计算机文化根基课程的学生的成绩加10分。Select*fromscUpdatescSetgrade=grade+10Wherecnoin(selectcnofromcourseWhereCnanIC=计算机文化根基)18 .创立查询学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。Select*fromcourseSelect*fromstudentsSelect*fromscCreateview学生基本信息AsSelectstud
10、ents,sno,snamc,sdcpt,o,cname,ccreditFromcourse,sc,studentsWherecourse,cno=oAo=students.sno19 .创立查询每个学生的平均成绩的视图,要求列出学生学号及平均成绩。Createviews_avgAsSelectsno,avg(Grade)as平均成绩fromscGroupbysno20 .创立查询每个学生的选课学分的视图,要求列出学生学号及总学分。Createviews_scAsSelectstudents,sno,sum(ccrcdit)as总学分fromStudents,sc,courseWherestu
11、dents,sno=sc.snoAo=oGroupbystudents,sno21 .用SQL语句创立一个名为f的函数,该函数能够求出3到100之间的所有素数之和。Createfunctionf_l()ReturnsintAsBeginDeclareaint,bint,iint,sumintSeti=3SetSUm=OWhilei101BeginSetb=0Whileax2ReturnmaxEndSelectdbo.f_2(2,6)23 .用SQL语句创立一个名为pro_get_stu_information的存储过程,该存储过程能够根据用户指定的Sno学号)求出与该学号对应的学生姓名、课程名
12、、成绩。Createprocedurepro_get_stu_informationchar(6)outputAsSelectsname,cname,gradefromstudents,sc,courseWherestudents,sno=o=oandsc.sno=mExecpro-get-stuinformation,0603002,24 .为“学生表创立一个依赖于“学号的唯一的、非聚集的索引Createuniquenonclusteredindexstu_intonstudents(sno)25 .通过游标逐行读取“学生表的记录Declarestu_curcursorforSelect*fromstudentsforreadonlyOpenstucurFetchstucurClosestucurDeallocatestucur