收藏 分销(赏)

oracle实验内容.doc

上传人:仙人****88 文档编号:9281887 上传时间:2025-03-19 格式:DOC 页数:10 大小:84.50KB
下载 相关 举报
oracle实验内容.doc_第1页
第1页 / 共10页
oracle实验内容.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述
课程名称:数据库原理实验 要求:每个同学按时并且独立完成实验报告,前几个实验按照实验指导书容易完成,有些实验不需要2个学时完成,所以各位同学完成一个实验以后,立刻做下一个实验。最后一个实验涉及到数据库应用程序开发,4个学时肯定不能完成,所以尽快完成前面的实验,多留些时间做实验八。 编号 实验名称 学时 实验一 Oracle数据库的创建与删除和数据表及对象的创建 2 实验二 SQL数据查询 2 实验三 SQL语言 2 实验四 事务管理(按照实验指导书实验七的内容完成),该实验可以和实验五、实验六一起完成;实验过程中,首先找到D盘的oracle安装程序安装oracle,然后进行实验。 10g三个用户的默认密码 sys:change_on_install system:manager scott:tiger(默认是lock的,需解锁) 2 实验五 用户权限管理(按照实验指导书实验八做) 2 实验六 数据备份与恢复(按照实验指导书实验九做) 2 实验七 Oracle数据库对象(按照实验指导书实验十做) 2 实验八 数据库系统设计综合实验(自选项目及开发语言) 采用C/S或B/S开发模式,开发语言任选,后台数据库可以采用Oracle、Sql server或MySQL。要求能够完成基本的数据查找、插入、删除和修改功能。 4 Oracle连接方法 使用SQL developer方法 1. 从开始菜单进入SQL developer,选择路径D:\Winapps\jdk160\bin\java.exe 2. 新建连接,连接名称自定义,内容任意。 3. 用户名称为:jsj+班级号+二位的顺序号,密码为大写的JSJ+班级号+二位的顺序号。例如084班序号为01的同学,用户名称是jsj08401,口令为JSJ08401 4. 主机名填写IP地址:202.192.35.252,端口号默认为1521,SID:orcl 5. 测试连接成功,选择连接。 6. 输入SQL并运行。 使用SQLPLUS的方法(其中参数是一样的) 从开始菜单中,运行cmd命令提示符,在命令提示符下输入以下信息: Sqlplus 用户名/密码@服务器IP:端口号/数据库名称 例如:Sqlplus jsj08401/JSJ08401@202.192.35.252:1521/orcl 实验(实验二、实验三)前准备 现有一个单位内部的小型图书借阅系统,假设每本图书的数量无限制,并且可以借给任何单位成员,每个单位成员可以借多本书,单位成员与图书的关系是多对多的关系。假设系统中仅有三个关系模式。 1、 拷贝代码运行,建立表格Reader create table Reader ( RNO varchar2(4) primary key, Rname varchar2(10) not null, Rsex varchar2(2), Rage integer, Rboss varchar2(10), Raddress varchar2(30) ) 2、 拷贝代码运行,向Reader表格中插入十条数据 insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R001','张三',20,'男','李四','416'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R002','张三',35,'女',null,'417'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R003','李四',30,'男',null,'416'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R004','王五',20,'男',null,'417'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R005','马六',40,'男',null,'416'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R006','刘三',20,'男',null,'417'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R007','王四',40,'男','李四','416'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R008','李小龙',20,'男','李四','417'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R009','王小倩',40,'男','李四','416'); insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R010','王一小',20,'男','李四','417'); 3、 拷贝代码运行,建立表格Book create table Book ( BNO varchar2(4), Bname varchar2(50) not null, Bauthor varchar2(50), Bpress varchar2(50), Bprice numeric(6,2), primary key(BNO) ) 4、 拷贝代码运行,向Book表格中插入5条数据 insert into book (BNO,Bauthor,Bname, bpress, bprice) values('B001','严蔚敏','数据结构','清华大学出版社',null); insert into book (BNO,Bauthor,Bname, bpress, bprice) values('B002','唐发根','数据结构','北航出版社',24); insert into book (BNO,Bauthor,Bname, bpress, bprice) values('B003','王珊','数据库原理','高等教育出版社',40); insert into book (BNO,Bauthor,Bname, bpress, bprice) values('B004','张飞','数据库原理','清华大学出版社',30); insert into book (BNO,Bauthor,Bname, bpress, bprice) values('B005','王珊','数据库原理','清华大学出版社',null); 5、 拷贝代码运行,建立表格RB create table RB ( RNO varchar2(4), BNO varchar2(4), RBdate date default sysdate, primary key(RNO,BNO), foreign key (RNO) references Reader(RNO), foreign key (BNO) references Book(BNO) ) 6、 拷贝代码运行,向RB表格中插入13条数据 insert into RB (RNO,BNO) values ('R001','B001'); insert into RB (RNO,BNO) values ('R001','B002'); insert into RB (RNO,BNO) values ('R001','B004'); insert into RB (RNO,BNO) values ('R002','B001'); insert into RB (RNO,BNO) values ('R003','B001'); insert into RB (RNO,BNO) values ('R004','B001'); insert into RB (RNO,BNO) values ('R004','B002'); insert into RB (RNO,BNO) values ('R005','B001'); insert into RB (RNO,BNO) values ('R006','B001'); insert into RB (RNO,BNO) values ('R006','B003'); insert into RB (RNO,BNO) values ('R006','B005'); insert into RB (RNO,BNO) values ('R006','B002'); insert into RB (RNO,BNO) values ('R006','B004'); 预备知识 以下为查询READER表中创建的约束类型,其中constraint_type为约束类型,该属性值的取值Type Code如下表所示。 select table_name,constraint_name,constraint_type from user_constraints where table_name =’READER’ Type Code Type Description Acts On Level C Check on a table Column O Read Only on a view Object P Primary Key Object R Referential AKA Foreign Key Column U Unique Key Column V Check Option on a view Object 实验二 SQL数据查询 SQL查询实验(以下查询在Reader、Book、RB表中完成) 实验目的 熟练掌握使用SQL查询语言。完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询)。 实验内容 单表查询 1、 查询全体员工的姓名和出生年份; 2、 查询工作在416房间的员工的所有信息; 3、 查询年龄在30到50岁之间的员工姓名、年龄; 4、 查询借了书的员工的编号,排除相同的元素; 5、 查询名字中包含字“小”的员工姓名、办公地点; 6、 查询名字中第二个字为“小”的员工姓名、办公地点; 7、 查询所有不姓“李”的员工姓名、性别; 8、 查询Book表中价格不为空值的书名、出版社; 9、 查询清华大学出版社和高等教育出版社出版的所有书籍,按照出版社降序、书名升序排列; 10、 查询员工的总人数 11、 查询借了书的员工的人数; 12、 查询“张三”所借图书的数量; 13、 查询最贵的书籍的作者姓名; 14、 查询Book表中书籍的平均价格,查询结果说明了什么; 15、 查询book中包含的各个出版社及其出版书籍的数量; 复合查询 1、 查询每个员工及其借书情况,列出员工编号、姓名和借书日期 2、 查询每个员工及其借书所有字段(没有借书的员工也列出来);(用左外连接) 3、 查询与“李小龙”工作在同一个办公室的员工信息(用两种方法:自身连接、子查询); 4、 查询借阅了“数据库原理”并且年龄在30岁以上的员工所有信息(两种方法:连接查询、子查询) 5、 查询小于或等于同一办公室中成员的平均年龄的员工编号、姓名、年龄。 6、 查询比所有数据库原理价格都高、并且不是清华大学出版社出版的书籍的信息; 7、 查询借阅了B001的员工的编号、姓名、办公室; 8、 查询没有借阅B001的员工的编号、姓名、办公室; 9、 查询借阅了所有书籍的员工的姓名; 10、 查询至少借阅了编号为R004的员工借阅的全部书籍的员工姓名、性别、办公室 11、 查询年龄大于30岁或者工作在416的员工信息(用集合查询完成) 12、 查询年龄大于30岁并且工作不在416的员工信息(用集合查询完成) 实验报告要求 写出实验步骤及相关的SQL语句即可。 实验三 SQL语言 实验目的 熟悉基本表的修改及删除、熟悉索引的创建和删除、熟悉视图的创建、更新和删除。熟悉各类更新操作(插入数据,修改数据,删除数据)。 实验内容: 表结构修改、数据插入和删除 1、 创建表格Reader2,比较Reader2和Reader中的记录和结构是否相同 create table reader2 as select * from reader; --创建表格reader2 desc reader; desc reader2;--查看两个表格的结构是否相同 2、 分别执行下面的每行语句,查看语句是否执行成功,分析为什么? update reader set RNO='R001' where Rname='张三'; update reader2 set RNO='R001' where Rname='张三'; insert into reader2(RNO,Rname,Rsex,Rage,Rboss, Raddress) values(null,'lisi',null,null,null,null); 3、 用以下语句查看Reader、Reader2中的约束是否相同 select table_name,constraint_name,constraint_type from user_constraints where table_name like 'REA%';--注意REA必须为大写 4、 删除Reader2表格; 5、 用语句在Reader中测试是否可以把Rboss建立成外码,引用Reader中的Rname属性; 6、 修改Reader表结构,把Rboss建立成外码,引用Reader中的RNO属性;(首先用update语句设置Reader的Rboss属性为空值,然后修改Rboss属性,使其与RNO具有相同的数据类型和长度); 7、 更新Reader表中的Rboss属性。记录R001的Rboss保持为空,R002、R003的Rboss设置为R001,R004、R005的Rboss属性设置为R002,依此类推,形成类似完全二叉树结构; 8、 为表Reader添加check约束,使性别的取值只能为“男”或者“女”; 9、 执行以下语句,创建表格reader2; create table reader2 as select * from reader; --创建表格reader2 10、 用以下语句查看Reader、Reader2中的约束是否相同,如有不同,把Reader2修改成与Reader具有相同约束的结构; select table_name,constraint_name,constraint_type from user_constraints where table_name like 'REA%';--注意REA必须为大写 11、 直接Copy前面Book和RB的定义,建立Book2和RB2表(注意RB2的外码引用的表格为Book2和Reader2)。把Book和RB中的数据分别插入Book2和RB2表,至此,实验中有两份同样的数据。 12、 执行insert into RB2(RNO,BNO) values(‘R010’,’B005’); 13、 写出删除Reader2表格中编号为R010的员工,如果执行错误,分析错误原因 14、 想办法删除Reader2中的R010员工; 15、 为Reader2表添加一个属性列“出生年份”,名为Rbirthday,整数; 16、 对于Reader2表格,员工编号可以确定年龄,年龄又可以确定出生年份,因此存在传递函数依赖关系,删除Rbirthday,使关系模式符合第三范式要求; 17、 修改Reader2表格的Raddress属性,使其长度为50,数据类型不变; 18、 修改book表的Bprice属性,使其值得范围在10到100之间; 19、 修改Reader表的Rage属性,使其值得范围为16到60之间。 20、 试试是否可以删除Reader2表,使用CASCADE是否可以删除? 21、 删除Reader2、Book2和RB2表。 索引的建立与删除 1、 为Reader表格的Rname建立UNIQUE索引(可能需要先修改表格数据,再建索引) 2、 用select语句查看Book表的记录顺序,为Bname建立cluster索引,比较索引建立前后记录顺序是否有差异; 3、 为RB表格的RBdate建立普通索引。 4、 删除为RB表格建立的普通索引。 触发器(可不做,时间多再做) 参考PLSQL帮助文档,试试建立一个触发器。在用户执行删除某个员工的时候触发,该触发器的功能是先删除RB中该员工的借书记录,然后删除Reader中该员工记录。 视图 1、 建立在416办公室工作的视图V416,视图包括员工的编号、姓名、年龄等信息 2、 从V416中查询年龄大于30的员工信息 3、 向视图V416中插入一条新的员工记录,然后从V416中查找该条记录,测试是否可以找到; 4、 建立在417办公室工作的视图V417,视图包括员工的编号、姓名、性别、年龄等信息,视图定义带with check option选项; 5、 向视图V417中插入一条新的员工记录,然后从V417中查找该条记录,测试是否可以找到; 6、 通过视图删除刚插入的员工记录,在基本表Reader中查看是否已经删除成功? 7、 在视图V417上建立所有女员工信息的视图FV417,查询视图结果 8、 删除视图FV417中没有借阅图书的员工信息 9、 建立视图GV,数据包括每本图书的编号及其借阅数量。思考是否可以向GV中插入数据,为什么? 10、 删除视图V417 实验报告要求 写出实验步骤及相关的SQL语句即可。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服