数据库SQL实验代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库前四个实验SQL代码--实验一、数据库的定义实验--1.创建XSCJGL数据库USEMASTERIFDB_ID('XSCJGL')ISNOTNULLDROPDATABASEXSCJGLCREATEDATABASEXSCJGL--2、刷新数据库目录后,选择新出现的XSCJGL数据库,在SQL操作窗口中,创建Student、SC、Course三表及表记录插入命令如下:usexscjglifobject_id('sc','u')isnotnulldroptablescifobject_id('s','u')isnotnulldroptablesifobject_id('c','u')isnotnulldroptablecifobject_id('tsc','u')isnotnulldroptabletscifobject_id('ts','u')isnotnulldroptabletsifobject_id('tc','u')isnotnulldroptabletcCreateTableS(SnoCHAR(2)NOTNULLPRIMARYKEY(Sno),SnameCHAR(6),sexCHAR(2)DEFAULT'男'CHECK(sex='男'ORsex='女'),ageSMALLINTCHECK(age=15ANDage=45),sdeptCHAR(6));CreateTableC(CnoCHAR(2)NOTNULLPRIMARYKEY(Cno),CnameVARCHAR(20),cdeptCHAR(6),TnameCHAR(6),ctSMALLINTCHECK((ctISNULL)OR(ctBETWEEN1AND5)),CPNOVARCHAR(20));CreateTableSC(SnoCHAR(2)NOTNULLCONSTRAINTS_FFOREIGNKEYREFERENCESS(Sno),CnoCHAR(2)NOTNULL,GRADESMALLINTCHECK((GRADEISNULL)OR(GRADEBETWEEN0AND100)),PRIMARYKEY(Sno,Cno),FOREIGNKEY(Cno)REFERENCESC(Cno));INSERTINTOSVALUES('S1','李涛','男',22,'统计');INSERTINTOSVALUES('S2','王林','女',18,'计算机');INSERTINTOSVALUES('S3','陈高','女',15,'自动化');INSERTINTOSVALUES('S4','张杰','男',17,'自动化');INSERTINTOSVALUES('S5','吴小丽','女',19,'统计');INSERTINTOSVALUES('S6','张敏敏','女',20,'计算机');INSERTINTOSVALUES('S7','郑冬','男',19,'数学');INSERTINTOSVALUES('S8','朱雨','男',20,'数学');INSERTINTOCVALUES('C1','C语言','计算机','汪小寒','4','计算机基础');INSERTINTOCVALUES('C2','R软件','自动化','周在莹','3','线性代数');INSERTINTOCVALUES('C3','精算学','统计','刘晓','3','金融数学');INSERTINTOCVALUES('C4','计算机算法','计算机','李杰','2','C语言');INSERTINTOCVALUES('C5','数据库应用','自动化','周有顺','4','R软件');INSERTINTOCVALUES('C6','金融数学','统计','黄旭东','3','数学分析');INSERTINTOCVALUES('C7','时间序列','统计','何道江','4','精算学');INSERTINTOCVALUES('C8','数学分析','数学','周文','4','高等数学');INSERTINTOCVALUES('C9','线性代数','数学','储茂权','2','高等数学');INSERTINTOSCVALUES('S1','C1',90);INSERTINTOSCVALUES('S1','C2',85);INSERTINTOSCVALUES('S2','C1',84);INSERTINTOSCVALUES('S2','C2',94);INSERTINTOSCVALUES('S2','C3',83);INSERTINTOSCVALUES('S3','C1',73);INSERTINTOSCVALUES('S3','C7',59);INSERTINTOSCVALUES('S3','C4',88);INSERTINTOSCVALUES('S3','C5',85);INSERTINTOSCVALUES('S4','C2',65);INSERTINTOSCVALUES('S4','C5',90);INSERTINTOSCVALUES('S4','C6',79);INSERTINTOSCVALUES('S5','C2',89);INSERTINTOSCVALUES('S5','C1',84);INSERTINTOSCVALUES('S6','C5',55);INSERTINTOSCVALUES('S6','C1',null);--实验二、数据库的查询实验--使用XSCJGL库,保存好并每次实验做好备份,以后实验要继续使用。--1)在学生选课库中实现其数据查询操作。--1.求数学系学生的学号和姓名usexscjglselectsno,snamefromswheresdept='数学'--2.求选修了课程的学生学号selectdistinctsnofromsc--3.求选修C1课程的学生学号和成绩,结果按成绩降序排列,如成绩同按学号升序排列selectsno,gradefromscwherecno='c1'orderbygradedesc,sno--4.求选修课程C1成绩在80~90之间的学生学号和成绩,并将成绩乘以.8输出selectsno,grade*0.8asgradefromscwheregrade=80andgrade=90--5.求数学或计算机系姓张的学生的信息select*fromswheresnamelike'张%'andsdeptin('数学','计算机')--6.求缺少了成绩的学生的学号和课程号selectsno,cnofromscwheregradeisnull--2)连接查询实验--7.查询每个学生的情况以及他(她)所选修的课程selects.sno,s.sname,s.sex,s.age,s.sdept,c.cnamefroms,sc,cwheres.sno=sc.snoandsc.cno=c.cno--8.求学生的学号、姓名、选修的课程及成绩selects.sno,s.sname,c.cname,sc.gradefroms,sc,cwheres.sno=sc.snoandsc.cno=c.cno--9.求选修课程C1且成绩在分以上的学生学号、姓名及成绩selects.sno,s.sname,sc.gradefromsc,swheresc.cno='c1'andsc.grade=90ands.sno=sc.sno--10.查询每一门课的间接先行课selectfirst.cname,second.cpnofromcfirst,csecondwherefirst.cpno=second.cname--实验三.基于XSCJGL数据库,试用SQL的查询语句表达下列查询:--1.统计有学生选修的课程门数。selects.sname,count(sc.sno)asnumfromsc,swheres.sno=sc.snogroupbys.sname--2.求选修C4课程的学生的平均年龄selectavg(s.age)as'平均年龄'froms,scwheres.sno=sc.snoandsc.cno='C4'--3.求学分为的每门课程的学生平均成绩selectc.cno,avg(sc.grade)as'平均成绩'fromsc,cwheresc.cno=c.cnoandc.ct='3'groupbyc.cno--4.统计每门课程的学生选修人数,超过人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列selectcno,count(sno)as'选修人数'fromscgroupbycnohavingcount(*)=3orderbycount(sno)desc,cno--5.检索学号比王非同学大,而年龄比他小的学生姓名selectsnamefromswheresno(selectsnofromswheresname='王林')andage(selectagefromswheresname='王林')--6.检索姓名以王打头的所有学生的姓名和年龄selectsname,agefromswheresnamelike'王%'--7.在SC中检索成绩为空值的学生学号和课程号selectsno,cnofromscwheregradeisnull--8.求年龄大于女同学平均年龄的男学生姓名和年龄selectsname,agefromswheresex='男'andage(selectavg(age)fromswheresex='女')--9.求年龄大于所有女同学年龄的男学生姓名和年龄selectsname,agefromswheresex='男'andage(selectmax(age)fromswheresex='女')--10.检索所有比王林年龄大的学生姓名、年龄和性别selectsname,age,sexfromswhereage(selectagefromswheresname='王林')--11.检索选修课程C2的学生中成绩最高的学生的学号selectsnofromscwherecno='C2'andgrade=(selectmax(grade)fromsc)--12.检索学生姓名及其所选修课程的课程号和成绩selectsname,cno,gradefroms,scwheres.sno=sc.sno--13.检索选修门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来selectsno,sum(grade)as'总成绩'fromscwheregrade=60groupbysnohavingcount(cno)=3orderby'总成绩'desc--实验四、基于XSCJGL数据库,实践以下命令式更新操作--1.在学生表S和学生选课表SC中分别添加一条以上记录(记录内容自己组织)insertintosvalues('s9','陈东','男',18,'数学');INSERTINTOSCVALUES('S6','C2',80);--2.备份S表到TS中,并清空TS表ifobject_id('ts','u')isnotnulldroptabletsSELECT*INTOTSFROMSTRUNCATETABLETS--3.给计算机系的学生开设C7号课程,建立所有相应的选课记录,成绩暂定为分Insertintoscselectsno,'C7',60fromswheresdept='计算机'--4.把年龄小于等于的女生记录保存到表TS中。ifobject_id('ts','u')isnotnulldroptabletsSELECT*INTOTSFROMSWHEREAGE=16--5.在表S中检索每门课均不及格的学生学号、姓名、年龄、性别及所在系等信息,并把检索到的信息存入TS表中。ifobject_id('ts','u')isnotnulldroptabletsSELECTS.SNO

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功