RACLE特色功能介绍.ppt
《RACLE特色功能介绍.ppt》由会员分享,可在线阅读,更多相关《RACLE特色功能介绍.ppt(40页珍藏版)》请在三一办公上搜索。
1、For Oracle employees and authorized partners only.Do not distribute to third parties.2008 Oracle Corporation Proprietary and Confidential,第1章 CREATE SEQUENCE创建序列,1.1序列 在很多数据库系统中都存在一个自动增长的列,如果现在要想在Oracle中完成自动增长的功能,则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。1.1.1创建序列 语法格式:CREATE SEQUENCE 序列名 INCREMENT BY n START
2、WITH n MAXVALUE/MINVALUE n|NOMAXVALUE CYCLE|NOCYCLE CACHE n|NOCACHE;,第1章 CREATE SEQUENCE创建序列,1.1.1其中:INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。START WITH 定义序列的初始值(即产生的第一个值),默认为1。MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。MINVALUE定义序列
3、生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。,第1章 序列的使用,1.2如果已经创建了
4、序列,怎样才能引用序列呢?方法是使用CURRVAL和NEXTVAL来引用序列的值。调用NEXTVAL将生成序列中的下一个序列号,调用时要指出序列名,即用以下方式调用:序列名.NEXTVALCURRVAL用于产生序列的当前值,无论调用多少次都不会产生序列的下一个值。如果序列还没有通过调用NEXTVAL产生过序列的下一个值,先引用CURRVAL没有意义。调用CURRVAL的方法同上,要指出序列名,即用以下方式调用:序列名.CURRVAL.,1.1.1创建序列并在插入表记录时使用,【例1.1】创建一个序列articleseq 并通过articleseq.nextval来使用:create SEQUE
5、NCE articleseq increment by 1 start with 1;create table article(id NUMBER,pid NUMBER,rootid NUMBER,title varchar(255),cont varchar(2000),pdate date,isleaf NUMBER,PRIMARY KEY(id);insert into article values(articleseq.nextval,0,1,蚂蚁大战大象,内容蚂蚁大战大象,sysdate,1);,第2章 oracle伪列 rowid介绍,【2.1】rowid简介rowid就是唯一标志
6、记录物理位置的一个id,rowid确定了每条记录是在Oracle中的哪一个数据对象,数据文件、块、行上。ROWID 的格式如下:数据对象编号 文件编号 块编号 行编号 OOOOOO FFF BBBBBB RRR 由 data_object_id#+rfile#+block#+row#组成,占用10个bytes的空间,rowid的显示方式:基于64位编码的18个字符显示,其实rowid的存储方式是:10 个字节即80位存储,其中数据对象编号需要32 位,相关文件编号需要10 位,块编号需要22,位行编号需要16 位,由此,我们可以得出:32bit的object number,每个数据库最多有4G
7、个对象10bit的file number,每个对象最多有1022个文件(2个文件预留)22bit的block number,每个文件最多有4M个BLOCK16bit的row number,每个BLOCK最多有64K个ROWSoracle中数据文件的大小是有限制的,就是每个数据文件最多只能包含222-1个数据块 对于2k的块的数据文件,最大的数据文件是8G32k块的数据文件,最大的数据文件是16*8G,第2章 oracle伪列 rowid介绍,【2.1】rowid简介oracle 10g开始支持bigfile大文件的表空间,这种表空间只能有一个数据文件。rowid中省去了rfile#的10bit
8、,将这10bit给block#,所以bigfile文件可以支持更大的文件,可支持4g的block。如果系统一个block的大小为8k,则最大文件为:4g(block#)*8k(blocksize)=32T,不过还要受操作系统文件大小的限制。理论上的 BFT 可以达到下面所列的值:数据块大小(单位:K)BFT 最大值(单位:T)2k 8T 4k 16T 8k 32T 16k 64T 32k 128T,第2章 oracle伪列 rowid介绍,【2.1】rowid简介通过dbms_rowid这个包,可以直接的得到具体的rowid包含的信息:select dbms_rowid.rowid_objec
9、t(rowid)object_id,dbms_rowid.rowid_relative_fno(rowid)file_id,dbms_rowid.rowid_block_number(rowid)block_id,dbms_rowid.rowid_row_number(rowid)num,A.id from A Rowid伪列有以下重要用途:1)能以最快的方式访问表中的一行;2)能显示表的行是如何存储的。3)可以作为表中行的唯一标识。(查找和删除重复记录),第2章 oracle伪列 和伪表,伪列:指的是在物理上这个列并不存在,只是在查询时才构造出来。伪列通常是自由分配的,用户无法执行修改等操作
10、。比如Oracle中的RowID字段,使用RowID可以快速地定位到某个对应的数据,因为它标记了记录所对应的物理地址,是唯一的。CURRVAL AND NEXTVAL 使用序列号的保留字LEVEL 查询数据所对应的级ROWID 记录的唯一标识ROWNUM 限制查询结果集的数量伪表DUAL该表主要目的是为了保证在使用SELECT语句中的语句的完整性而提供的。,第2章 oracle伪列 rownum用法详解,【2.2】rownum用法详解对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且r
11、ownum不能以任何表的名称作为前缀。(2.2.1)rownum 对于等于某值的查询条件如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息,使用rownum=2结果查不到数据。因为rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是false条件,所以无法查到rownum=n(n1的自然数)。SQL select rownum,id,name from student where rownum=1;(可以用在限制返回记录条数的地方,保证不出错,如:隐式游标)SQL select rownum,id,name f
12、rom student where rownum=2;ROWNUM ID NAME-,第2章 oracle伪列 rownum用法详解,【2.2】rownum用法详解(2.2.2)rownum对于大于某值的查询条件 如果想找到从第二行记录以后的记录,当使用rownum2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle 认为rownum n(n1的自然数)这种条件依旧不成立,所以查不到记录。查找到第二行以后的记录可使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道ro
13、wnum是子查询的列还是主查询的列。SQLselect*from(select rownum no,id,name from student)where no2;NO ID NAME-3 200003 李三 4 200004 赵四,第2章 oracle伪列 rownum用法详解,【2.2】rownum用法详解(2.2.3)rownum对于小于某值的查询条件rownum对于rownum1的自然数)的条件认为是成立的,所以可以找到记录。SQL select rownum,id,name from student where rownum select*from(select rownum no,i
14、d,name from student where rownum=2;NO ID NAME-2 200002 王二 3 200003 李三,第2章 oracle伪列 rownum用法详解,【2.2】rownum用法详解(2.2.4)采用嵌套3层的查询语句结合rownum来实现分页看net.sf.hibernate.dialect.Oracle9Dialect:代码:public boolean supportsLimit()return true;public String getLimitString(String sql)StringBuffer pagingSelect=new Stri
15、ngBuffer(100);pagingSelect.append(select*from(select row_.*,rownum rownum_from();pagingSelect.append(sql);pagingSelect.append()row_ where rownum?);return pagingSelect.toString();Oracle采用嵌套3层的查询语句结合rownum来实现分页,这在Oracle上是最快的方式,如果只是一层或者两层的查询语句的rownum不能支持order by。,第2章 oracle伪列 rownum用法详解,【2.2】rownum用法详解
16、(2.2.5)分页查询格式SELECT*FROM(SELECT A.*,ROWNUM RN FROM(SELECT*FROM TABLE_NAME)A WHERE ROWNUM=21其中最内层的查询SELECT*FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM=21控制分页查询的每页的范围。上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM=40这句上。除了这些操作以外,分页查询还有一个很明显的特点,就是处理的页数越小,效率就越高,越到后面,查询速
17、度越慢。幸运的是,在很多应用中,98%的用户将只关心前5页的数据,使得这些应用仍能得益于这个方法。当我们把order by子句改为order by.desc,同时创建逆索引,我们甚至可以把某些用户关心最后5页数据的需求改变为关心前5页。,第3章 oracle层次查询语句,【3.1】用如下语句实现层次查询:oracle中的select语句可以用START WITH.CONNECT BY PRIOR子句实现递归查询,其基本语法是:select*from tablename start with cond1 connect by cond2 where cond3;简单说来是将一个树状结构存储在一张
18、表里,比如一个表中存在两个字段:id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。用上述语法的查询可以取得这棵树的所有记录。其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。,第3章 oracle层次查询语句,【3.2】示例:创建示例表:CREATE TABLE TBL_TEST(ID NUMBER,NAME VARCHAR
19、2(100 BYTE),PID NUMBER DEFAULT 0);插入测试数据:INSERT INTO TBL_TEST(ID,NAME,PID)VALUES(1,10,0);INSERT INTO TBL_TEST(ID,NAME,PID)VALUES(2,11,1);INSERT INTO TBL_TEST(ID,NAME,PID)VALUES(3,20,0);INSERT INTO TBL_TEST(ID,NAME,PID)VALUES(4,12,1);INSERT INTO TBL_TEST(ID,NAME,PID)VALUES(5,121,2);从Root往树末梢递归select*
20、from TBL_TEST start with id=1 connect by prior id=pid,第3章 oracle层次查询语句,从末梢往树ROOT递归select*from TBL_TEST start with id=5 connect by prior pid=id使用伪列Level显示表中节点的层次关系:这个伪列的作用是在递归查询的结果中用来表示节点在整个结构中所处的层次select level,id,pid from TBL_TEST start with id=1 connect by prior id=pid order by level;,第4章 Oracle左右全
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RACLE 特色 功能 介绍
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2914993.html