表的類型有9種:1、索引組織表,依索引結構儲存的表;2、索引叢集表,將多個表儲存在一起的表;3、散列叢集表,透過散列聚簇鍵將資料散列到資料庫區塊上;4、有序散列聚簇表,行按某個鍵值散列,與該鍵相關的一系列記錄按照插入順序儲存;5、巢狀表等等。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
1) 堆組織表(heaporganized table)
這就是標準資料庫表。數據以堆的方式管理。增加資料時,會使用段中找到的第一個能放下此資料的自由空間。從表中刪除資料後,允許以後的INSERT和UPDATE重複使用這部分空間。堆(heap)是一組空間,以一種隨機的方式使用。
2)索引組織表(index organized table)
表以索引結構儲存。這就強制要求行本身有某種物理順序。在堆組織表中,資料可以放在任何位置;而在IOT中,資料要根據主鍵有序地儲存。
3)索引聚簇表(index clustered table)
聚簇(cluster)是指一個或多個表組成的群組,這些表物理地存儲在相同的資料庫區塊上,有相同叢集鍵值的所有行會相鄰地實體儲存。
首先,多個表可以物理地儲存在一起。一般而言,你可以認為一個資料庫區塊上儲存一個表格的數據,但是對於叢集表,可能會把多個表的資料儲存在同一個區塊上。
其次,包含相同叢集鍵值(如DEPTNO=10)的所有資料會實體地儲存在一起。這些數據按聚簇鍵值“聚簇”在一起。聚集鍵使用B*樹索引建立。
4)散列叢集表(hash clusteredtable)
#類似索引叢集表,但不使用B*樹索引叢集鍵來定位數據,而是透過散列聚簇鍵將資料散列到資料庫區塊上。在散列聚簇中,資料就是索引(這是隱喻的說法)。如果需要頻繁地透過鍵的相等性比較來讀取數據,則散列聚簇表就很適用。
5)有序散列叢集表(sorted hash clustered table)
Oracle10g中新增,它具有散列叢集表的特性,同時兼有IOT的一些特性。
行以某個鍵值(如CUSTOMER_ID)雜湊,而與該鍵相關的一系列記錄會依照插入順序儲存。 (因此這些記錄可能是基於時間戳記的記錄)。
例如,訂單輸入系統中,訂單會以先進先出(FIFO)的方式取得和處理。在這樣一個系統中,有序散列叢集就是適用的資料結構。
6)嵌套表(nested table)
嵌套表是Oracle物件關係擴充的一部分。它們實際上就是系統產生和維護的父/子關係中的子表。
7)臨時表(temporarytable)
臨時表要根據需要從目前使用者的臨時表空間分配臨時區段。每個會話只能看到這個會話分配的區段;它從不會看到其他任何會話中創建的任何資料。
8)物件表(objecttable)
物件表是基於某種物件類型建立。它們擁有非物件表所沒有的特殊屬性,如係統會為物件表的每一行產生REF(物件識別碼)。
物件表其實是堆組織表、索引組織表和暫存資料表的特例,也可以包含巢狀表作為其結構的一部分。
9)外部表(externaltable)
這些表格並不會儲存在資料庫本身中,而是放在資料庫之外,也就是放在平常的作業系統文件中。
利用外部表可以查詢資料庫以外的一個文件,就好像這個文件也是資料庫中平常的表一樣。外部表對於向資料庫載入資料最有用(外部表是非常強大的資料載入工具)。
Oracle10g更進一步,還引入了一個外部表卸載功能,在不使用資料庫連結的情況下,這為在Oracle資料庫之間移動資料提供了一種簡單的方法。
推薦教學:《Oracle影片教學》
以上是oracle中表格的類型有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!