記錄學習oracle的操作與原理5
Oracle表
一oracle的表的分類:
基本表:關係表,用於儲存永久資料
臨時表:一般由系統使用,存放某一特定會話中的資料,如查詢的結果,回退的資料
按索引組織的表:按照主關鍵字進行資料排序儲存的表
外部表:資料儲存在oracle資料庫外部的檔案中,可讀,不可更新
物件表與巢狀表:支援面向物件操作的資料表。【物件表:採用抽象資料型別來定義表,巢狀表:一個表可以被嵌入到另一個表中】
開發人員常用的表:基本表/按索引組織的表/物件表與巢狀表儲存使用者永久資料
關係/基本表又分三種:
規則表:普通的關係表,其中資料按自然順序儲存,mysql只有基本表,而且基本表裡只有規則表
分割槽表:對資料量大,併發訪問要求高的表可分割槽儲存,
簇表:簇中各表資料共享儲存快(按關鍵字儲存到一起),可顯著改善多表查詢的效能
其中分割槽表和簇表是oracle對mysql的一種提高,用於解決資料量大,多表查詢的問題
其中物件表與巢狀表是oracle對面向物件的一種支援
二Oracle資料型別
char:<=2kb
vachar2:<=4kb
long:可變長字元型別,<=2GB
clob:大字串物件型別
-----------------------------------------------
date:固定長度的日期型別 7b
/timestamp:
-------------------------------------------
number:可存放實型和整型
-------------------------------------------
raw:可變長二進位制資料型別 ,<=4kb
long raw:<=2GB
blob:大二進位制物件型別<=4GB
-----------------------------------
三oracle如何建立基本表?
規則表
不能使用oracle的保留字作為表名,MySQL就可以用mysql的保留字作為表名,相比之下oracle顯得更合理一些,因為有的時候
在mysql下真的使用了保留字作為表名,會帶來很多的麻煩。。。。。。我曾經就在mysql中將order作為表名,因為這個我找了8個多小時的bug!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(1)create table建立表
(2)利用查詢建立表 as
其中oracle資料庫在建表時有一個可選的引數---儲存引數,用來控制表的空間佔用情況,(指定該表屬於哪個表空間,該表佔用多大的空間)
參照完整性體現在當刪除父記錄時級聯子記錄的對應情況
cascade:表示當刪除父記錄時,級聯刪除子記錄
set null:表示當刪除父記錄時,對影響到的子記錄的外來鍵置為null
no action:表示當刪除父記錄時,子記錄不做變化
restrict:表示若有子記錄和要刪除的父記錄對應,那麼不允許刪除該父記錄
簇表
一個簇由共享相同資料塊的一組表組成,簇將不同表的相關的行一起儲存到相同的資料塊,使用簇可以減少磁碟i/o的次數,
什麼樣的表可使用簇呢?(1)表主要用於查詢,表不總被插入/更改,(2)表中的記錄經常被連線查詢
建立簇表
(1)建立簇
(2)基於該簇建立簇表
(3)在資料插入之前,必須先建立簇索引
分割槽表
實現快速存取又大量資料的表的方法時建立和使用分割槽表和分割槽索引
四oracle如何建立按索引組織的表?
按索引組織的表,資料按主鍵排序儲存在B-樹索引組織中,
當執行必須基於主鍵的查詢且相關的少量欄位經常要一起獲取的應用時,採用按索引組織的表
五oracle如何建立外部表?
oracle允許以只讀的方式訪問外部表中的資料,外部表是指不再資料庫中的表
六oracle如何建立物件表和巢狀表?
物件表
oracle已不再是傳統的資料庫系統,對物件型別提供了支援,發展為物件關係型資料庫系統、
建立物件表
(1)建立物件型別
(2)使用物件型別建立表
巢狀表
巢狀表是通過表型別進行定義的