数据库系统实验课实验报告.docx
《数据库系统实验课实验报告.docx》由会员分享,可在线阅读,更多相关《数据库系统实验课实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
数据库系统实验课实验报告
《数据库系统》实验报告一
学号
姓名
实验时间
实验名称
Oracle环境及数据库创建
实验学时
2
准备材料
1.Oracle10G介绍资料
2.SQLPlus命令手册
3.Oracle数据字典
扩展实验
1.使用企业管理器登录Oracle服务器,观察系统架构及数据库
2.使用OEM创建、删除数据库
此部分内容不要求在实验室完成,不用写入实验报告。
实验环境
Oracle9i(及以上版本)服务器
SQLPlus/SQLPlusworksheet客户端
实验目的
1.了解oracle系统架构
2.熟悉SQLPlus环境
实验内容及步骤
1.使用SQLPlusWorksheet登录数据库系统(用户名密码由教师指定)
2.浏览SQLPlus环境设置命令,并完成下列操作:
(1)察看SQLPlus环境参数
(2)设置输出页面的大小,每列字符数120,每页行数100,观察设置结构
(3)设置显示每个sql语句花费的执行时间,并观察实验结果
(4)在SQLPlus中执行操作系统命令,例如copy文件、显示目录等,观察结果。
(5)设置将系统输出数据写入文件c:
\textoutput.txt,执行多个命令后观察文件内容。
3.显示系统信息
(1)显示用户信息
(2)显示数据库版本信息
(3)显示数据库中所有表的名称
显示系统中某张表的结构信息(如EMP表)
(4)显示数据库中某张表的数据,如EMP表
4.建立磁盘文本文件testcommand.sql,文件内写入几条SQL命令,执行此文件,并观察执行结果。
出现问题
解决方案
(列出遇到的问题及其解决方法)
《数据库系统》实验报告二
学号
姓名
实验时间
实验名称
数据库模式管理
实验学时
4
准备材料
1.SQLPlus命令手册
2.Oracle数据字典
3.Oracle中的数据类型
扩展实验
1.掌握在企业管理器(或其它图形界面的数据库操作工具)中进行表、索引的创建和管理的方法。
2.利用企业管理器(或其它图形界面的数据库操作工具)观察数据库的物理模式。
(此部分内容不要求在实验室完成,不用写入实验报告。
)
实验环境
Oracle9i(及以上版本)服务器
SQLPlus/SQLPlusworksheet客户端
实验目的
1.掌握使用SQL语句进行表的创建和管理的方法
2.加深对关系数据库结构和数据完整性等概念的理解
实验内容及步骤
1.创建书上university数据库中所有的表(student,course,department,takes,instructor,advisor,prereq,teaches,classroom,section,timeslot),按书上要求设置每张表的主键、外键,表中每个字段的类型、长度由学生自己确定。
2.使用命令完成下列扣作
(1)查找用户所有表的表名
(2)查看每张表的结构(要求把每张表的结构截图放到实验报告中)(3)查看表takes的约束信息
3.修改表结构
(1)在instructor表中增加列存储教师家庭地址,其地址包括省、市、区、街道、门牌号等列,列的数据类型自己给出,列允许为空。
(2)对student表中的姓名字段长度都改为10,设置是否成功?
原因是什么?
将该字段长度改为50,能否成功?
说明原因。
(3)为student表中tot_cred列设置默认值0,插入一个Comp.Sci.系的新学生,且不给其tot_cred列赋值,观察结果。
(4)student表中tot_cred列是对总学分的统计,现在数据库中没有记录哪些学生已选修课程学分已累加,哪些课程的学分还没有累加。
设计一种方案记录已累加课程,防止出现重复累加的情况。
或者设计一种方案简化总学分的计算过程。
(5)删除takes表上对student表ID的外键约束,查看此约束已删除。
添加一个不存在的学生(id=’201400320101’)选修course_id为’CS001’的课程,并给他一个成绩(成绩值为:
A,B,C,D,E或F)。
再添加takes表是对student表ID的外键约束,观察并解释实验结果。
(6)设置takes表ID,course_id,sec_id三个字段非空,是否能设置成功,对插入数据有没有影响?
删除takes表主键约束,增加某同学选同一门课程(id,couese_id,sec_id,semester,year,grade都相同)的信息,能否插入成功?
解释原因。
4.参照表student建立一张空表student1。
要求用两种方法实现(createtable;createtableas…)。
5.增加section表上的约束条件,要求所输入section的年号不大于当前年号+1,且不小于当前年号-2。
插入一条2009年秋CS-101开设课的信息,观察并解释实验结果。
6.选择某个约束,分别设置其有效、失效,观察区别。
出现问题
没有问题
解决方案
(列出遇到的问题及其解决方法)
《数据库系统》实验报告三
学号
姓名
实验时间
实验名称
数据查询
实验学时
4
准备材料
1.SQLPlus命令手册
2.Oracle数据字典
扩展实验
1.利用企业管理器的图形界面构造查询语句,并察看查询结果
2.利用企业管理器完成视图、索引的创建与使用。
3.利用DBMS进行对第三章习题所设计SQL语句的检查
(此部分内容不要求在实验室完成,不用写入实验报告。
)
实验环境
Oracle9i(及以上版本)服务器
SQLPlus/SQLPlusworksheet客户端
实验目的
1.掌握使用SQL语句进行数据查询的方法
2.掌握视图的创建与使用方法
3.观察索引的使用效果
实验内容及步骤
1.执行文件ddl+drop.sql,创建数据库University中所有表。
执行文件smallRelationsInsertFile.sql,插入实验数据。
2.使用University数据库的数据库结构和数据(smallRelations即可),完成下列查询:
(1)FindthenamesofcoursesinComputersciencedepartmentwhichhave3credits
(2)ForthestudentwithID12345(oranyothervalue),showallcourse_idandtitleofallcoursesregisteredforbythestudent.
(3)Asabove,butshowthetotalnumberofcreditsforsuchcourses(takenbythatstudent).Don'tdisplaythetot_credsvaluefromthestudenttable,youshoulduseSQLaggregationoncoursestakenbythestudent.
(4)Asabove,butdisplaythetotalcreditsforeachofthestudents,alongwiththeIDofthestudent;don'tbotheraboutthenameofthestudent.(Don'tbotheraboutstudentswhohavenotregisteredforanycourse,theycanbeomitted)
(5)FindthenamesofallstudentswhohavetakenanyComp.Sci.courseever(thereshouldbenoduplicatenames)
(6)DisplaytheIDsofallinstructorswhohavenevertaughtacouse(Notes1)Oracleusesthekeywordminusinplaceofexcept;2)interpret"taught"as"taughtorisscheduledtoteach")
(7)Asabove,butdisplaythenamesoftheinstructorsalso,notjusttheIDs.
(8)Findthemaximumandminimumenrollmentacrossallsections,consideringonlysectionsthathadsomeenrollment,don'tworryaboutthosethathadnostudentstakingthatsection
(9)AsinQuestion(8),butnowalsoincludesectionswithnostudentstakingthem;theenrollmentforsuchsectionsshouldbetreatedas0.Dothisintwodifferentways(andcreaterequiredatafortesting)1).Usingascalarsubquery2).Usingaggregationonaleftouterjoin(usetheSQLnaturalleftouterjoinsyntax)
(10)Findallcourseswhoseidentifierstartswiththestring"CS-101"
(11)Findinstructorswhohavetaughtalltheabovecourses1).Usingthe"notexists...except..."structure2).Usingmatchingofcountswhichwecoveredinclass(don'tforgetthedistinctclause!
)
3.TheuniversityrulesallowanFgradetobeoverriddenbyanypassgrade(A,B,C,D).Now,createaviewthatlistsinformationaboutallfailgradesthathavenotbeenoverridden(theviewshouldcontainallattributesfromthetakesrelation).
4.Findallstudentswhohave2ormorenon-overriddenFgradesasperthetakesrelation,andlistthemalongwiththeF
出现问题
解决方案
(列出遇到的问题及其解决方法)
《数据库系统》实验报告四
学号
姓名
实验时间
实验名称
表数据管理
实验学时
2
准备材料
1.SQLPlus命令手册
2.Oracle数据字典
扩展实验
1.利用企业管理器的图形界面输入数据
2.利用企业管理器或PLSQLDeveloper导入、导出TXT文档、Excel表格中的数据。
(此部分内容不要求在实验室完成,不用写入实验报告。
)
实验环境
Oracle9i(及以上版本)服务器
SQLPlus/SQLPlusworksheet客户端
实验目的
1.掌握使用SQL语句对表进行插入、修改和删除数据的操作。
2.掌握索引创建与使用方法
实验内容及步骤
1.执行文件ddl+drop.sql,创建数据库University中所有表。
执行文件smallRelationsInsertFile.sql,插入实验数据。
2.删除department表中'Physics'记录,观察能否成功删除。
若不能删除,说明原因。
若能删除,观察有外关联的表中数据的变化。
3.插入一门新课,课程名“Weeklyseminar”,课号CS-001,由Engineeringdepartment开出,学分1,观察实验结果,说明原因。
4.调整各系员工工资,原工资>50000的增加10%,否则增加6%,观察结果.
5.第3小题新插入的课程,课程名“Weeklyseminar”,课号CS-001,改为由'Comp.Sci.'开出,重新插入到course表中。
观察实验结果,说明原因。
6.假设全体Comp.Sci.学生都要选课“Weeklyseminar”,且课程要2013年秋季学期开出,增加课程开出信息、选课信息。
7.删除学生'Brown'的“Weeklyseminar”课程的选课记录。
8.假设学期末,教师给出课程“Weeklyseminar”的选课学生成绩单,请依据选课成绩给出每个学生学分。
9.将学生表中学分tot_cred>100的学生选出来放进对应系的instructor表中,工资设置为10000.
10.找出并删除所有未被开出过的课程。
11.在表takes上course_id字段创建索引,观察查询速度变化。
12.在takes表course_id字段上创建索引,试一试能否创建唯一性索引?
出现问题
解决方案
(列出遇到的问题及其解决方法)
《数据库系统》实验报告五
学号
姓名
实验时间
实验名称
权限与事务管理
实验学时
2
准备材料
1.SQLPlus命令手册
2.Oracle数据字典
扩展实验
1.利用企业管理器的图形界面进行创建用户、角色并进行管理
2.利用企业管理器的图形界面完成对数据操纵权限的授权与回收工作
(此部分内容不要求在实验室完成,不用写入实验报告。
)
实验环境
Oracle9i(及以上版本)服务器
SQLPlus/SQLPlusworksheet客户端
实验目的
1.掌握权限管理语句与视图进行安全性控制的方法
实验内容及步骤
每两个同学一组,自由组合完成下列操作要求(使用grant,revoke语句和视图):
1.执行教师提供的命令文件,建立university数据库,并输入数据。
2.同学A设置同学B对A.course表具有查询权限,对A.instructor表中salary字段具有更新权限;同学B查看元数据表,查找自己被子授权使用的数据。
3.同学B授权同学A对B.instructor表具有插入数据、删除数据的权限,同学A用命令试验能否完成相应操作。
4.同学A授权同学B,对A.student表具有修改表结构的权限,同学B得到修改表结构的命令验证授权是否成功。
5.同学B授权同学A对B.student表具有增、删、改、查的权限,并允许他将权限授权给其它同学。
同学A验证授权是否成功,并试验能否将权限授予其它同学(例如同学C)。
6.同学A收回授权同学B的student表上的所有权限,同学B验证是否回收成功。
7.同学A通过视图授权同学B具有察看每个部门职工最高、最低、平均工资的权限,但不允许他察看每个人的工资。
同学B验证授权是否成功。
8.同学A、B撤销所有已授给对方的权限,如果同学C从同学A得到对同学Bstudent表的访问权限,察看其权限是否一并收回。
9.事务查看使用如下命令,查看当前事务、会话情况:
(1)showparameterprocesses;
showparameter session;
(2)
selectname,type,value,display_value,isses_modifiable,issys_modifiable
fromv$parameter
wherename='sessions';
selectname,type,value,display_value,isses_modifiable,issys_modifiable
fromv$parameter
wherename='processes';
SELECT*FROMV$SESSION
WHEREUSERNAME=‘’
ORDER BYLOGON_TIME,SID;
SELECTP.SPID,S.SID,S.SERIAL#
FROMV$PROCESSP
INNER JOINV$SESSIONSONP.ADDR=S.PADDR
WHERES.AUDSID=USERENV('SESSIONID');
注:
此表可能学生没有权限查看,如果有兴趣,在自己电脑上试试。
10.事务提交方式有三种:
显式提交\隐式提交和自动提交。
SQLPLUS中可通过命令可进行提交方式设置,设置不同提交方式。
事务命令有:
BEGINTRANSACTION、COMMIT、ROLLBACK、SAVEPOINT、RELEASESAVEPOINT、SETISOLATIONLEVEL
事务隔离级别:
离层
错读|脏读
非重复读取|不可重复读
假读|幻读
READUNCOMMITTED(非提交读)
是
是
是
READCOMMITTED(提交读)
否
是
是
RepeatableREAD(可重复读)
否
否
是
Serializable(串行读)
否
否
否
Oracle只支持eadcommitted、serializable和RepeatableREAD三种,不支持READUNCOMMITTED。
完成下列和事务相关的操作:
(1)修改事务隔离级别( Settransactionisolationlevelreadcommitted、 Settransactionisolationlevelserializable),A\B两同学一起操作同一张表,A.instructor,B同学修改数据,A同学查询数据,查看在什么情况下可查看到B同学刚刚修改的数据。
(2)设置自动提交,A、B同学同时操作同一张表的数据,察看是否可看到最新修改结果。
(3)B同学设置SAVEPOINT,进行数据操作、rollback到该savepoint,A同学在各个步骤察看数据变化情况。
在不同隔离级别下执行相同操作,察看数据的不同点。
出现问题
解决方案
(列出遇到的问题及其解决方法)
《数据库系统》实验报告六
学号
姓名
实验时间
实验名称
存储过程、函数和事务
实验学时
2
准备材料
1.SQLPlus命令手册
2.PL/SQL用户手册
3.实验教材中实验五、六
扩展实验
1.利用企业管理器完成存储过程和函数的定义、执行与管理操作
(此部分内容不要求在实验室完成,不用写入实验报告。
)
实验环境
Oracle9i(及以上版本)服务器
SQLPlus/SQLPlusworksheet客户端
实验目的
1熟悉PL/SQL语法
2.利用PL/SQL编程访问数据库
实验内容及步骤
1.完成实验指导书实验五所有实验内容,掌握PL/SQL语言中数据类型、变量、输入输出语句、分支、循环语句的基本用法
2.编写存储过程或函数,要求查询instructor和department表,依据系名输出系名称、资产、所包含员工姓名等信息,并输出其所包含员工个数。
执行存储过程(执行时输入部门号参数),察看输出结果是否正确
3.编写函数EmpSalStatics完成instructor工资情况统计,按<=1000,<=2000,<=5000,<=10000,>10000五种情况分别统计职工人数,并输出实验结果
4.与另一同学交换函数EmpSalStatics的执行权限、察看对方的EmpSalStatics函数执行结果,并与自己的函数执行结果比较。
5.使用SQL命令察看存储过程和函数的信息
出现问题
解决方案
(列出遇到的问题及其解决方法)
《数据库系统》实验报告七
学号
姓名
实验时间
实验名称
触发器和事务
实验学时
2
准备材料
1.SQLPlus命令手册
2.PL/SQL用户手册
3.实验教材中实验五、七
扩展实验
1.利用企业管理器的图形界面完成触发器的创建与管理工作
(此部分内容不要求在实验室完成,不用写入实验报告。
)
实验环境
Oracle9i(及以上版本)服务器
SQLPlus/SQLPlusworksheet客户端
实验目的
1.掌握使用SQL语句进行触发器创建与管理操作的方法。
实验内容及步骤
1.完成实验教材实验七的所有内容,实验习题、练习的内容写实验报告。
2.观察数据修改语句失败时系统中数据情况,说明数据一致性如何保持。
出现问题
解决方案
(列出遇到的问题及其解决方法)