chap6管理和維護表_第1頁
chap6管理和維護表_第2頁
chap6管理和維護表_第3頁
chap6管理和維護表_第4頁
chap6管理和維護表_第5頁
已閱讀5頁,還剩71頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、chap6 管理和維護表王之倉 青海師范大學6.1 表的概述在Oracle數據庫中,每個關系表都由許多列組成。給每一列指派特定的數據類型來定義將在這個列中存儲得數據類型。一、 標量數據類型1、CHAR 最多可以以固定長度的格式存儲2000個字符或字節。默許指定為以字符方式進展存儲,這個數據類型是固定長度的,并且當位數不夠時,需求在其右邊添加空格來補滿。 CREATE TABLE test(name char(20)2、VARCHAR和VARCHAR2 最多可以以可變長度來存儲4000B,因此不需求空格來作補充。VARCHAR2 比 VARCHAR 更適宜運用,由于兼容性的緣由,所以依然在 Or

2、acle 數據庫中保管著 VARCHAR 。 CREATE TABLE test(name varchar2(20)一、標量數據類型3、NCHAR NLSnational language support , 國際言語支持的數據類型僅可以存儲由數據庫 NLS 字符集定義的 Unicode 字符集。該數據類型最多可以存儲2000B。NCHAR 的列在位數不夠時需求在右邊填充空格。CREATE TABLE test(name Nchar(20)留意:在 Oracle9i 數據庫及其更新的版本中,僅運用 Unicode 數據類型4、NVARCHAR2NLS 的數據類型與 VARCHAR2 數據類型等

3、價。這個數據類型最多可存儲4000B 。CREATE TABLE test(name Nvarchar2(20)留意:在 Oracle9i 數據庫及其更新的版本中,僅運用 Unicode 數據類型一、標量數據類型5、NUMBER用于存儲零、正數、定長負數以及浮點數。以 NUMBER(P,S)的方式來定義數字的精度和范圍。 p 表示精度 1-38,它表示存儲在列中數字的總長度是 p 位。 s 表示范圍,它表示小數點后的位數。該取值范圍可以從-84 到 127 。#運用精度 5 來定義一個正數如 12345CREATE TABLE test(name number(5)#運用精度 5 和范圍 2

4、來定義一個數字。如 12.34。CREATE TABLE test(name number(5,2)6、LONGLONG 類型的列存儲可變長度的字符串,最多可以存儲 2GB 的數據。LONG 類型的列有很多在 VARCHAR2 類型列中所具有的特征。可以運用 LONG 類型的列來存儲 LONG 類型的文本字符串。LONG 數據類型的運用是為了向前兼容的需求。建議運用 LOB 數據類型來替代 LONG 類型。例如:CREATE TABLE test(name long)一、標量數據類型7、DATE用于在數據庫中存儲日期和時間。存儲時間的精度可以到達 1/100s。不提供時區的相關信息。CREAT

5、E TABLE test(name DATE)8、TIMESTAMP運用年、月、日、小時、分鐘、秒域來對日期/時間提供更詳細的支持。最多可以運用 9 位數字的精度來存儲秒受底層操作系統支持的限制。這個數據類型沒有時區的相關信息,CREATE TABLE test(timestamp_column TIMESTAMP);一、標量數據類型9、RAW用于存儲 raw 類型的二進制數據。最多可以存儲 2000B。建議運用 BLOB 來替代它。CREATE TABLE test(raw_column RAW(2000);10、LONG RAW用于存儲 raw 類型的二進制數據。最多可以存儲 2GB 的數

6、據。建議運用BLOB來替代它。CREATE TABLE test(raw_column LONG RAW);一、標量數據類型11、CLOB用于存儲基于字符的大對象。可存儲4GB。CREATE TABLE test(clob_column CLOB);13、BLOB最多可以存儲 4GB 數據的二進制大對象,比如照片、PPT、二進制圖像等。CREATE TABLE test(blob_column BLOB);一、標量數據類型14、BFILE存儲指向數據庫外部文件的定位符。外部文件最大為 4GB。CREATE TABLE test(bfile_column BFILE);二、集合數據類型-嵌套表

7、一種數據發掘模型配置,該配置中表的一個列包含一個表。1、嵌套表的定義 嵌套表是表中之表。一個嵌套表是某些行的集合,它在主表中表示為其中的一列。對主表中的每一條記錄,嵌套表可以包含多個行。在某種意義上,它是在一個表中存儲一對多關系的一種方法。調查一個包含部門信息的表,在任何時間內每個部門會有很多工程正在實施。在一個嚴厲的關系模型中,將需求建立兩個獨立的表department和project。 二、集合數據類型-嵌套表2 舉例闡明嵌套表的運用假設有一個關于動物豢養員的表,希望其中具有他們豢養的動物的信息。用一個嵌套表,就可以在同一個表中存儲豢養員和其豢養的全部動物的信息。1創建類型animal_t

8、y:此類型中,對于每個動物都包含有一個記錄,記載了其種類、稱號和出生日期信息。CREATE TYPE animal_ty AS OBJECT (breed varchar2(25),name varchar2(25),birthdate date);2創建animals_nt:此類型將用作一個嵌套表的根底類型。CREATE TYPE animal_nt as table of animal_ty;3創建表breeder:豢養員的信息表create table breeder(breedername varchar2(25),animals animal_nt)nested table anim

9、als store as animals_nt_tab;二、集合數據類型-嵌套表3、向嵌套表中插入記錄insert into breeder values(mary,animal_nt(animal_ty(dog,butch,31-MAR-97), animal_ty(dog,rover,31-MAR-97), animal_ty(dog,julio,31-MAR-97) );insert into breeder values(jane,animal_nt(animal_ty(cat,an,31-MAR-97), animal_ty(cat,jame,31-MAR-97), animal_t

10、y(cat,killer,31-MAR-97);commit;二、集合數據類型-嵌套表4、查詢嵌套表select name,birthdate from table(select animals from breeder);select name,birthdate from table (select animals from breeder where breedername=mary)where name=dog;二、集合數據類型2-VARRY固定長度(長度運用extend方法添加)一維數組(相當于類,有其方法和構造方法【類型名】)序號延續對象類型create or replace ty

11、pe type_name as varry(3) of varchar(20)或者在程序的定義區中聲明:type type_name is varry(3) of varchar(20);初始化:object_name type_name :=type_name();賦值: object_name(i):=n;三、關系數據類型-游標Cursor1 概念 游標是SQL的一個內存任務區,由系統或用戶以變量的方式定義。游標的作用就是用于暫時存儲從數據庫中提取的數據塊。在某些情況下,需求把數據從存放在磁盤的表中調到計算機內存中進展處置,最后將處置結果顯示出來或最終寫回數據庫。這樣數據處置的速度才會提高

12、,否那么頻繁的磁盤數據交換會降低效率。 三、關系數據類型-游標Cursor2 類型 Cursor類型包含三種: 隱式Cursor顯式CursorRef Cursor動態Cursor 四、ROWID1.rowid的引見1SQL select ROWID from Bruce_test where rownum CREATE TABLE s_dept(id NUMBER(7) CONSTRAINT s_dept_id_pk PRIMARY KEY,name VARCHAR2(25) CONSTRAINT s_dept_name_nn NOT NULL,region_id NUMBER(7) CON

13、STRAINT s_dept_region_id_fk REFERENCES region (id), CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id);經過子查詢建表的例子SQLCREATE TABLE emp_41 AS SELECT id, last_name, userid, start_dateFROM s_emp WHERE dept_id = 41;在 SQL Developer中創建表Oracle SQL Developer提供了所見即所得的數據表設計器窗口,可以經過導航面板的樹狀視圖,展開數據庫銜接節點,右

14、擊數據表節點,選擇新建表.菜單項,將顯示表設計器窗口。在創建表窗口中,可以經過添加列按鈕添加新的列,從下拉列表框中選擇列數據類型及約束,并可單擊DDL標簽頁來查看創建表的數據定義言語。創建表時的命名規那么和本卷須知命名規那么1)表名和字段名的命名規那么:必需以字母開頭,可以含符號A-Z,a-z,0-9,_,$,#2)大小寫不區分3)不用SQL里的保管字, 一定要用時可用雙引號把字符串括起來4)用和實體或屬性相關的英文符號長度有一定的限制本卷須知:1)建表時可以用中文的字段名, 但最好還是用英文的字段名2)創建表時要把較小的不為空的字段放在前面, 能夠為空的字段放在后面3)建表時假設有獨一關鍵字

15、或者獨一的約束條件,建表時自動建了索引4)一個表的最多字段個數也是有限制的,254個.約束名的命名規那么和語法約束名的命名規那么約束名假設在建表的時候沒有指明,系統命名規那么是SYS_Cn(n是數字)約束名字符串的命名規那么同于表和字段名的命名規那么創建invoice表并指定主鍵CREATE TABLE invoice (invoice_id NUMBER PRIMARY KEY, -自動編號,獨一,不為空vendor_id NUMBER NOT NULL, -供應商ID invoice_number VARCHAR2(50) NOT NULL, -發票編號 invoice_date DATE

16、 DEFAULT SYSDATE, -發票日期 invoice_total NUMBER(9,2) NOT NULL, -發票總數 payment_total NUMBER(9,2) DEFAULT 0 -付款總數 ) 在列屬性中運用CONSTRAINT關鍵字CREATE TABLE invoice ( -自動編號,獨一,不為空invoice_id NUMBER CONSTRAINT invoice_pk PRIMARY KEY, -供應商IDvendor_id NUMBER CONSTRAINT vendor_id_nn NOT NULL, -發票編號invoice_number VARCH

17、AR2(50) CONSTRAINT vendor_number_nn NOT NULL, -發票日期invoice_date DATE DEFAULT SYSDATE, -發票總數invoice_total NUMBER(9,2) CONSTRAINT invoice_total_nn NOT NULL, -付款總數payment_total NUMBER(9,2) DEFAULT 0 ) ;在表級別運用CONSTRAINT關鍵字CREATE TABLE invoice ( invoice_id NUMBER , -自動編號,獨一,不為空 vendor_id NUMBER, -供應商ID i

18、nvoice_number VARCHAR2(50), -發票編號 invoice_date DATE DEFAULT SYSDATE, -發票日期 invoice_total NUMBER(9,2) , -發票總數 payment_total NUMBER(9,2) DEFAULT 0, -付款總數 CONSTRAINT invoice_pk PRIMARY KEY (invoice_id), CONSTRAINT vendor_id_un UNIQUE (vendor_id) ); 外鍵的定義1 vendor表的定義代碼CREATE TABLE vendors ( vendor_id NU

19、MBER, -供應商id vendor_name VARCHAR2(50) NOT NULL, -供應商稱號 CONSTRAINT vendors_pk PRIMARY KEY (vendor_id), -主鍵 CONSTRAINT vendor_name_uq UNIQUE (vendor_name) -獨一性約束 ) 外鍵的定義2 在invoice表中為vendor_id列創建外鍵關聯CREATE TABLE invoice ( invoice_id NUMBER , -自動編號,獨一,不為空 vendor_id NUMBER REFERENCES vendors (vendor_id),

20、 -供應商ID invoice_number VARCHAR2(50), -發票編號 invoice_date DATE DEFAULT SYSDATE, -發票日期 invoice_total NUMBER(9,2) , -發票總數 payment_total NUMBER(9,2) DEFAULT 0, -付款總數 CONSTRAINT invoiceid_vendorid_pk PRIMARY KEY (invoice_id,vendor_id), CONSTRAINT vendor_id_un UNIQUE (vendor_id) ); 外鍵的定義3 在invoice表級別創建外鍵關聯

21、CREATE TABLE invoice ( invoice_id NUMBER , -自動編號,獨一,不為空 vendor_id NUMBER, -供應商ID invoice_number VARCHAR2(50), -發票編號 invoice_date DATE DEFAULT SYSDATE, -發票日期 invoice_total NUMBER(9,2) , -發票總數 payment_total NUMBER(9,2) DEFAULT 0, -付款總數 CONSTRAINT invoiceid_vendorid_pk PRIMARY KEY (invoice_id,vendor_id

22、), CONSTRAINT vendor_id_un UNIQUE (vendor_id), CONSTRAINT invoice_fk_vendors FOREIGN KEY (vendor_id) REFERENCES vendors(vendor_id) ON DELETE CASCADE ); 6.2.2 創建暫時表一、認識暫時表目前一切運用 Oracle 作為數據庫支撐平臺的運用,大部分數據量比較龐大的系統,即表的數據量普通情況下都是在百萬級以上的數據量。當然在 Oracle 中創建分區是一種不錯的選擇,但是當發現運用有多張表關聯的時候,并且這些表大部分都是比較龐大,而關聯的時候發現

23、其中的某一張或者某幾張表關聯之后得到的結果集非常小并且查詢得到這個結果集的速度非常快,那么這個時候思索在 Oracle 中創建“暫時表。6.2.2 創建暫時表對暫時表的了解在 Oracle 中創建一張表,這個表不用于其他的什么功能,主要用于本人的軟件系一致些特有功能才用的,而當他用完之后表中的數據就沒用了。 Oracle 的暫時表創建之后根本不占用表空間,假設他沒有指定暫時表(包括暫時表的索引)存放的表空的時候,他插入到暫時表的數據是存放在 ORACLE 系統的暫時表空間中( TEMP )。6.2.2 創建暫時表二、暫時表的創建 創建Oracle 暫時表,可以有兩種類型的暫時表: 1 會話級的

24、暫時表 2 事務級的暫時表6.2.2 創建暫時表1) 會話級的暫時表 由于會話級暫時表中的數據和當前會話有關系,當當前SESSION 不退出的情況下,暫時表中的數據就還存在,而當退出當前SESSION 的時候,暫時表中的數據就全部沒有了,當然這個時候假設以另外一個SESSION 登陸的時候是看不到另外一個SESSION 中插入到暫時表中的數據的。即兩個不同的SESSION 所插入的數據是互不相關的。當某一個SESSION 退出之后暫時表中的數據就被截斷(truncate table ,即數據清空)了。6.2.2 創建暫時表會話級的暫時表創建方法:Create Global Temporary

25、Table Table_Name(Col1 Type1,Col2 Type2.) On Commit Preserve Rows ;舉例:create global temporary table Student(Stu_id Number(5),Class_id Number(5),Stu_Name Varchar2(8),Stu_Memo varchar2(200) on Commit Preserve Rows ;6.2.2 創建暫時表2 事務級暫時表 事務級暫時表是指該暫時表與事務相關,當進展事務提交或者事務回滾的時候,暫時表中的數據將自行被截斷,其他的內容和會話級的暫時表的一致(包括

26、退出SESSION 的時候,事務級的暫時表也會被自動截斷)。6.2.2 創建暫時表事務級暫時表的創建方法:Create Global Temporary Table Table_Name(Col1 Type1,Col2 Type2.) On Commit Delete Rows ;舉例: create global temporary table Classes (Class_id Number(5), Class_Name Varchar2(8), Class_Memo varchar2(200) on Commit delete Rows ;6.2.2 創建暫時表3 兩種類型暫時表的區別

27、會話級暫時表采用 on commit preserve rows ;而事務級那么采用 on commit delete rows ; 用法上,會話級別只需當會話終了暫時表中的數據才會被截斷,而且事務級暫時表那么不論是 commit 、 rollback 或者是會話終了,暫時表中的數據都將被截斷 。6.2.2 創建暫時表4 什么時候運用暫時表 1 ) 當某一個 SQL 語句關聯的表在 2 張及以上,并且和一些小表關聯。可以采用將大表進展分拆并且得到比較小的結果集合存放在暫時表中 2 ) 程序執行過程中能夠需求存放一些暫時的數據,這些數據在整個程序的會話過程中都需求用的等等。6.2.2 創建暫時表

28、5 暫時表的缺乏之處 1 )不支持 lob 對象,這也許是設計者基于運轉效率的思索,但實踐運用中確實需求此功能時就無法運用暫時表了。 2 )不支持主外鍵關系 所以,由于以上緣由,可以本人創建暫時表,以彌補 oracle 暫時表的缺乏之處。閱讀資料:暫時表創建方法: 1 、以常規表的方式創建暫時數據表的表構造,但要在每一個表的主鍵中參與一個 SessionID 列以區分不同的會話。(可以有 lob 列和主外鍵) 2 、寫一個用戶注銷觸發器,在用戶終了會話的時候刪除本次會話所插入的一切記錄 (SessionID 等于本次會話 ID 的記錄 ) 。 3 、程序寫入數據時,要順便將當前的會話 ID(S

29、essionID) 寫入表中。 4 、程序讀取數據時,只讀取與當前會話 ID 一樣的記錄即可。 功能加強的擴展設計: 1 、可以在數據表上建立一個視圖,視圖對記錄的挑選條件就是當前會話的SessionID 。 2 、數據表中的SessionID 列可以經過Trigger 實現,以實現對運用層的透明性。 3 、高級用戶可以訪問全局數據,以實現更加復雜的功能。 擴展暫時表的優點: 1 、實現了與Oracle 的基于會話的暫時表一樣的功能。 2 、支持SDO_GEOMETRY 等lob 數據類型。 3 、支持表間的主外鍵銜接,且主外鍵銜接也是基于會話的。 4 、高級用戶可以訪問全局數據,以實現更加復

30、雜的功能。6.3 維護參數1 initransinitrans用于對數據塊的行級并行操作的控制。首先引見事務槽的概念,事務槽在數據塊頭中,存儲了有關事務的控制信息。數據塊中的每行數據有一個鎖位,該鎖位號與事務槽一樣,數據庫效力器就是經過每行的鎖位找到數據塊頭中的事務槽,利用數據槽中的事務信息完成對該行數據的操作。每個事務只運用一個事務槽。 設initrans值為2,那么數據庫效力器在一個數據塊中最多有兩個并行的事務可以獨立、并行的經過本人的事務槽,實現對共享數據塊中的行數據的事務操作。2 MAXTRANSMAXTRANS 指的是假設 INITRANS 空間不夠用了,就會自動擴展 ITL ,直到

31、最大值也就是 MAXTRANS 值為止,預設是 255 。但是,假設 BLOCK 空間曾經缺乏,也有能夠無法繼續擴展到 255 個 ITS 空間喔。maxtrains定義了數據塊中數據槽的最大值。事務表會根據需求動態擴展,最大到達MAXTRANS 個條目假設塊上有足夠的自在空間。所分配的每個事務條目需求占用塊首部中的2324 字節的存儲空間。假設有大量的并發訪問運用的這個塊,那么參數不能太小,否那么資源競爭將導致系統并發性能下降。3 PCTFREE要描畫一個 BLOCK 的運作,我們可以把一個 BLOCK 想成一個水杯。侍者把水倒入放在我們面前的水杯,要多滿呢,我們要求他倒 9 分滿好了,這時

32、候 PCTFREE 代表著設定為 10 ,意思就是說,當 BLOCK 運用到達 90% 的時候,就不可以在運用了,這個 BLOCK 應該從 FREELIST 列表中移除 (un-link) 。為何要保管 10% 的空間呢?這是為了提供 update 數據時所能夠添加的空間運用,假設空間保管的太小,就容易發生 row chaining 。假設希望在對象創建后更改pctfree參數,可經過以下命令SQL alter table t1 pctfree 20;Table altered. 可經過dba_tables,dba_indexes查看pct_free的參數值,例如如下SQL select ta

33、ble_name,pct_free from user_tables where table_name=T1 TABLE_NAME PCT_FREE- -T1 20 4 pctused 當一個block閱歷delete操作使已運用空間降到pctused值后,此塊重新被參與freelist,后續的insert將會用到這個block。總結:pctfree 很重要,但對于查詢系統根本上可以設置為0pctused 由于10g以后oracle都采用位圖對段和數據塊進展管理了,這個參數根本可以淘汰initrans ,很重要,但假設不是特別設置,不要去修正。maxtrans ,至少10g以上不用了,屬于淘汰

34、行列。6.4 維護列添加列 語法:ALTER TABLE table_name ADD(new_column_name datatypeDEFAULT value NOT NULL);例子:ALTER TABLE employee ADD(phone VARCHAR2(10),hiredate DATE DEFAULT SYSDATE NOT NULL);留意:為表添加列時應留意,假設表中曾經有數據,那么新列不能用NOT NULL約束,除非為新列設置缺省值,在默許情況下,新插入列的值為NULL。1 添加列 語法:ALTER TABLE table_name ADD(new_column_nam

35、e datatypeDEFAULT value NOT NULL);例子:ALTER TABLE employee ADD(phone VARCHAR2(10),hiredate DATE DEFAULT SYSDATE NOT NULL);留意:為表添加列時應留意,假設表中曾經有數據,那么新列不能用NOT NULL約束,除非為新列設置缺省值,在默許情況下,新插入列的值為NULL。2 修正列名語法:ALTER TABLE table_name RENAME COLUMN oldname TO newname;舉例:ALTER TABLE employee RENAME COLUMN ename

36、 TO employee_name;3 修正列類型語法:ALTER TABLE table_name MODIFY column_name new_datatype;舉例:ALTER TABLE employee MODIFY ename CHAR(20);留意:可以增大字符類型列的長度和數值類型列的精度;假設字符類型列、數值類型列中的數據滿足新的長度、精度,那么可以減少類型的長度、精度;假設不改動字符串的長度,可以將VARCHAR2類型和CHAR類型轉換;假設更改數據類型為另一種非同系列類型,那么列中數據必需為NULL。刪除列當某些列不再需求時,可以將其刪除。但是不能將表中一切列刪除。刪除列

37、的方法有兩種,一種是直接刪除,另一種是將列先標志為UNUSED,然后進展刪除。1直接刪除列2將列標志為UNUSED形狀直接刪除列可以運用ALTER TABLE DROP COLUMN語句直接刪除列。可以刪除一列或多列,同時刪除與列相關的索引和約束。假設刪除的列是一個多列約束的組成部分,那么必需運用CASCADE CONSTRAINTS選項。例子:刪除employess表中的sno,phone,hiredate列,語句為:ALTER TABLE sc DROP COLUMN sno CASCADE CONSTRAINTS;ALTER TABLE employee DROP(phone,hired

38、ate);將列標志為UNUSED形狀刪除列時,將刪除表中每個記錄的相應列值,同時釋放存儲空間。因此,假設要刪除一個大的表中的列,由于需求對每個記錄進展處置,并寫入重做日志文件,需求很長的處置時間。為了防止在數據庫運用頂峰期間由于刪除列的操作而占用過多的資源,可以暫時將列置為UNUSED形狀。將列標志為UNUSED形狀運用 ALTER TABLE SET UNUSED語句。對用戶來說,被標志為UNUSED形狀的列像被刪除了一樣,無法查詢該列,但實踐上該列依然存在,并占用存儲空間。可以在數據庫空閑時,運用ALTER TABLE DROP UNUSED COLUMNS語句刪除處于UNUSED形狀的一

39、切列。將列標志為UNUSED形狀例子:將employee表中sage、sname、resume列設置為UNUSED形狀ALTER TABLE player SET UNUSED COLUMN sage;ALTER TABLE player SET UNUSED COLUMN (sname,resume);ALTER TABLE player DROP UNUSED COLUMNS;6.5 刪除和截斷表drop table tablename;truncate table tablename;delete table tablename;1 刪除表刪除表drop table tablename;

40、特性:它刪除表中一切的數據行和表的構造。它也刪除表的一切索引。假設沒有備份,所刪除的數據無法恢復。它提交一切的掛起的事務。一切基于該表的視圖和別名依然保管但已無效。2 截斷表截斷表truncate table tablename;特性:它刪除表中一切的數據行,但保管表的構造。假設沒有備份,所刪除的數據無法恢復。該語句釋放表所占用的磁盤空間。它并不觸發表的刪除觸發器。3 刪除表內容delete table tablename;delete語句是dml,這個操作會放到rollback segement中,事務提交之后才生效;假設有相應的trigger,執行的時候將被觸發.小結1 truncate和

41、 delete只刪除數據不刪除表的構造(定義)drop語句將刪除表的構造被依賴的約束(constrain),觸發器(trigger),索引(index).2 delete語句是dml,這個操作會放到rollback segement中,事務提交之后才生效;假設有相應的trigger,執行的時候將被觸發.truncate,drop是ddl, 操作立刻生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger.3 速度,普通來說: drop; truncate ; delete4 平安性:小心運用drop 和truncate,尤其沒有備份的時候.否那么哭都來不及5

42、運用上,想刪除部分數據行用delete,留意帶上where子句. 回滾段要足夠大. 6.6 分區表當表中的數據量不斷增大,查詢數據的速度就會變慢,運用程序的性能就會下降,這時就應該思索對表進展分區。表進展分區后,邏輯上表依然是一張完好的表,只是將表中的數據在物理上存放到多個表空間(物理文件上),這樣查詢數據時,不至于每次都掃描整張表。表分區的詳細作用:Oracle的分區表功能經過改善可管理性、性能和可用性,從而為各式運用程序帶來了極大的益處。通常,分區可以使某些查詢以及維護操作的性能大大提高。此外,分區還可以極大簡化常見的管理義務,分區是構建千兆字節數據系統或超高可用性系統的關鍵工具。1 范圍

43、分區范圍分區將數據基于范圍映射到每一個分區,這個范圍是他在創建分區時指定的分區鍵決議的。這種分區方式是最為常用的,并且分區鍵經常采用日期。舉個例子:能夠會將銷售數據按照月份進展分區。當運用范圍分區時,請思索以下幾個規那么:1、每一個分區都必需有一個VALUES LESS THEN子句,它指定了一個不包括在該分區中的上限值。分區鍵的任何值等于或者大于這個上限值的記錄都會被參與到下一個高一些的分區中。2、一切分區,除了第一個,都會有一個隱式的下限值,這個值就是此分區的前一個分區的上限值。3、在最高的分區中,MAXVALUE被定義。MAXVALUE代表了一個不確定的值。這個值高于其它分區中的任何分區

44、鍵的值,也可以了解為高于任何分區中指定的VALUE LESS THEN的值,同時包括空值例1 按id值SQL create table fnn_test1 2 ( 3 KPI_ID VARCHAR2(10), 4 KPI_NAME VARCHAR2(60), 5 FA_BIL_CODE VARCHAR2(10), 9 PAYOUT_RATE NUMBER(10,2), 10 ACCT_YEAR VARCHAR2(4) 11 ) 12 partition by range (KPI_ID) 13 ( 14 partition PART1 values less than (10000), 15

45、partition PART2 values less than (20000), 16 partition PART3 values less than (30000), 17 partition PART4 values less than (40000) 18 );例2 按時間SQL create table fnn_test2 2 ( 3 KPI_CODE VARCHAR2(10), 4 KPI_NAME VARCHAR2(60), 5 FA_BIL_CODE VARCHAR2(10), 9 PAYOUT_RATE NUMBER(10,2), 10 ACCT_YEAR VARCHAR2(4) 11 ) 12 partition by range (ACCT_YEAR) 13 ( 14 partition PART_2021 values less than (2021), 15 partition PART_2021 values

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論