Oracle 建表時LOB欄位語法
直接建立一張帶有LOB欄位的表
SQL> create table TEST
(
N_MESSAGE_ID NUMBER(10,0) not null,
N_EVENT_ID NUMBER(10,0) not null,
C_EVENT_VALUE CLOB,
C_EVENT_TYPE VARCHAR2(50),
N_RECIPIENT_ID NUMBER(5,0) not null,
N_IS_RESENT NUMBER(1) default 0,
D_PROCESSING_END_DATE TIMESTAMP,
N_EJB_VERSION_ID NUMBER(10),
D_TIMESTAMP TIMESTAMP(9) WITH TIME ZONE
);
Table created.
查詢建立後的表的LOB欄位名稱和LOB索引名稱,發現資料庫分配了SYS開頭的名稱
SQL> select owner,table_name,column_name,segment_name,tablespace_name,index_name from dba_lobs where table_name = 'TEST' and owner = 'SCOTT';
OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME INDEX_NAME
------------ -------------------- -------------------- ------------------------- -------------------- ---------------------------
SCOTT TEST C_EVENT_VALUE SYS_LOB0000016805C00003$$ USER_OTA4G SYS_IL0000016805C00003$$
從資料庫規範的角度出發,使用下面的語法進行表的建立
SQL> create table TEST
(
N_MESSAGE_ID NUMBER(10,0) not null,
N_EVENT_ID NUMBER(10,0) not null,
C_EVENT_VALUE CLOB,
C_EVENT_TYPE VARCHAR2(50),
N_RECIPIENT_ID NUMBER(5,0) not null,
N_IS_RESENT NUMBER(1) default 0,
D_PROCESSING_END_DATE TIMESTAMP,
N_EJB_VERSION_ID NUMBER(10),
D_TIMESTAMP TIMESTAMP(9) WITH TIME ZONE
)
tablespace "USERS"
lob
(C_EVENT_VALUE) --LOB欄位名稱
store as
LOB_SEGMENT_TEST --LOB段(LOB Segment)的名稱,如果不指定則使用資料庫分配的SYS_開頭的名稱
(tablespace "USERS" INDEX INDX_LOB_TEST (tablespace "USERS" )); --INDEX_LOB_TEST是LOB索引的名稱,如果不指定則使用資料庫分配的SYS_開頭的名稱,兩個表空間分別是LOB段表空間和索引表空間的名稱
Table created.
SQL> select owner,table_name,column_name,segment_name,tablespace_name,index_name from dba_lobs where table_name = 'TEST' and owner = 'SCOTT';
OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME INDEX_NAME
------------ -------------------- -------------------- ------------------------- -------------------- ---------------------------
SCOTT TEST C_EVENT_VALUE LOB_SEGMENT_TEST USERS INDX_LOB_TEST
SQL> create table TEST
(
N_MESSAGE_ID NUMBER(10,0) not null,
N_EVENT_ID NUMBER(10,0) not null,
C_EVENT_VALUE CLOB,
C_EVENT_TYPE VARCHAR2(50),
N_RECIPIENT_ID NUMBER(5,0) not null,
N_IS_RESENT NUMBER(1) default 0,
D_PROCESSING_END_DATE TIMESTAMP,
N_EJB_VERSION_ID NUMBER(10),
D_TIMESTAMP TIMESTAMP(9) WITH TIME ZONE
);
Table created.
查詢建立後的表的LOB欄位名稱和LOB索引名稱,發現資料庫分配了SYS開頭的名稱
SQL> select owner,table_name,column_name,segment_name,tablespace_name,index_name from dba_lobs where table_name = 'TEST' and owner = 'SCOTT';
OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME INDEX_NAME
------------ -------------------- -------------------- ------------------------- -------------------- ---------------------------
SCOTT TEST C_EVENT_VALUE SYS_LOB0000016805C00003$$ USER_OTA4G SYS_IL0000016805C00003$$
從資料庫規範的角度出發,使用下面的語法進行表的建立
SQL> create table TEST
(
N_MESSAGE_ID NUMBER(10,0) not null,
N_EVENT_ID NUMBER(10,0) not null,
C_EVENT_VALUE CLOB,
C_EVENT_TYPE VARCHAR2(50),
N_RECIPIENT_ID NUMBER(5,0) not null,
N_IS_RESENT NUMBER(1) default 0,
D_PROCESSING_END_DATE TIMESTAMP,
N_EJB_VERSION_ID NUMBER(10),
D_TIMESTAMP TIMESTAMP(9) WITH TIME ZONE
)
tablespace "USERS"
lob
(C_EVENT_VALUE) --LOB欄位名稱
store as
LOB_SEGMENT_TEST --LOB段(LOB Segment)的名稱,如果不指定則使用資料庫分配的SYS_開頭的名稱
(tablespace "USERS" INDEX INDX_LOB_TEST (tablespace "USERS" )); --INDEX_LOB_TEST是LOB索引的名稱,如果不指定則使用資料庫分配的SYS_開頭的名稱,兩個表空間分別是LOB段表空間和索引表空間的名稱
Table created.
SQL> select owner,table_name,column_name,segment_name,tablespace_name,index_name from dba_lobs where table_name = 'TEST' and owner = 'SCOTT';
OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME INDEX_NAME
------------ -------------------- -------------------- ------------------------- -------------------- ---------------------------
SCOTT TEST C_EVENT_VALUE LOB_SEGMENT_TEST USERS INDX_LOB_TEST
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2134092/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中lob欄位Oracle
- Oracle 帶LOB欄位的表的遷移Oracle
- ORACLE LOB大欄位維護Oracle
- 【LOB】使用資料泵時 LOB 欄位存放位置
- lob欄位表空間遷移
- 移動一個帶有lob欄位的表到另外一個表空間的語法
- 帶有LOB欄位的表遷移
- pl/sql dev建表加欄位時建的欄位名都帶了“”SQLdev
- oracle刪除表欄位和oracle表增加欄位Oracle
- ORACLE 10G下LOB_DATA欄位型別佔滿臨時表空間問題Oracle 10g型別
- Oracle lob載入bfile資料到blob欄位中Oracle
- LOB欄位EMPTY_LOB和NULL的區別Null
- LOB欄位資料清理 - 更新為null後move lobNull
- 【LOB】Oracle lob管理常用語句Oracle
- Oracle中檢視所有表和欄位以及表註釋.欄位註釋Oracle
- Oracle資料庫高水位釋放——LOB欄位空間釋放Oracle資料庫
- 遷移帶LOB等大欄位資料到非預設表空間
- oracle 修改表欄位的長度Oracle
- Oracle-給表刪除欄位Oracle
- 釋放大資料量的lob欄位空間大資料
- 小議lob欄位結構和儲存
- LOB欄位在Oracle中的存放方式。Oracle
- 建表時的約束的語法在informix和oracle中的差異ORMOracle
- lob欄位的ora-1555處理方案
- oracle中如何指定表欄位自增Oracle
- laravel sync()同步時修改中間表欄位Laravel
- 查詢oracle表的資訊(表,欄位,約束,索引)Oracle索引
- 含LONG型別欄位的表無法MOVE型別
- DatabaseLink不支援merge和lob欄位查詢Database
- lob欄位型別轉換ora-22858型別
- 一次PLSQL處理LOB欄位的優化SQL優化
- Oracle-給表增加欄位和註釋Oracle
- oracle:聯表更新多個欄位的值Oracle
- oracle大表新增欄位default經驗分享Oracle
- oracle檢視該使用者的所有表名字、表註釋、欄位名、欄位註釋、是否為空、欄位型別Oracle型別
- 【ORA-01555】Oracle LOB欄位匯出 報錯 ORA-01555Oracle
- oracle 時間欄位自動更新問題Oracle
- SQL新增表欄位SQL