武汉轻工大学大数据库1508090003实验2报告材料.docx
- 文档编号:1908808
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:11
- 大小:222.94KB
武汉轻工大学大数据库1508090003实验2报告材料.docx
《武汉轻工大学大数据库1508090003实验2报告材料.docx》由会员分享,可在线阅读,更多相关《武汉轻工大学大数据库1508090003实验2报告材料.docx(11页珍藏版)》请在冰豆网上搜索。
武汉轻工大学大数据库1508090003实验2报告材料
轻工大学
经济与管理学院实验报告
实验课程名称
大型数据库管理
实验起止日期
2017.11.15至2017.11.29
实验指导教师
程红莉
实验学生
万芳
学生班级学号
物流1501班
1508090003
实
验
评
语
实验
评分
教师
签名
年月日
实验项目名称
交互式SQL
实验日期
2017.11.21
学生
万芳
班级学号
1508090003
1、预习报告(请阐述本次实验的目的及意义)
(1)熟悉数据库的交互式SQL工具。
(2)熟悉通过SQL对数据库进行操作。
(3)完成基本数据表、视图和索引的创建、修改与删除,并完成作业的上机练习,包括数据的查询、修改、插入、更新等操作。
(4)完成SQL上机练习
2、实验方案(请说明本次实验的步骤和进程)
一、数据定义
即在实验一基础上,继续完成数据库下三表的建立和数据输入。
学生表(s)
sno
sname
age
sex
98601
强
20
男
98602
丽
21
女
98603
兵
20
男
98604
志坚
22
男
98605
兵
21
女
课程表(C)
cno
cname
teacher
office
C601
高等数学
周振兴
416
C602
数据结构
建平
415
C603
操作系统
建平
415
C604
编译原理
王志伟
415
选课表(SC)
sno
cno
score
98601
C601
90
98601
C602
90
98601
C603
85
98601
C604
87
98602
C601
90
98603
C601
75
98603
C602
70
98603
C604
56
98604
C601
90
98604
C604
85
98605
C601
95
98605
C603
80
二、数据操作
1.完成各类查询操作(单表查询、连接查询、嵌套查询、集合查询)。
2.完成各类更新操作(插入数据、修改数据、删除数据)。
三、视图的操作
视图的定义(创建和删除)、查询、更新(注意更新的条件)。
四、用SQL完成下列查询
(1)给学生表增加一列,属性名为class(班级),然后将已有数据的班级全部设置为class=“9601”
Altertablesaddclasschar(4)
(2)检索年龄大于21的男学生学号SNO和SNAME。
(用and和intersect两种)
selectsno,sname
fromstudent
wheresage>21andsex='男'
(3)检索选修课程名为“操作系统”的学生学号和。
Selects.sno,snamefroms,c,scwhereame=’操作系统’
ando=oands.sno=sc.sno
(4)检索“丽”同学没有选修的课程号。
Selectofromcwhereonotin
(selectofromsc,studentwheresname=’丽’andsc.sno=student.sno)
(5)检索至少选修两门课程的学生学号。
Selectsnofromsc
groupbysnohaving
count(*)>=2
(6)检索全部学生都选修的课程号和课程名。
查找某个课程,这个课程不存在S中某个学生没有选
Select cno, cname
from course
where not exists
(select *
from student
where not exists
(select *
from sc
where o=o
and sc.sno=student.sno));
(7)检索选修课程号为C601和C603的学生学号。
(即既选修了C601又选修了C603)
selectsno
fromsc
whereo='c601'and
snoin(selectsno
fromsc
whereo='c603');
(8)检索选修全部课程的学生
Selectsnamefromstudent
wherenotexists
(select*fromcourse
wherenotexists
(select*fromsc
wheresc.sno=student.snoand
o=o))
(9)将每门课的平均成绩建立成一个视图sc_avg
Createviewsc_avg(score)
as
selectavg(score)
fromsc
groupbyo
(10)检索每门课没达到平均成绩的学生学号、课程号
Selectsno,cno
fromsc
wherescore<(selectavg(score)fromsc)
三、实验结果分析、改进建议
出现的问题及解决方案:
1.问题:
在写第6个查询功能的时候用
Selecto,cname
Fromcourse
GroupbyCourse.Cno,SC.Cno,Cname
Havingcount(SC.Sno)=0 AndSC.Cno=Course.Cno;
这句SQL语句输出的是空的。
解决方案:
在表SC中没有人选的课程在表中课程号不会出现,所以count(count(SC.Sno))求得的那些课程所选人数中不会有没有人选的课程人数等于0的出现,所以满足Havingcount(SC.Sno)=0的课程根本不存在所以输出是空的。
后来换了用not exists来写这个查询语句,就是输出表Course在表SC中中不想存在的课程号和课程名字。
Select cno, cname
from course
where not exists
(select *
from student
where not exists
(select *
from sc
where o=o
and sc.sno=student.sno));
2.问题
解决方案:
语法错误中有粗心打错关键词,没有在英文输入法的情况下输入“,”,导致语法错误,命令不成功
3.问题,出现‘course’无效
解决方案:
粗心导致表名称打错,实验中一定要仔细认真检查拼写,避免拼写错误
4.问题:
在创建表的时候总是出现错误
解决方案:
对于创建表的时候出现的问题我上网查资料说分清主码与外码的关系
5.问题:
在所有操作结束后删除STUDENT表失败
解决方案:
删除STUDENT表弄清主表与从表之间的关系
6.问题:
对于嵌套查询不熟悉
解决方案:
嵌套查询虽然XX上有但我还没真正弄懂
7.问题:
对于删除索引不是那么清楚。
解决方案:
删除索引的时候要带上表名
8.问题:
对视图的一系列操作不熟悉
解决方案:
对视图的一系列操作我看了老师给我们的文件
实验总结:
从这次实验中,我认识了什么是交互式SQL,对数据库的书写规有了更深刻的印象。
通过对数据库进行创建,用SQL语句对数据进行更新相关操作,了解到SQL语句功能的强大之处,简单的一句sql语句就能对数据进行定义、查询、操纵和控制。
通过此次实验,我还简单掌握了groupby子句、having子句、orderby子句及sum、avg、count、max、min等集合函数的用法;也对视图的创建、查询、更新有了进一步的了解。
但是,此次实验课上的练习是远远不足以保证能完全掌握对数据库的使用,若想完全熟悉用SQL对基本表和视图进行操纵,接下来必须加强练习。
这次的的项目较多,花费了很长时间才全部完成。
其中涉及到的有数据库语句操作,如表的创建、修改、删除,以及数据的插入、修改、删除和查询。
实验课期间没有完成,之后又尝试编写出错和不会等问题。
查询资料、请教同学之后顺利完成。
实验虽多,却也是课本最基本知识的练习,不足为虑。
实验中的多数问题是编写语言时候不细心所致,比如大小写转换,中英文标点的使用等。
本次试验最大的收获就是,耐心和细心的锻炼。
试验项目很多,必须专心致志和良好耐心之下,坚持完成。
很高兴做到了这点,磨练了以后对待工作的态度和初步的数据库管理能力。
在实验的基础之上,课本中的知识点也得到了很好的练习和巩固。
学生签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉 轻工 大学 数据库 1508090003 实验 报告 材料
![提示](https://static.bdocx.com/images/bang_tan.gif)