引自:
建表一般來說是個挺簡單的事情,但是oracle的建表語句有很多可選的引數,有些我們可能平時不太用,用的時候又不知道怎麼用,這裡就寫乙個較完整的建表的例子:
create table banping解釋說明如下:(id number(5)
constraint banping_id_pk primary key,
last_name varchar2(10)
constraint banping_last_name_nn not null,
first_name varchar2(10) not null unique,
userid varchar2(8)
constraint banping_userid_uk unique,
start_date date default sysdate,
title varchar2(10),
dept_id number(7)
constraint banping_dept_id_fk references dept(id),
salary number(11,2),
user_type varchar2(4)
constraint banping_user_type_ck check
(user_type in('in','out')),
constraint banping_uk_title unique (title,salary)
)initrans 1 maxtrans 255
pctfree 20 pctused 50
storage( initial 1024k next 1024k pctincrease 0 minextents 1 maxextents 5)
tablespace data
;
語法
create table [schema.]tableschema:表的所有者(column datatype [, column datatype] … )
[tablespace tablespace]
[pctfree integer]
[pctused integer]
[initrans integer]
[maxtrans integer]
[storage storage-clause]
[logging | nologging]
[cache | nocache] ];
table:表名
column:欄位名
datatype:欄位的資料型別
tablespace:表所在的表空間
pctfree:為了行長度增長而在每個塊中保留的空間的量(以佔整個空間減去塊頭部後所剩餘空間的百分比形式表示),當剩餘空間不足pctfree時,不再向該塊中增加新行。
pctused:在塊剩餘空間不足pctfree後,塊已使用空間百分比必須小於pctused後,才能向該塊中增加新行。
initrans:在塊中預先分配的事務項數,預設值為1
maxtrans:限定可以分配給每個塊的最大事務項數,預設值為255
storage:標識決定如何將區分配給表的儲存子句
logging:指定表的建立將記錄到重做日誌檔案中。它還指定所有針對該錶的後續操作都將被記錄下來。這是預設設定。
nologging:指定表的建立將不被記錄到重做日誌檔案中。
cache:指定即使在執行全表掃瞄時,為該錶檢索的塊也將放置在緩衝區快取記憶體的lru列表最近使用的一端。
nocache:指定在執行全表掃瞄時,為該錶檢索的塊將放置在緩衝區快取記憶體的lru列表最近未使用的一端。
storage子句:
initial:初始區的大小
next:下乙個區的大小
pctincrease:以後每個區空間增長的百分比
minextents:段中初始區的數量
maxextents:最大能擴充套件的區數
如果已為表空間定義了minimum extent,則表的區大小將向上捨入為minimum extent值的下乙個較高的倍數。
外來鍵關聯的表dept的id列必須是唯一的或者是自身的主鍵,如不是可以用以下語句填加:
alter table dept add constraint dept_id_pk primary key(id)塊空間使用引數可用來控制對資料段和索引段空間的使用:
控制併發性引數:
initrans和maxtrans指定初始的和最大的事務位置數,這些事務位置在索引塊或者資料塊內建立。事務位置用來儲存在某一事件點上正在對 塊進行更改的事務的資訊。乙個事務只占用乙個事務位置,即使它正在更改多行或者多個索引條目。 initrans對資料段的預設值為1,對索引段的預設值為2,以保證最低程度的併發。例如,如果initrans設為3,則保證至少3個事務可以同時對 塊進行更改。如果需要,也可以從塊空閒空間內分配其它事務位置,以允許更多的事務併發修改塊內的行。 maxtrans的預設值為255,它設定可更改資料塊或者索引塊的併發事務數的限制。設定後,該值限制事務位置對空間的使用,從而保證塊內有足夠的空間 供行或者索引資料使用。
控制資料空間使用的引數:
資料段的pctfree指定每個資料塊中保留空間的百分比,用於因更新塊內的行而導致的增長。pctfree的預設值為10%。 資料段的pctused代表oracle伺服器試圖為表內的每個資料塊維持的已用空間的最低百分比。如果乙個塊的已用空間低於pctused,則將這塊放 回到空閒列表中。段的空閒列表示容納將來所插入內容的可選擇塊的列表。根據預設,每個段在建立時都有乙個空閒列表。pctused的預設值為40%。 pctfree和pctused都按可用資料空間百分比來計算,可用資料空間是從整個塊大小減去塊頭空間後剩餘的塊空間。 塊空間使用引數只能針對段指定,而不能在表空間級別設定。
下面步驟介紹對pctfree=20且pctused=40的資料段如何管理塊內空間:
1.向塊中插入行,直到塊內的空閒空間小等於20%。當行所占用的塊內資料空間達到80%(100-pctfree)或者更多後,即無法再向該塊進行插入。
2.剩餘的20%可在行大小增長時使用。例如,更新初始為null的列並分配乙個值。這樣,由於更新,塊使用率可能超過80%。
3.如果由於更新,刪除了塊內的行或者行大小減少,塊使用率可能跌至80%以下。但是,仍然無法向塊中插入,直到塊使用率跌至pctused以下,在本例中pctused為40%。
4.當塊使用率跌至pctused以下後,該塊可用於插入。隨著向塊內插入行,塊使用率增長,重複從步驟1開始的迴圈。
關鍵字static解釋
1.全域性靜態變數 在全域性變數前加上關鍵字static,全域性變數就定義成乙個全域性靜態變數.靜態儲存區,在整個程式執行期間一直存在。初始化 未經初始化的全域性靜態變數會被自動初始化為0 自動物件的值是任意的,除非他被顯式初始化 作用域 全域性靜態變數在宣告他的檔案之外是不可見的,準確地說是從定義...
程式設計 關鍵字解釋
一 volatile 推薦乙個定義為volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。精確地說就是,優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存在暫存器裡的備份。下面是volatile變數的幾個例子 1 並行裝置的硬體暫存器...
ORACLE 常用關鍵字
1.siblings siblings 是兄弟姐妹的意思,那麼order siblings by的意思就是在兄弟姐妹之間的排序,和order by所表示的含義絕對不同,針對樹狀sql,我覺得order siblings by更有意義,樹狀sql查詢出來的結果本身就是按照層次 hierarchy 結構...