Oracle資料庫開發

來源:互聯網
上載者:User

Oracle資料庫開發

在Oracle資料庫系統中,表是資料庫的基本對象,資料庫中所有資料都是以表的形式存在的。
 
環境——Oracle 11g

 一.表的類型
 Oracle資料庫系統中常用的表包括:堆組織表、索引組織表、聚簇表(索引、散列、有序散列)、巢狀表格、暫存資料表、外部表格、分區表、對象表等。
 
1.堆組織表
 在Oracle系統中,普通的標準資料庫表就是堆組織表,其中的資料以堆的方式管理。
 堆的含義:以隨機方式儲存資料的一組空間。
 對於堆組織表而言,當進行資料寫入時,資料庫會使用段中第一個足夠的自由空間。
                  當進行資料刪除時,系統允許以後的插入和更新操作重用這部分空間。
                 
 2.索引組織表
 索引組織表(index organized table,ITO)是按照索引結構儲存資料庫的表,這樣可以提高查詢效能。
 與堆組織表的隨意性不同,索引組織表要求資料行本身具有某種物理順序,資料只能根據主鍵有序地儲存。這樣在索引組織表中執行查詢操作時,
 使用主鍵列將會得到較好的讀取效能。
 
3.聚簇表
 聚簇,是指一個或多個表組成的組,這些表物理地儲存在相同的資料區塊上,有相同聚簇索引值的所有行會相鄰地實體儲存體。
 利用聚簇表可以實現將多個表相關的資料存放區在一個資料區塊中,還可以實現把相同聚簇索引值的所有資料預先儲存起來,如果多個表經常
 做連結操作,採用聚簇表可以大大提高檢索效能。
 oracle 11g提供三種聚簇表:
 a.索引聚簇表(Index Cluster Table):基於B-Tree索引聚簇鍵而建立的聚簇表。聚簇鍵指向一個oracle塊,而不是一行資料。
 b.散列聚簇表(Hash Cluster Table):使用散列函數代替B-Tree索引的聚簇鍵索引,表中的資料就是索引。
 在散列聚簇表中,首先通過內建函式或自訂函數進行散列計算,然後將計算得到的碼值用於定位表中的資料行。
 如果經常使用有相同的包含相等條件的查詢子句訪問表時,使用散列聚簇很合適。
 c.有序散列聚簇表(Sorted Hash Cluster Table):這種散列聚簇表是Oracle 10g增加的,它不僅有散列聚簇的性質,還結合了IOT的一些性質。
 如果需要按照某個鍵擷取資料,但是要求這些資料按另外一個列排序,這種情況下適合用有序散列聚簇表。通過使用有序散列聚簇表,
 oracle可以不用排序而查詢到資料,因為其中的資料時按照鍵的有序實體儲存體的。
 
4.巢狀表格
 巢狀表格是表中之表,是Oracle對象關係擴充的一部分,他們是系統產生和維護的父/子關係中的子表。
 巢狀表格和子表的區別:子表是獨立的表,而巢狀表格則不是。一個巢狀表格是某些行的集合,它在父表中表示為其中一列。對父表中的每一條記錄
 巢狀表格可以包含多個行。
 巢狀表格的優點是能夠對他們進行索引和不需要串連,缺點是,儘管有串聯刪除形式(主行刪除時將刪除所有從屬行),但是參考完整性約束是不可能的。
 
5.暫存資料表
 暫存資料表中儲存的是交易處理期間或會話期間的臨時資料,當交易處理完畢或會話結束,暫存資料表中的資料就被刪除。暫存資料表一旦建立就可以在需要
 時使用,並且只有向表中插入資料時系統才從目前使用者的暫存資料表空間為它分配儲存區段。
 暫存資料表包括:會話級暫存資料表和事務級暫存資料表。
            會話級暫存資料表在會話沒有斷開之前,其中的資料不會自動刪除,會話結束後被系統自動刪除。
            事務級暫存資料表在事務提交時會被系統自動刪除。
 
6.外部表格
 這是從Oracle 9i開始增加的表類型,外部表格中的資料並不儲存在資料庫本身中,而是放在資料庫之外的檔案系統中。
 利用外部表格可以查詢資料庫之外的一個檔案,可以向資料庫載入資料以及寫在資料。在Oracle 10g中對外部表格做了進一步的改進,引入了
 卸載功能,這樣可以在不使用資料庫連結的情況下,為資料庫之間移動資料提供了一種簡單的方法。
 
7.分區表
 分區就是將一個非常大的表分成若干個獨立的較小的組成部分進行儲存和管理。對錶進行分區後,表中的記錄將根據分區條件分散儲存
 到不同的分區中,使用者可以對整個表進行操作,也可以針對特定的分區進行操作。一般表大小超過2GB時,應該使用分區表;此外,如果表中
 包含曆史資料,則新的資料被增加到新的分區中。
 
