




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四 Oracle数据库对象一、实验目的了解Oracle的表、视图、索引、序列、同义词的基本概念和基本用法。二、实验内容和步骤1、查看用户具有的对象和可访问的对象(操作结果截图填入空白处)以SCOTT连接数据库。(1)查看用户模式中各种类型的对象数量select object_type,count(*) from user_objects group by object_type(2)确定用户模式有权访问的对象总数select object_type,count(*) from all_objects group by object_type(3)确定谁拥有用户能够看见的对象select d
2、istinct owner from all_objects2、创建基本表(填入代码)创建上图基本表KHB,要求表创建在表空间USER_DATA3、创建临时表(填入代码)(1)创建一个基于会话的临时表。a) 创建临时表tmp_khb_1(与KHB同结构);b)插入一条记录khbh=00000001,khmc=aaa;c)以SCOTT用户启动第2个SQL*PLUS会话;d) 在第2个会话中查询tmp_khb_1;(操作代码及操作结果截图)观察是否可以看见第1个会话插入的数据,为什么?不能,因为基于会话的临时表只对当前会话可见。每个会话只能查看和修改自己的数据。e)插入一条记录khbh=00000
3、002,khmc=bbb;f)在第1个会话中查看第2个会话的数据;(操作代码及操作结果截图)观察是否可以看见第2个会话插入的数据,为什么?不能,因为基于会话的临时表只对当前会话可见。每个会话只能查看和修改自己的数据。g)在第1个会话中,将表截断;h)在第2个会话中,观察表中是否仍然存在记录;(操作代码及操作结果截图)表中是否仍然存在记录?为什么?是,因为基于会话的临时表只对当前会话可见。每个会话只能查看和修改自己的数据。(2)创建一个基于事务的临时表a) 创建临时表tmp_khb_2(与KHB同结构);b) 插入一条记录khbh=00000001,khmc=aaa;c)查询tmp_khb_2;
4、(操作代码及操作结果截图)d)事务提交commit;e)再次查询tmp_khb_2;(操作代码及操作结果截图)是否能查询到数据?为什么?不能,因为基于事务的临时表中的数据仅在事物过程中有效,当事物提交后,临时表的暂时段将被自动截断4、创建分区表(填入代码)(1)创建范围分区a) 创建范围分区表range_testrange_test ( t_id number primary key, item_id number(8) not null, item_description varchar2(300) )分区字段为t_id,以值<10、<20及< maxvalue分为3个分区
5、表,分别存放到不同的表空间中。 b)插入三条记录insert into range_test( t_id, item_id,item_description) values(9,100,aaa);insert into range_test( t_id, item_id,item_description) values(19,200,bbb');insert into range_test( t_id, item_id,item_description) values(29,300,'ccc');c)查询前2个分区的记录(操作代码及操作结果截图)d)删除第2个分区e)查
6、询表全部数据(操作代码及操作结果截图)(2)创建列表分区a)创建list_test(结构如PPT)b)插入几条数据INSERT INTO list_test values('01','shanghai');INSERT INTO list_test values('02','beijing');INSERT INTO list_test values('02','suzhou');数据能否插入?为什么?第一和第二个可以插入,第三个不行,因为插入的分区中没有suzhou这个关键字。c)查询分区1数据(
7、操作代码及操作结果截图)5、启用oracle的execution plan(1)以sysdba身份连接数据库;conn / as sysdba(2)创建plan_table表,执行utlxplan.sql脚本;?/rdbms/admin/utlxplan.sql(3)创建同义词为多个用户共享一个plan_table,并授权给public;create public synonym plan_table for plan_table;grant all on plan_table to public;(注意,执行过程中,若出现同义词名称已存在,请先删除该同义词)drop public synon
8、ym plan_table;(4)创建plustrace角色?/sqlplus/admin/plustrce.sql(5)将角色权限授予publicgrant plustrace to public;完成授权后,就可以开启执行计划模式,可以采用以下几种方式:set timing on 显示执行时间set autotrace on 查看执行计划和查询信息set autotrace traceonly 只显示执行计划,不显示查询输出6、创建物化视图(填入代码)(1)为scott用户授权(2)创建基于emp,dept表的物化视图日志(3)创建基于emp,dept两张表链接的物化视图(4)查询视图(开
9、启执行计划) (操作代码及操作结果截图)7、创建索引(代码及截图)(1)查看用户的索引(2)创建位图索引a) 创建基于emp(job)的位图索引;b) 开启执行计划,查询表记录,看是执行全表查询,还是基于索引的查询select count(*) from emp where job='SALESMAN'(3)创建函数索引a)创建基于emp的trunc(sal)索引b)在开启了执行计划的状态下,分别进行如下查询,看查询扫描的范围是全表还是基于索引;select ename, sal from emp where sal>2000select ename, sal from
10、emp where trunc(sal)>20008、创建序列(填入代码)(1)创建一个表 create table tmp_sq(id int null,t_name varchar(20);(2)创建一个序列,初始值1,增量1,无最大值,序列不循环。(3)插入数据insert into TMP_SQ(id,t_name) values(SEQ_TEST.nextval ,aaa); insert into TMP_SQ(id,t_name) values(SEQ_TEST.nextval ,bbb); (4)建立触发器,当有数据插入表TMP_SQ时,使用Oracle序列为其插入递增的
11、主键值。create trigger TRG_TEST before insert on TMP_SQ for each rowbegin select SEQ_TEST.nextval into :new.ID from dual;end; (5)删除数据t_name=bbb(6)插入新数据t_name=ccc(7)显示当前表中数据(操作代码及操作结果截图) 9、创建同义词(填入代码)(1)公有同义词a)以system用户连接数据库b)创建EMP表的公有同义词Ec)以scott连接数据库d)访问同义词E(操作代码及操作结果截图)scott用户能访问system用户创建的公共同义词E吗?_可以_ (2)私有同义词a)以system用户连接数据库conn sytem/toorb)创建DEPT表的私有同义词D_Screate synonym d_s for scott.dept;c)以scott用户连接数据库conn scott/tigerd)访问同义词D_S(操作代码及操作结果截图)scott用户能访问system用户创建的私有同义词D_S吗?_不能_ 三、实验思考1、两个表经常进行连接操作,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论