已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五实验内容:1、验证rownum与rowid的作用。包dbms_rowid.rowid_block_number(rowid)把rowid转换成页号(每一页的编号)。 假如一个表有50行内容,如何提取表中的10-20行的内容?2、Oracle的序列。 语法:CREATE SEQUENCE 序列名 INCREMENT BY n START WITH n MAXVALUE/MINVALUE n|NOMAXVALUE CYCLE|NOCYCLE CACHE n|NOCACHE 例子1: create sequence s1 INCREMENT by 1 START with 10 MAXVALUE 9999 NOCYCLE 例子2: create table test_seq (c1 int primary key , c2 int) insert into test_seq values (s1.nextval,1) select s1.currval from dual; 注意:(1) 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值。 (2)CURRVAL 总是返回当前sequence的值,但是在第一次NEXTVAL,初始化之后才能使用CURRVAL,否则会出错。3、当用序列向表中的主健插入值,还会出现向198页所提到的Insert 阻塞吗?请用实验验证。4、trunc和bitand的作用。5、v$lock(存放事务的锁的信息)和v$transaction(存放事务信息) 新建一个事务,查询v$lock和v$transaction来看该事务拥有锁的情况。6、选作:删除一个表中的重复行。实验步骤:一、验证rownum与rowid的作用。包dbms_rowid.rowid_block_number(rowid)把rowid转换成页号(每一页的编号)。进入Oracle并打开数据库,操作如下:创建一个表myemp,如下:并插入数据,如下:注:这里用到了SEQUENCE,必须先创建一个seq这个序列才能插入数据,具体关于序列的方法见下【二】题。再执行两次myemp表中就有14*4=56行了,查询结果如下: 1、 验证rownum的作用1)由上可初步判定rownum就是行数/行号,但并非仅如此。再来看看他的特征,如下:原表中的前面四行结果如下:按照姓名排序的前四行,结果如下:结论:可知,只按照姓名排序后,rownum行的行号是以前的行号。运用子查询后前四行的结果如下:结论:可知,rownum是根据表记录输出的行号,与筛选语句、排序语句都无关所以当用子查询时等于生成了一个表于是就按照这张表从1开始排序了。2)用rownum进行查询的各种特点,如下:用符号(、=、!=)来进行查询,如下:这样的查询语句就只能运用以上的三个符号(、=、=、between and)这些符号是查询不出来结果的,或者说结果为0行。可是用子查询可以解决符号(、=、=)的查询,如下:2、 验证rowid的作用Rowid是一种数据类型,唯一标识一条记录物理位置的一个id,基于64位编码的18个字符显示。并且存储在表中,可以从表中查询,但不支持插入,更新,删除它们的值。1)Rowed的查询情况如下:2)把rowid转换成页号(每一页的编号),如下:注:把每行换成页,方便按页进行选择,这可以进行分页的处理。3)把rowid转换成行号(每一行的编号),如下: 注:rowid确定了每条记录是在Oracle中的哪一个数据对象、数据文件、块、行上。 ROWID 的格式如下: 数据对象编号 文件编号 块编号 行编号 OOOOOO FFF BBBBBB RRR 32bit10bit 22bit 16 bit由 data_object_id# + rfile# + block# + row# 组成,数据文件占用10个bytes的空间,所以每个表空间不能超过1023个数据文件。3、 假如一个表有50行内容,如何提取表中的10-20行的内容?在表myemp中有56行数据,用between and来查询,如下:也可以用如下方法:注:这两种方法都是用的子查询,而且第二种方法必须是子查询里是=。二、创建Oracle的序列,并使用序列和理解序列。1、 创建序列,如create squence s1 INCREMENT by 1 START with 10 MAXVALUE 9999 NOCYCLE2、 利用创建的序列seq,使其自动生成到表myemp中。3、 深刻理解序列。(1) 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值。(2)CURRVAL 总是返回当前sequence的值,但是在第一次NEXTVAL,初始化之后才能使用CURRVAL,否则会出错。三、当用序列向表中的主健插入值,还会出现向198页所提到的Insert 阻塞吗?请用实验验证。1、在表myemp中将列empno设置为主键,如下:2、使用序列向表myemp中插入值,如下:4、 如果向表myemp中插入了表中有相同的行,会发生阻塞错误,如下:结论:向表中的主键插入值时,不会发生198页所提到的Insert 阻塞五、v$lock(存放事务的锁的信息)和v$transaction(存放事务信息)1、新建一个事务,用v$lock、v$session来看该事务拥有锁的情况。在建立一个事物前,我们先看一下v$lock和v$transaction事务拥有锁的情况,如下:再执行一条语句,如下:再来看一下v$lock和v$transaction事务拥有锁的情况,如下:结论:说明lmode=6是一个排它锁。下面在另一个会话(第二个)中执行下面语句:注:更新表myemp时被阻塞。同时这个会话将表scott.emp自动设置了一个排它锁再查看一下v$lock和v$transaction事务拥有锁的情况,如下:结论:在lmode列中有两个值等于6,说明有两个会话设置了排它锁,而在request中有一个值为6,说明在第一个会话中不拥有这个排它锁,而需要等待第一个会话去释放这个锁。当这个会话释放这个所后,可看到如下结果:注:这时只有第二个会话才拥有这一个排它锁,也就是对表scott.emp的锁。2、同时v$transaction也可以来看该事务拥有锁的情况。如下进行查看:原理同v$lock、v$session一样。3、设置块的最大并发度创建一个表test,并插入数据如下:注:创建表的时候maxtrans 2已经设置块的最大并发度查看这个表中的数据是否在一数据块上,如下查看:可知:他们已经在一个数据块60978中。在第一个会话中执行语句:在第二个会话中执行语句:在第三个会话中执行语句:结论:这是这三行在同一个数据块上,而且maxtrans设置为2,所以在第三个会话上被阻塞。六
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡镇之间就业协议书
- 初级公务员题库及答案
- 项目履约人员合同范本
- 2026-2031年中国数码电子行业市场研究及发展前景预测报告
- 2026-2031年中国手机应用商店行业深度调研研究报告
- 高温陶瓷颜料行业产业发展现状及未来发展趋势分析研究
- 山东省临沂市沂南县2025-2026学年部编版九年级上学期历史期中卷(含答案)
- 护士急救药品知识试题及答案
- 2025年三场(厂)内专用机动车辆作业模拟考试题库试卷附答案
- 2025年卫生监督协管员培训考试试题及答案
- 2025亚洲五国纺织制造业市场需求和供给分析及发展策略规划分析研究报告
- 2026年黑龙江交通职业技术学院单招职业倾向性测试题库及答案1套
- 万寿菊黄酮的提取工艺、生物活性及其在畜牧业中的应用
- 2025河南省农业信贷担保有限责任公司秋季专场招聘28人考试笔试参考题库附答案解析
- 2025中国文化创意产业发展现状及市场前景研究
- 电机轴的生产流程
- 湖南省长沙市一中教育集团2025-2026学年上学期八年级期中考试数学试卷
- 备考2025届中考数学中档及压轴题型模型方法技巧专题03:圆的综合训练(解析版)
- 十二指肠溃疡科普
- 喝酒出事故赔偿协议书
- GB/T 46509-2025玩具中挥发性有机化合物释放量的测定
评论
0/150
提交评论