8.對象表
 對象表是基於物件類型建立的表,而不是作為列的集合。對象表中的每一行都是一個對象;每一個對象都有一個標示符(Object Identifier OID)
 來唯一標識。在對象表之間沒有主外部索引鍵關聯的概念,為了體現這層關係,Oracle使用REF對象來實現。使用對象表可以簡化對象的使用,此外對象表
 是使用物件類型作為模板來建立表的一種便捷方式,它可以確保多個表具有相同的結構。
 

Linux-6-64下安裝Oracle 12C筆記

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

二.表的特性
 表的特性將決定怎樣建立表、怎樣在磁碟上儲存表,以及當表產生和可以使用之後,應用中最終執行的方式。
 (1)TABLESPACE子句
 預設情況下,使用者建立的表位於使用者或資料庫預設資料表空間(USER資料表空間)上。單使用者可以在建立表時,指定代建表的資料表空間。
 
(2)STORAGE子句
 STORAGE子句多數是在建立資料表空間時,用來設定資料表空間的儲存屬性的。預設情況下,建立在該資料表空間的資料庫物件,都會繼承資料表空間的儲存屬性。
 使用者可以在建立表的時候使用STORAGE子句來另外設定表的儲存屬性。
 例:create table t_name(...)STORAGE (INITIAL 200K NEXT 200K PCTINCREASE 20 MAXEXTENTS 15);
 
INITIAL: 指出為對象分配的第一個區的大小
 
NEXT: 指出為對象分配的下一個區的大小
 
PCTINCREASE: 在本地管理資料表空間內,Oracle資料庫在建立段時使用該參數的值確定初始段大小,而後續分配的空間將忽略該參數的值。
            在字典管理資料表空間內,該參數的值指出第三個及其後續區比前一個區增長的百分比。
 
MINEXTENTS: 在本地管理資料表空間內,它與前面3個參數一起決定初始段(Segment)的大小。
            在字典管理資料表空間內,其值指出對象建立時分配的區總數。
 
MAXEXTENTS: 該參數只用於字典管理資料表空間,它指出Oracle可分配給對象的總區(Extent)數。
 
(3)LOGGING和NOTLOGGING
 使用LOGGING和NOTLOGGING子句指定表是否是記錄資料表。
 LOGGING子句,系統會記錄資料庫中所有資料庫改變,一旦發生故障,可以從重做日誌中擷取這些改變,防止資料丟失,提高資料庫的可靠性。
 
NOTLOGGING子句,則不會記錄該表上的某些動作記錄,這樣就只產生很少的日誌。注意,並不是說使用NOTLOGGING子句,在表上的操作就全部
            不產生重做日誌。
            一般NOTLOGGING子句只對一下操作起作用:create table as select;
                                                      SQL*loader直接路徑載入;
                                                      直接路徑插入;
                                                     
 (4)CACHE和NOCACHE
 CACHE子句用來設定對錶進行全表搜尋時,將資料庫讀入緩衝區,並且放置到最近最常使用的一端。
 NOCACHE子句則表示讀入緩衝區的資料庫被放置到最近最少使用列表的最近最少使用的一端。
 預設情況下建立的表都是NOCACHE。對於頻繁進行全表搜尋的表,可以設定為CACHE。
 

三.建立表的基本文法
 create table [schema.]table_name
 (
    column_name  datatye [default expr]  [constraint_name] constraint_def  --列1
  ,column_name  datatye [default expr]  [constraint_name] constraint_def  --列2
  ...
    ,column_name  datatye [default expr]  [constraint_name] constraint_def  --列n
 )
 [PCTFREE n]
 [PCTUSED n]
 [INITRANS]
 [STORAGE storage]
 [TABLESPACE table_space]
 [as sub_querry]
 ;
 備忘:
 PCTFREE 用於的空間百分比(0~99),0表示插入式完全填滿資料區塊,預設為10;
 PCTUSED 為表的每個資料庫保留的可用空間的最小百分比(1~99),預設為40;
 PCTFREE和PCTUSED的組合決定了將插入的資料是否放入一個新的資料區塊中。
 
INITRANS 指出在分配給資料庫物件的每個資料區塊內分配的最初並發事務項數,其取值為1~255,預設為1;

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 下一頁
【內容導航】
第1頁:表(概念) 第2頁:表(資料完整性約束)
第3頁:序列 第4頁:同義字
第5頁:暫存資料表 第6頁:瞭解rowid
第7頁:瞭解分區表 第8頁:關於層次查詢connect by
第9頁:瞭解索引 第10頁:深入索引結構

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.