Oracle表概述

Oracle表的類型

heap table

數據以堆的方式管理

index organized tables

表按索引結構存儲,強制要求行本身有某種物理順序,數據要根據主鍵有序的存儲

index clusters tables

cluster是指一個或多個表組成的組,這些表物理的存儲在相同的數據庫塊上,有相同聚簇鍵值的所有行會相鄰地物理存儲;

hash clusters tables

這些表類似於聚簇表,但是不使用B樹索引聚簇鍵來定位數據,散列聚簇將鍵散列到聚簇上,從而找到數據應該在哪個數據庫塊上;

partitioned tables

 

stored hash clustered table

有序散列聚簇表是oracle10g中新增的,它結合了散列聚簇表的某些方面,同時兼有IOT的一些方面;

nested table

 

temporary table

 

 

 

--建立一張表

CREATE TABLE emp

(empno NUMBER(4),--如果插入有小數,將會4舍5入

 ename VARCHAR2(10),

 hiredate DATE DEFAULT TRUNC(SYSDATE),

 sal NUMBER(7,2),

 comm NUMBER(7,2) DEFAULT 0.03

);

 

通過子查詢創建表

--通過子查詢創建表

CREATE TABLE emp_copyAS SELECT * FROM emp;

通過這種方式創建的表所有的非空約束和檢查約束將存在,而主鍵,唯一鍵和外鍵約束將丟失;這是因爲後面三種約束創建的同時需要索引;

還可以通過聯合查詢來創建新表

CREATE TABLE emp_deptAS SELECT

last_nameename,dapartment_name dname,ROUND(SYSDATE-hire_date) service

FROM employeesNATURAL JOIN departments ORDER BY dname,ename;

--只拷貝表結構,但是不插入原表中的數據

CREATE TABLE emp_strcAS SELECT * FROM employees WHERE 1=2;

 

改變表結構

--增加一列

ALTER TABLE empADD(job_id NUMBER);

--修改一列

ALTER TABLE empMODIFY (commission_pct NUMBER(4,2) DEFAULT 0.05);

--刪除一列

ALTER TABLE emp DROPCOLUMN commission_pct

--使某一列失效

ALTER TABLE emp SETUNUSED COLUMN job_id;

--重命名列名

ALTER TABLE empRENAME COLUMN hire_date TO recruited;

--將某個表變爲只讀

ALTER TABLE emp READ ONLY;--DML操作會失敗,但是刪除表的操作依然 可以成功

--刪除置爲無效的列

ALTER TABLE tablenameDROP UNUSED COLUMNS;

--刪除表

DROP TABLEtablename;--必須爲空表,表沒有依賴關係

--清空表的內容

TRUNCATE TABLEtablename;

 

創建和使用臨時表

臨時表對於所有的sessions都是可見的,但是其中的每一行都屬於插入該行的session

--創建臨時表

CREATE GLOBALTEMPORARY TABLE temp_tab_name

(COLUMN datatype,COLUMN datatype)

[ON COMMIT {DELETE |PRESERVE} ROWS];

 

在臨時表上執行SQL操作要比在正式表上執行快,原因如下:

1、temporary tables are not segments inpermanent tablespaces;他們存在於每個session的PGA中;如果超出PGA的容量,會將數據轉移到用戶的臨時表空間中,臨時表空間的IO要快很多,原因是它不經過database buffer cache;它是通過會話服務器進程和磁盤之間進行的;

2、第二個塊的原因是對於臨時表的DML操作不會產生redo記錄;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章