上机练习文档格式.docx

上传人:b****6 文档编号:20198289 上传时间:2023-01-17 格式:DOCX 页数:19 大小:146.23KB
下载 相关 举报
上机练习文档格式.docx_第1页
第1页 / 共19页
上机练习文档格式.docx_第2页
第2页 / 共19页
上机练习文档格式.docx_第3页
第3页 / 共19页
上机练习文档格式.docx_第4页
第4页 / 共19页
上机练习文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

上机练习文档格式.docx

《上机练习文档格式.docx》由会员分享,可在线阅读,更多相关《上机练习文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

上机练习文档格式.docx

selects.sno,sname,cno,gradefromstudentsleftjoinscons.sno=sc.sno16.查询哪些课程没有人选,要求列出课程号和课程名。

selecto,cnamefromcoursecleftjoinscono=owhereoisnull17查询计算机系没有选课的学生,列出学生姓名。

selectsnamefromstudentsleftjoinscons.sno=sc.snoWheresdept=计算机系andsc.snoisnull18.列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。

selecttop3s.sno,sname,sdept,gradefromStudentsjoinSCons.Sno=SC.SnojoinCourseconc.Cno=SC.Cnowherecname=数据库基础orderbygradedesc19查询VB考试成绩最低的学生的姓名、所在系和VB成绩。

selecttop1withtiessname,sdept,gradefromstudentsjoinscons.sno=sc.snojoincoursecono=owherecname=VBorderbygradeasc20.查询有考试成绩的所有学生的姓名、修课名称及考试成绩,要求将查询结果放在一张新的永久表中,假设新表名为new_sc。

selectsname,cname,gradeintonew_scfromstudentsjoinscons.sno=sc.snojoincoursecono=owheregradeisnotnull21.分别查询信息管理系和计算机系的学生的姓名、性别、修课名称、修课成绩,并要求将这两个查询结果合并成一个结果集,并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。

selectsdept系名,sname姓名,ssex性别,cname修课名称,grade修课成绩fromstudentsjoinscons.sno=sc.snojoincoursecono=owheresdept=信息管理系UNIONselectsdept,sname,ssex,cname,gradefromstudentsjoinscons.sno=sc.snojoincoursecono=owheresdept=计算机系22查询选了VB的学生学号、姓名、所在系和成绩,并对所在系进行如下处理:

当所在系为“计算机系”时,显示“CS”;

当所在系为“信息管理系”时,显示“IS”;

当所在系为“通信工程系”时,显示“CO”;

对其他系,均显示“OTHER”。

selects.sno学号,sname姓名,casesdeptwhen计算机系thenCSwhen信息系thenISwhen数学系thenCOelseOTHERendas所在系,grade成绩fromstudentsjoinscons.sno=sc.snojoincoursecono=owherecname=vb23.用子查询实现如下查询:

(1)查询选了“C001”课程的学生姓名和所在系。

selectsname,sdeptfromstudentwheresnoin(selectsnofromscwherecno=C001)

(2)查询通信工程系成绩80分以上的学生学号和姓名。

selectsno,snamefromstudentwheresnoin(selectsnofromscwheregrade80)andsdept=通信工程系(3)查询计算机系考试成绩最高的学生姓名。

selectsnamefromstudentsjoinscons.sno=sc.snowheresdept=计算机系andgrade=(selectmax(grade)fromscjoinstudentsons.sno=sc.snowheresdept=计算机系)(4)查询年龄最大的男生的姓名和年龄。

selectsname,sagefromstudentWheresage=(selectmax(sage)fromstudentandssex=男)andssex=男(5)查询“C001”课程的考试成绩高于“C001”课程的平均成绩的学生的学号和“C001”课程成绩。

selectsno,gradefromscwherecno=C001Andgrade(selectavg(grade)fromscwherecno=C001)24.创建一个新表,表名为test_t,其结构为:

(COL1,COL2,COL3),其中:

COL1:

整型,允许空值。

COL2:

