还剩6页未读,继续阅读
文本内容:
用SQL语句创建如下三个基本表:学生表S t uden t、课程表Cou rse.学生选课表SC,结构如下所示S tu d en t表结构列名说明数据类型约束Sno学号字符串,长度为7主码Sname姓名字符串,长度为10非空S s e x性别字符串,长度为2取男或‘女’Sa ge年龄整数取值15-45S d e pt所在院系字符串,长度为20默认为计算机系Cr ea teta ble Stude n tSnov a rc h ar7p rimary key,S namevar c ha r10no tnull,Sse xchar2ch eck Ssex=男o rSsex=女,Sa ge i n tchec kSag e bet ween15a nd45,Sdep tvarchar20d efau It计算机系Cour s e表结构列名说明数据类型约束Cno课程号字符串,长度为10主码C name课程名字符串,长度为20非空Ccredit学分整数取值大于0Semester学期整数取值大于0Period学时整数取值大于0Crea t e table c ou r seCno var char10primar yk ey,C n ame varchar20n otnu11,Cere dit int c heckScted it0,Seme s t er intcheckSemester0,Period intcheckP e riod0SC表结构列名说明数据类型约束Sno学号字符串,长度为7主码,引用Stu dent的外码Cno课程号字符串,长度为10主码,引用Cours e的外码Gr a de成绩整数取值0100〜Cr eate tabie SCSn ovarcha r7forei gn key r e fer e nc es s tuden tS no,Cnova rchar10foreign keyre fe rences cou r seC no,Grade intchec kGr a de bet w ee n0and100,Prim ary keyS n o,C n o
1.查询学生选课表中的全部数据.S ELECT*F R0M SCgo
2.查询计算机系学生的姓名、年龄Select Sn ame,SageFrom StudentWhe reSde pt=,计算机系
3.查询成绩在70~80分之间的学生的学号、课程号和成绩Sele c t Sn o,Cno,GradeF r om Co urse,S cWhere coursecno=sco Cno and s c.Gra d ebetween70a nd
804.查询计算机系年龄在18〜20之间且性别为“男”的学生的姓名和年龄.Sele c t Sna me,SageFrom StudentWhere Sagebetwe en18and20and Ssex=男,and Sdept=,计算机系go
5.查询课程号为“C01〃的课程的最高分数.Selec tto p1Grade Fr o m se1ect max Grad eas最高分f rom ScScWhere Cno=C01w hereCno=C01Ord er byG rade d esc orderb yG rade desc
6.查询计算机系学生的最大年龄和最小年龄S e1ect maxSa ge as年龄最大,min Sa gea s年龄最小From StudentWhereSdep t=计算机系,
7.统计每个系的学生人数Sei e c tcount S d epta s学生人数,Sd e ptFrom StudentGrou p bySd ept
8.统计每门课程的选课人数和考试最高分S ele ctcou n tS noa s选课人数,c.S no,m axGra d eas最高分From Course c left j oin Sc s on cc no=s.CnoGr o upby c.Cno
9.统计每个学生的选课门数和考试平均成绩,并按学号的升序显示结果Se1ect sno,avggrade as平均成绩,co unt cnoas选课门数From s cGrou pby s n oOrder by sn o
10.查询总成绩超过200分的学生,要求列出学号、总成绩.S elec t s no,sumg rad eFrom s cGr oup by snoHaving sumgrade
20011.查询选修了课程“CO2”的学生的姓名和所在系S elect s nam e,s deptFrom s tu de n t si,sc s2Where si.s no=s
2.sno and s2cno=c
0212.查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果Select s1o sname,s2cn o,s2g radeoF rom stu dent si,sc s2W here s
1.sno=s
2.sno a nd gr a de
8013.查询哪些课程没有人选修、要求列出课程号和课程名.Or der byg rade des cSele ctc oeno,ccnameFrom c ou rsecleftjoin scsonc.eno=s.c noGroup by c.eno,c.c nameHavi ng count ss no=0o
14.用子查询实现如下查询:⑴查询选修了课程“C01〃的学生的姓名和所在系S e1ect sname,s dept,sno F romstu de ntWh e re sno inS e1ect snoFrom scWherec no=c012查询信息系成绩在80分以上的学生的学号、姓名Sele ct sno,snameFrom s tu de ntWhere sdept=,外语系and snoinSelect snoFrom scWhere g rade80⑶查询计算机系考试成绩最高的学生的姓名OS e lect s
1.s name from st ude nt sW he resdept=计算机系and snoin select sno from s cWheregradei nselect maxGr adefr oms c
15.删除选课成绩小于50分的学生的选课记录D eletefr om scWhere grade70Selec t*f rom sc一验证
16.将所有选修了课程“C01”的学生的成绩加10分U pd a te scSet grade=grade+10W here eno=cOl
17.将计算机系所有选修了课程“计算机文化基础”课程的学生的成绩加10分Select*fr omscUpdat escSetgrade=gra de+10W hereeno ins electcn ofrom courseWherecname=计算机文化基础
18.创建查询学生的学号、姓名、所在系、课程号、课程名、课程学分的视图Sele ct*f romcourseSe1ect*froms tude nt sSelect*f rom scCreatevi ew学生基本信息A sSeie ctst ude ntssno,sname,s dept,scc no,c name,ccredi tFrom cour so oe,sc,s t udentsW herecourse.cno=sc.c noAndsc.cno=stud ents.sn o
19.创建查询每个学生的平均成绩的视图,要求列出学生学号及平均成绩C reateview s_avgAsSelect sno,a vgG radeas平均成绩f rom scGroupbysno
20.创建查询每个学生的选课学分的视图,要求列出学生学号及总学分C reateview s_scAsSe1ect stude nts.sno,sum ceredit as/总学分fromStu dents,sc,c ours eWheres tu dents.sno=scsnoAnd sc.cno=cours e.cnoGroup bystudents.sn o
21.用S QL语句创建一个名为f_l的函数,该函数能够求出3至IJ100之间的所有素数之和C reate fun ctionf_l Re t urnsintAsB eginDec1a re@a int,@b in t,@i int,@s um intSet@i=3S et@sum=0Whi1e@i101BeginSe t@b=0Wh ile@a=@i/2B egin1f@i%@a=0B egi nSet@b=1B rea kEndSet@a=@a+1EndI f@b=0——@b为0说明之前没有比@1小的数字可以把@i整除BeginS et@s um=@s um+@i EndSet@i=@i+1E ndRetu rn@s umEndGoSele ct dboo f_
122.用S QL语句创建一个名为f_2的函数,该函数能够求出任意两个数的最大值Cr eate fun ctio nf_2@xl int,@x2int return sintA sBegi nDec1are@m ax intIf@xl@x2Return@m ax EndSe lectdboof_22,
623.用SQL语句创建一个名为p ro_get_stu_in format ion的存储过程,该存储过程能够根据用户指定的Sn0学号求出与该学号对应的学生姓名、课程名、成绩Cr eate procedure pro_get_stu_i nfo rmatio n@m char6outp ut AsSeiect sname,cname,gradefrom st udent s,sc,cou rseWhere studentssno=sc snoa ndsc.cno=course.eno andsc.sno=@m Execpro_get_stu_i nfo rmat ion0603002,
24.为“学生”表创建一个依赖于“学号”的唯一的、非聚集的索引C reate uni qu enoncl ustere dinde xstuinton studentssno
25.通过游标逐行读取“学生”表的记录De c1a restu curc ursorforSelec t*fromstudentsfor readonlyOpe nstu cur Fetchs tu_c urC1os estu curDe allocate stucur。
个人认证
优秀文档
获得点赞 0