实验四Oracle大数据库对象Word格式文档下载.docx
- 文档编号:4933864
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:16
- 大小:171.15KB
实验四Oracle大数据库对象Word格式文档下载.docx
《实验四Oracle大数据库对象Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验四Oracle大数据库对象Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
3、创建临时表(填入代码)
(1)创建一个基于会话的临时表。
a)创建临时表tmp_khb_1(与KHB同结构);
b)插入一条记录khbh=’00000001’,khmc=’aaa’;
c)以SCOTT用户启动第2个SQL*PLUS会话;
d)在第2个会话中查询tmp_khb_1;
(操作代码及操作结果截图)
观察是否可以看见第1个会话插入的数据,为什么?
不能,因为基于会话的临时表只对当前会话可见。
每个会话只能查看和修改自己的数据。
e)插入一条记录khbh=’00000002’,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;
d)事务提交commit;
e)再次查询tmp_khb_2;
是否能查询到数据?
为什么?
不能,因为基于事务的临时表中的数据仅在事物过程中有效,当事物提交后,临时表的暂时段将被自动截断
4、创建分区表(填入代码)
(1)创建范围分区
a)创建范围分区表range_test
range_test(t_idnumberprimarykey,
item_idnumber(8)notnull,
item_descriptionvarchar2(300)
)
分区字段为t_id,以值<
10、<
20及<
maxvalue分为3个分区表,分别存放到不同的表空间中。
b)插入三条记录
insertintorange_test(t_id,item_id,item_description)values(9,100,‘aaa’);
insertintorange_test(t_id,item_id,item_description)values(19,200,‘bbb'
);
insertintorange_test(t_id,item_id,item_description)values(29,300,'
ccc'
c)查询前2个分区的记录(操作代码及操作结果截图)
d)删除第2个分区
e)查询表全部数据(操作代码及操作结果截图)
(2)创建列表分区
a)创建list_test(结构如PPT)
b)插入几条数据
INSERTINTOlist_testvalues('
01'
'
shanghai'
02'
beijing'
suzhou'
数据能否插入?
第一和第二个可以插入,第三个不行,因为插入的分区中没有‘suzhou’这个关键字。
c)查询分区1数据(操作代码及操作结果截图)
5、启用oracle的executionplan
(1)以sysdba身份连接数据库;
conn/assysdba
(2)创建plan_table表,执行utlxplan.sql脚本;
@?
/rdbms/admin/utlxplan.sql
(3)创建同义词为多个用户共享一个plan_table,并授权给public;
createpublicsynonymplan_tableforplan_table;
grantallonplan_tabletopublic;
(注意,执行过程中,若出现同义词名称已存在,请先删除该同义词)
droppublicsynonymplan_table;
(4)创建plustrace角色
/sqlplus/admin/plustrce.sql
(5)将角色权限授予public
grantplustracetopublic;
完成授权后,就可以开启执行计划模式,可以采用以下几种方式:
settimingon显示执行时间
setautotraceon查看执行计划和查询信息
setautotracetraceonly只显示执行计划,不显示查询输出
6、创建物化视图(填入代码)
(1)为scott用户授权
(2)创建基于emp,dept表的物化视图日志
(3)创建基于emp,dept两张表链接的物化视图
(4)查询视图(开启执行计划)(操作代码及操作结果截图)
7、创建索引(代码及截图)
(1)查看用户的索引
(2)创建位图索引
a)创建基于emp(job)的位图索引;
b)开启执行计划,查询表记录,看是执行全表查询,还是基于索引的查询
selectcount(*)fromempwherejob='
SALESMAN'
;
(3)创建函数索引
a)创建基于emp的trunc(sal)索引
b)在开启了执行计划的状态下,分别进行如下查询,看查询扫描的范围是全表还是基于索引;
selectename,salfromempwheresal>
2000
selectename,salfromempwheretrunc(sal)>
8、创建序列(填入代码)
(1)创建一个表
createtabletmp_sq(idintnull,t_namevarchar(20));
(2)创建一个序列,初始值1,增量1,无最大值,序列不循环。
(3)插入数据
insertintoTMP_SQ(id,t_name)values(SEQ_TEST.nextval,’aaa’);
insertintoTMP_SQ(id,t_name)values(SEQ_TEST.nextval,’bbb’);
(4)建立触发器,当有数据插入表TMP_SQ时,使用Oracle序列为其插入递增的主键值。
createtriggerTRG_TEST
beforeinsertonTMP_SQforeachrow
begin
selectSEQ_TEST.nextvalinto:
new.IDfromdual;
end;
(5)删除数据t_name=’bbb’
(6)插入新数据t_name=’ccc’
(7)显示当前表中数据(操作代码及操作结果截图)
9、创建同义词(填入代码)
(1)公有同义词
a)以system用户连接数据库
b)创建EMP表的公有同义词E
c)以scott连接数据库
d)访问同义词E(操作代码及操作结果截图)
scott用户能访问system用户创建的公共同义词E吗?
______可以_____________
(2)私有同义词
connsytem/toor
b)创建DEPT表的私有同义词D_S
createsynonymd_sforscott.dept;
c)以scott用户连接数据库
connscott/tiger
d)访问同义词D_S(操作代码及操作结果截图)
scott用户能访问system用户创建的私有同义词D_S吗?
__不能________
三、实验思考
1、两个表经常进行连接操作,为了提高连接的效率,可以对这两个表建立什么结构?
2、序列的作用?
序列生成了,怎么使用呢?
当你需要一个自动增长的id或别的什么主键的时候,你可以用一个序列来解决问题。
3、位图索引能加快检索的原因?
索引就是通过事先排好序,从而在查找时可以应用二分查找等高效率的算法。
一般的顺序查找,复杂度为O(n),而二分查找复杂度为O(log2n)。
当n很大时,二者的效率相差及其悬殊。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 Oracle 数据库 对象