字符型,长度为10,不允许空值。

COL3:

字符型,长度为10,允许空值。

试写出按行插入如下数据的语句(空白处表示空值)。

COL1COL2COL3B11B2C22B3答:

createtabletest_t(COL1int,COL2char(10)notnull,COL3char(10)insertintotest_tvalues(NULL,B1,NULL)insertintotest_tvalues(1,B2,C2)insertintotest_t(COL1,COL2)values(2,B3)25.将“C001”课程的考试成绩加10分。

updatescsetgrade=grade+10wherecno=C00126.将计算机系所有选修了“计算机文化学”课程的学生成绩加10分,分别用子查询和多表连接形式实现。

(1)子查询updatescsetgrade=grade+10wheresnoin(selectsnofromstudentwheresdept=计算机系)andcnoin(selectcnofromcoursewherecname=计算机文化学)

(2)多表连接updatescsetgrade=grade+10fromscjoinstudentsonsc.sno=s.snojoincoursecono=owheresdept=计算机系andcanem=计算机文化学27.删除修课成绩小于50分的学生的选课记录。

deletefromscwheregrade5028.删除信息管理系考试成绩小于50分的学生的该门课程的修课纪录,分别用子查询和多表连接形式实现。

(1)用连接查询实现deletefromscfromscjoinstudentsons.sno=sc.snowheresdept=信息管理系andgrade50

(2)用子查询实现deletefromscwheresnoin(selectsnofromstudentwheresdept=信息管理系)andgrade=60Groupbysno2利用第1题建立的视图,写出完成如下查询的SQL语句,并执行这些语句,查看执行结果。

将查询语句和执行结果保存到一个文件中。

(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。

Selectsname,cname,gradeFromv2wheregrade=90

(2)查询选课门数超过3门的学生的学号和选课门数。

Select*fromv3wheretotal=3(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。

Selectsname,totalfromv3joinstudentsons.sno=v3.snoWheresdept=计算机系andtotal=3(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。

Selectv4.sno,sname,sdept,total_creditFromv4joinstudentsons.sno=v4.snoWheretotal_credit=10(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。

Selectsname,sage,sdept,total_creditFromv4joinstudentsons.sno=v4.snoWheresage=20andtotal_credit=103修改第1题(4)定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。

Alterviewv4AsSelectsno,sum(credit)astotal_credit,count(*)astotal_cnoFromscjoincoursecono=oGroupbysno4写出实现下列操作的SQL语句,执行这些语句,并在SSMS工具中观察语句执行结果。

(1)在Student表的Sdept列上建立一个按降序排序的非聚集索引,索引名为:

Idx_Sdept。

CreateindexIdx_Sdeptonstudent(SdeptDESC)

(2)在Student表的Sname列上建立一个唯一的非聚集索引,索引名为:

Idx_Sname。

CreateuniqueindexIdx_Snameonstudent(Sname)(3)在Course表上为Cname列建立一个非聚集索引,索引名为:

Idx_Cname答:

CreateindexIdx_CnameonCourse(Cname)(4)在SC表上为Sno和Cno建立一个组合的非聚集索引,索引名为:

Idx_SnoCno。

CreateindexIdx_SnoCnoonSC(Sno,Cno)(5)删除在Sname列上建立的Idx_Sname索引。

dropindexIdx_SnameonStudent一设计题1设有关系模式:

学生修课(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。

设一个学生可以选多门课程,一门课程可以被多名学生选。

一个学生有唯一的所在系,每门课程有唯一的课程名和学分。

每个学生对每门课程有唯一的成绩。

(1)请指出此关系模式的候选码。

(2)写出该关系模式的极小函数依赖集。

(3)该关系模式属于第几范式?

并简单说明理由。

(4)若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。

(1)候选码:

(学号,课程号)

(2)学号姓名,学号所在系,学号性别,课程号课程名,课程号学分,(学号,课程号)成绩(3)属于第二范式,因为存在部分函数依赖:

学号姓名。

(4)第三范式关系模式:

学生(学号,姓名,所在系,性别)课程(课程号,课程名,学分)考试(学号,课程号,成绩),学号为引用学生的外码,课程号为引用课程的外码。

2设有关系模式:

学生(学号,姓名,所在系,班号,班主任,系主任),其语义为:

一个学生只在一个系的一个班学习,一个系只有一个系主任,一个班只有一名班主任,一个系可以有多个班。

解:

学号

(2)学号姓名,学号所在系,学号班号,班号班主任,所在系系主任(3)第二范式,因为有:

学号班号,班号班主任,因此存在传递函数依赖:

学号班主任(4)第三范式关系模式:

学生(学号,姓名,所在系,班号),班号为引用班的外码,所在系为引用系的外码。

班(班号,班主任)系(系名,系主任)3设有关系模式:

教师授课(课程号,课程名,学分,授课教师号,教师名,授课时数),其语义为:

一门课程(由课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名,每门课程可以由多名教师讲授,每名教师也可以讲授多门课程,每名教师对每门课程有确定的授课时数。

(1)指出此关系模式的候选码。

并简单说明理由(4)若不属于第三范式,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。

(课程号,授课教师号)

(2)课程号课程名,课程号学分,授课教师号教师名,(课程号,授课教师号)授课时数(3)属于第一范式。

因为有:

课程号课程名,因此存在部分函数依赖关系:

(课程号,授课教师号)课程名(4)第三范式关系模式:

课程(课程号,课程名,学分)教师(教师号,教师名)授课(课程号,教师号,授课时数),课程号为引用课程的外码,教师号为引用教师的外码。

一设计题1将给定的E-R图转换为符合3NF的关系模式,并指出每个关系模式的主码和外码。

(1)图7-25所示为描述图书、读者以及读者借阅图书的E-R图。

图7-25图书借阅E-R图答:

下列各关系模式中用下划线标识主码。

图书(书号,书名,出版日期,作者名)读者(读者号,读者名,联系电话,所在单位)借阅(书号,读者号,借书日期,还书日期),书号为引用图书关系模式的外码,读者号为引用读者关系模式的外码。

(2)图7-26所示为描述商店从生产厂家订购商品的E-R图。

商店(商店编号,商店名,联系电话)3NF商品(商品编号,商品名称,库存量,商品分类)3NF厂家(厂家编号,联系地址,联系电话)3NF订购(商店编号,厂家编号,商品编号,订购日期,订购数量),商店编号为引用商店关系模式的外码,厂家编号为引用厂家关系模式的外码,商品编号为引用商品关系模式的外码。

3NF图7-26商品订购E-R图(3)图7-27为描述学生参加学校社团的E-R图。

图7-27学生参加社团E-R图答:

社团(社团号,社团名,电话,性质)3NF学生(学号,姓名,性别,专业,社团号,参加日期),社团号为引用社团的外码。

3NF2设某工厂生产若干产品,每种产品由若干零件组成,同一种零件可用在不同的产品上。

零件由不同的原材料制成,不同的零件所用的原材料可以相同。

零件按所属产品的不同被分别存放在不同的仓库中,一个仓库可以存放多种不同的零件。

原材料按类别存放在若干仓库中,一个仓库也可以存放不同类别的材料。

画出该工厂的E-R图(注:

只画出实体和联系即可,不用标识属性)。

确定实体。

本系统共有四个实体:

产品、零件、材料、仓库。

因为只描述的是一个工厂的情况,因此不需要将工厂设为实体。

确定实体间的联系。

产品与零件:

多对多联系,可将联系命名为“组成”。

零件与材料:

多对多联系,可将联系命名为“制成”。

零件与仓库:

多对多联系,可将联系命名为“存放”。

材料与仓库:

绘制E-R图3设要建立描述顾客在商店的购物情况的数据库应用系统,该系统有如下要求:

一个商店可有多名顾客购物,一个顾客可到多个商店购物,顾客每次购物有一个购物金额和购物日期。

规定每个顾客每天在每个商店最多有一次购物,每次购物可购买多种商品。

需要描述的“商店”信息包括:

商店编号、商店名、地址、联系电话;

需要描述的顾客信息包括:

顾客号、姓名、住址、身份证号、性别。

请画出描述该应用系统的E-R图,并注明各实体的属性、标识属性以及联系的种类。

4图7-28(a)(d)所示为某企业信息管理系统中的局部E-R图,请将这些局部E-R图合并为一个全局E-R图,并指明各实体以及联系的属性,标明联系的种类(注:

为使图形简洁明了,在全局E-R图中可只画出实体和联系,属性单独用文字描述)。

将合并后的E-R图转换为符合3NF要求的关系模式,并说明主码和外码。

(c)(d)图7-28各局部E-R图答:

分析:

1工人实体可以与职工实体合并,将工人的属性合并到职工实体中,并在职工实体中增加“身份”属性,来标识是工人还是其他职工。

2设备处可合并到部门实体中,因设备处也是一个部门。

可在实现时增加约束:

只有设备处才能管理设备。

3合并后的设备实体属性是图(c)和(d)中设备属性的并集。

合并后的结果:

关系模式(主码用下划线标识)部门(部门号,部门名,联系电话,办公地点)职工(职工编号,姓名,身份,职务,性别,年龄,所属部门号),所属部门号为引用部门的外码设备(设备号,设备名,规格,价格,被管部门号),被管部门号为引用部门的外码零件(零件号,零件名,规格,价格)厂商(厂商号,厂商名,地址,电话)装配(设备号,零件号,零件数量),设备号为引用设备的外码,零件号为引用零件的外码生产(厂商号,零件号,生产日期)或生产(厂商号,零件号,生产日期)四上机练习以下各题均利用第3、4章建立的Students数据库以及Student、Course和SC表实现。

1创建满足下述要求的存储过程,并查看存储过程的执行结果。

(1)查询每个学生的修课总学分,要求列出学生学号及总学分。

createprocp1asselectsno,SUM(credit)as总学分fromSCjoinCourseconc.Cno=SC.Cnogroupbysno

(2)查询学生的学号、姓名、修的课程号、课程名、课程学分,将学生所在系作为输入参数,默认值为“计算机系”。

执行此存储过程,并分别指定一些不同的输入参数值,查看执行结果。

createprocp2deptvarchar(20)=计算机系asselects.sno,sname,o,cname,creditfromStudentsjoinSCons.Sno=SC.SnojoinCourseconc.Cno=SC.CnowhereSdept=dept执行示例1:

EXECP2执行示例2:

EXECP2通信工程系(3)查询指定系的男生人数,其中系为输入参数,人数为输出参数。

createprocp3deptvarchar(20),rsintoutputasselectrs=COUNT(*)fromStudentwhereSdept=deptandSsex=男(4)删除指定学生的修课记录,其中学号为输入参数。

createprocp4snochar(7)asdeletefromSCwhereSno=sno(5)修改指定课程的开课学期。

输入参数为:

课程号和修改后的开课学期。

createprocp5cnochar(6),xtinyintasupdateCoursesetSemester=xwhereCno=cno2创建满足下述要求的触发器(前触发器、后触发器均可),并验证触发器执行情况。

(1)限制学生的年龄在1545之间。

createtriggertri1onstudentafterinsert,updateasifexists(select*frominsertedwheresagenotbetween15and45)rollback

(2)限制学生所在系的取值范围为计算机系,信息管理系,数学系,通信工程系createtriggertri2onstudentafterinsert,updateasifexists(select*fromstudentwheresdeptnotin(计算机系,信息管理系,数学系,通信工程系)Rollback(3)限制每个学期开设的课程总学分在2030范围内。

createtriggertri3oncourseafterinsert,updateasifexists(selectsum(credit)fromcoursewheresemesterin(selec

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1