表的類型有9種:1、索引組織表,按索引結(jié)構(gòu)存儲(chǔ)的表;2、索引聚簇表,將多個(gè)表存儲(chǔ)在一起的表;3、散列聚簇表,通過(guò)散列聚簇鍵將數(shù)據(jù)散列到數(shù)據(jù)庫(kù)塊上;4、有序散列聚簇表,行按某個(gè)鍵值散列,與該鍵相關(guān)的一系列記錄按照插入順序存儲(chǔ);5、嵌套表等等。
本教程操作環(huán)境:Windows10系統(tǒng)、oracle 11g版、Dell G3電腦。
oracle中表的類型有哪些
這就是標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)表。數(shù)據(jù)以堆的方式管理。增加數(shù)據(jù)時(shí),會(huì)使用段中找到的第一個(gè)能放下此數(shù)據(jù)的自由空間。從表中刪除數(shù)據(jù)后,允許以后的INSERT和UPDATE重用這部分空間。堆(heap)是一組空間,以一種隨機(jī)的方式使用。
2)索引組織表(index organized table)
表按索引結(jié)構(gòu)存儲(chǔ)。這就強(qiáng)制要求行本身有某種物理順序。在堆組織表中,數(shù)據(jù)可以放在任何位置;而在iot中,數(shù)據(jù)要根據(jù)主鍵有序地存儲(chǔ)。
3)索引聚簇表(index clustered table)
聚簇(cluster)是指一個(gè)或多個(gè)表組成的組,這些表物理地存儲(chǔ)在相同的數(shù)據(jù)庫(kù)塊上,有相同聚簇鍵值的所有行會(huì)相鄰地物理存儲(chǔ)。
首先,多個(gè)表可以物理地存儲(chǔ)在一起。一般而言,你可以認(rèn)為一個(gè)數(shù)據(jù)庫(kù)塊上存儲(chǔ)一個(gè)表的數(shù)據(jù),但是對(duì)于聚簇表,可能把多個(gè)表的數(shù)據(jù)存儲(chǔ)在同一個(gè)塊上。
其次,包含相同聚簇鍵值(如DEPTNO=10)的所有數(shù)據(jù)會(huì)物理地存儲(chǔ)在一起。這些數(shù)據(jù)按聚簇鍵值“聚簇”在一起。聚簇鍵使用B*樹索引建立。
4)散列聚簇表(hash clusteredtable)
類似于索引聚簇表,但是不使用B*樹索引聚簇鍵來(lái)定位數(shù)據(jù),而是通過(guò)散列聚簇鍵將數(shù)據(jù)散列到數(shù)據(jù)庫(kù)塊上。在散列聚簇中,數(shù)據(jù)就是索引(這是隱喻的說(shuō)法)。如果需要頻繁地通過(guò)鍵的相等性比較來(lái)讀取數(shù)據(jù),散列聚簇表就很適用。
5)有序散列聚簇表(sorted hash clustered table)
Oracle10g中新增,它具有散列聚簇表的特性,同時(shí)兼有IOT的一些特性。
行按某個(gè)鍵值(如CUSTOMER_ID)散列,而與該鍵相關(guān)的一系列記錄按照插入順序存儲(chǔ)。(因此這些記錄可能是是基于時(shí)間戳的記錄)。
例如,訂單輸入系統(tǒng)中,訂單會(huì)按先進(jìn)先出(FIFO)的方式獲取和處理。在這樣一個(gè)系統(tǒng)中,有序散列聚簇就是適用的數(shù)據(jù)結(jié)構(gòu)。
6)嵌套表(nested table)
嵌套表是Oracle對(duì)象關(guān)系擴(kuò)展的一部分。它們實(shí)際上就是系統(tǒng)生成和維護(hù)的父/子關(guān)系中的子表。
7)臨時(shí)表(temporarytable)
臨時(shí)表要根據(jù)需要從當(dāng)前用戶的臨時(shí)表空間分配臨時(shí)區(qū)段。每個(gè)會(huì)話只能看到這個(gè)會(huì)話分配的區(qū)段;它從不會(huì)看到其他任何會(huì)話中創(chuàng)建的任何數(shù)據(jù)。
8)對(duì)象表(objecttable)
對(duì)象表基于某種對(duì)象類型創(chuàng)建。它們擁有非對(duì)象表所沒(méi)有的特殊屬性,如系統(tǒng)會(huì)為對(duì)象表的每一行生成REF(對(duì)象標(biāo)識(shí)符)。
對(duì)象表實(shí)際上是堆組織表、索引組織表和臨時(shí)表的特例,還可以包含嵌套表作為其結(jié)構(gòu)的一部分。
9)外部表(externaltable)
這些表并不存儲(chǔ)在數(shù)據(jù)庫(kù)本身中,而是放在數(shù)據(jù)庫(kù)之外,即放在平常的操作系統(tǒng)文件中。
利用外部表可以查詢數(shù)據(jù)庫(kù)之外的一個(gè)文件,就好像這個(gè)文件也是數(shù)據(jù)庫(kù)中平常的表一樣。外部表對(duì)于向數(shù)據(jù)庫(kù)加載數(shù)據(jù)最有用(外部表是非常強(qiáng)大的數(shù)據(jù)加載工具)。
Oracle10g更進(jìn)一步,還引入了一個(gè)外部表卸載功能,在不使用數(shù)據(jù)庫(kù)鏈接的情況下,這為在Oracle數(shù)據(jù)庫(kù)之間移動(dòng)數(shù)據(jù)提供了一種簡(jiǎn)單的方法。
推薦教程:《Oracle視頻教程》