管理表文档格式.docx
- 文档编号:13266951
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:10
- 大小:16.43KB
管理表文档格式.docx
《管理表文档格式.docx》由会员分享,可在线阅读,更多相关《管理表文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
-----ROWID提供了访问一个表中一行数据的最快机制。
数据对象号相对文件号块号行号
RRR
BBBBBB
FFF
000000
一个扩展ROWID在磁盘上需要10个字节的存储空间,它是用18个字符来显示。
扩展ROWID的组成如下:
1.数据对象号:
被赋予每一个对象,它在一个数据库中是惟一的。
2.相对文件号:
对同一个表空间中的每一个文件是惟一的。
3.块号:
为相对文件中包含数据行的块的位置。
4.行号:
标识了块头中行目录的位置。
ORACLE在内部存储扩展ROWID时,数据对象号需要32位(bits),相对文件号需要10位,块号需要22位,而行号则需要16号,加起来总共80位或10个字节。
下面让我们来查看一下ROWID:
SQL>
selectempno,ename,job,sal,rowid
2fromemp
3wheresal>
2000;
EMPNOENAMEJOBSALROWID
---------------------------------------------------------
7566JONESMANAGER2975AAAL+ZAAEAAAAAdAAD
7698BLAKEMANAGER2850AAAL+ZAAEAAAAAdAAF
7782CLARKMANAGER2450AAAL+ZAAEAAAAAdAAG
7788SCOTTANALYST3000AAAL+ZAAEAAAAAdAAH
7839KINGPRESIDENT5000AAAL+ZAAEAAAAAdAAI
7902FORDANALYST3000AAAL+ZAAEAAAAAdAAM
已选择6行。
让我们来分析一下ROWID这列的内容:
1.数据对象号为AAAL+Z
2.相对文件号为AAE
3.块号为AAAAAd
4.行号为AAM
ORACLE数据行的结构:
为了节省磁盘空间,ORACLE系统使用了一种特殊的数据行结构。
ORACLE数据行是存储在数据块中的,每个数据块中可以存放多个数据行。
每个数据行是以变长记录的形式存储在数据块中的。
通常一行中的列是按它们被定义的顺序存放的,并且末尾的空列不存储。
但是非末必的空列需要一个字节的存储长度。
1.行头:
用来存储该行中的列数,链接信息和行锁状态。
2.行数据:
是由一系列的列长和列值组成。
对于数据行中的每一列,ORACLE服务器存储列的长度和列的实际值。
3.列长:
一般列长需要一个字节。
但是如果列的长度超过了250个字节,列长就将为3个字节。
4.列值:
列的实际值紧接着列长字节后存放。
创建普通表:
conn/assysdba
已连接。
createtablescott.supplier
2(scodenumber(8),
3snamevarchar2(25),
4contactvarchar2(15),
5phonevarchar2(15),
6faxvarchar2(15))
7storage(initial100knext100k
8pctincrease0minextents1
9maxextents8)
10tablespaceusers;
表已创建。
selectowner,TABLE_NAME,TABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS
2fromdba_tables
3whereowner='
SCOTT'
;
OWNERTABLE_NAMETABLESPACE_NAMEINITIAL_EXTENT
----------------------------------------------------------------------------------------------
NEXT_EXTENTMIN_EXTENTSMAX_EXTENTS
---------------------------------
SCOTTDEPTUSERS65536
12147483645
SCOTTEMPUSERS65536
SCOTTBONUSUSERS65536
SCOTTSALGRADEUSERS65536
SCOTTSUPPLIERUSERS106496
大家发现MAX_EXTENTS这里我们设置的是8可是这里显示的确是2147483645,是不是我们设置不成功呢,其实不是,是因为我们的USERS表空间中本地管理的,是由操作系统来管理而不是ORACLE的数据字典来管理,因此它的MAX_EXTENTS这个参数不能应用到本地管理的表空间中,因此这个设置在这种情况下无效。
创建临时表:
临时表是一种特殊的表。
当需要对某一(也可是几个)表中的一批数据进行反复操作时,通过为这批数据创建一个临时表可能会简化操作并且有可能提高效率。
我们使用GOLBALTEMPORARY子句来创建临时表。
createglobaltemporarytable
2scott.emp_temp
3oncommitpreserverows
4as
5select*
6fromscott.emp
7wherejobnotlike'
SAL%'
临时表中存储的是会话私有数据,这些数据只在事务进行或会话期间存在。
可以通过ONCOMMITDELETEROWS或ONCOMMITPRESERVEROWS子句来控制数据存在的周期。
1.ONCOMMITDELETEROWS:
说明数据行只有在事务中可见,也是默认值。
2.ONCOMMITPRESERVEROWS:
说明数据行在整个会话中可见。
怎样来查看临时表呢?
其实和查看普通表是一样的
selectempno,ename,job,sal,deptno
2fromscott.emp_temp;
EMPNOENAMEJOBSALDEPTNO
-------------------------------------------------
7369SMITHCLERK80020
7566JONESMANAGER297520
7698BLAKEMANAGER285030
7782CLARKMANAGER245010
7788SCOTTANALYST300020
7839KINGPRESIDENT500010
7876ADAMSCLERK110020
7900JAMESCLERK95030
7902FORDANALYST300020
7934MILLERCLERK130010
已选择10行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 管理