Oracle建表關鍵字解釋

2021-08-30 12:01:06 字數 3300 閱讀 5300

引自:

建表一般來說是個挺簡單的事情,但是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.]table

(column  datatype [, column  datatype] … )

[tablespace  tablespace]

[pctfree  integer]

[pctused  integer]

[initrans  integer]

[maxtrans  integer]

[storage  storage-clause]

[logging | nologging]

[cache | nocache] ];

schema:表的所有者

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 結構...