表名和列名的命名規則:
必須以字母開頭
必須在1-30個字符之間
只能包含A-Z,a-z,0-9,_,$,#
不能與用戶定義的其它對象重名
不能使用ORACLE的保留字
創建前具備的條件:
CREATE TABLE權限
建表時必須指定:
表名
列名,列的數據類型,最大長度
數據類型:
varchar2(size) 變長字符型(最大長為4000字符)
char(size) 定長字符型(最大2000字符)
number(p,s) 數值型
date 日期型
long 變長大字符型(最大2G)
CLOG 大字符型(最大4G)
raw 裸二進制數據(最大2000字符)
long raw 裸二進制數據(最大2G)
blob 二進制數據,最大4G
bfile 外部二進制文件,最大4G
| 類型 | 含義 | 存儲描述 | 備注 |
| CHAR | 固定長度字符串 | 最大長度2000bytes | |
| VARCHAR2 | 可變長度的字符串, | 最大長度4000bytes | 可做索引的最大長度749 |
| NCHAR | 根據字符集而定的固定長度字符串 | 最大長度2000bytes | |
| NVARCHAR2 | 根據字符集而定的可變長度字符串 | 最大長度4000bytes | |
| DATE | 日期(日-月-年) | DD-MM-YY(HH-MI-SS),經過嚴格測試,無千蟲問題 | |
| TIMESTAMP | 日期(日-月-年) | DD-MM-YY(HH-MI-SS:FF3),經過嚴格測試,無千蟲問題 | 與DATE相比較,TIMESTAMP有小數位秒信息 |
| LONG | 超長字符串 | 最大長度2G,足夠存儲大部頭著作 | |
| RAW | 固定長度的二進制數據 | 最大長度2000bytes | 可存放多媒體圖象聲音等 |
| LONG RAW | 可變長度的二進制數據 | 最大長度2G | 可存放多媒體圖象聲音等 |
| BLOB | 二進制數據 | 最大長度4G | |
| CLOB | 字符數據 | 最大長度4G | |
| NCLOB | 根據字符集而定的字符數據 | 最大長度4G | |
| BFILE | 存放在數據庫外的二進制數據 | 最大長度4G | |
| ROWID | 數據表中記錄的唯一行號 | 10bytes | ********.****.****格式,*為0或1 |
| NROWID | 二進制數據表中記錄的唯一行號 | 最大長度4000bytes | |
| NUMBER(P,S) | 數字類型 | P為整數位,S為小數位 | |
| DECIMAL(P,S) | 數字類型 | P為整數位,S為小數位 | |
| INTEGER | 整數類型 | 小的整數 | |
| FLOAT | 浮點數類型 | NUMBER(38),雙精度 | |
| REAL | 實數類型 | NUMBER(63),精度更高 |
創建語法:
create table [schema.]tablename
(column datatype [default expr] [constaint],
....)
查看表結構:
desc tablename
oracle表的類型
用戶自定義表
數據字典
oracle 自動創建的一組表
包含了數據庫的自身信息,用於管理和維護數據庫用
關於表的數據字典:
user_catalog,all_catalog,dba_catalog,
user_tables,all_tables,dba_tables,
user_tables 自已建的表
all_tables 自已可以訪問的表
dba_tables 數據庫中所有的表
如何克隆一個表
克隆整個表:
create table emp as select * from scott.emp;
克隆表結構:
create table emp2 as select * from scott.emp where 1=2;
如何查看一個表占用的磁盤空間:
dba_extents,
dba_segments
insert into emp select * from emp;
select SEGMENT_NAME,SUM(BYTES)/1024/1024
from dba_extents where SEGMENT_NAME='EMP' AND OWNER='SYS'
GROUP BY SEGMENT_NAME;
SELECTOWNER,SEGMENT_NAME,SEGMENT_TYPE,
TABLESPACE_NAME,bYTES/1024/1024
FROM DBA_SEGMENTS WHERE SEGMENT_NAME='EMP';
數據字典中更新表信息
exec dbms_stats.gather_table_stats('SCOTT','TEST');
修改表:
添加新列
alter table tablename
add (column datatype [default expr]);
刪除列:
alter table tablename
drop column colname
列改名:
alter table tablename
rename column colname to new_colname
表改名:
alter table tablename rename to new_tablename
rename test2 to test
修改列的數據類型,尺寸和默認值
alter table tablename
modify (column datatype [default values])
將列標記為不可用:
alter table tablename
set unused(column)
刪除表
drop table tablename
截斷表(刪除所有記錄,保留表結構)
truncate table tablename
表加注釋
comment on table tablename is '...注釋內容...'
列加注釋
comment on column tablename.column is '......'
示例:
--NC接口調用異常表 create table Tab_NC_Interface_Log ( objectid CHAR(36) not null, instanceid CHAR(36), contentjson NVARCHAR2(2000), contentunusual NVARCHAR2(2000), remark1 NVARCHAR2(2000), remark2 NVARCHAR2(2000), state INTEGER, nums INTEGER, method NVARCHAR2(200), workflowcode NVARCHAR2(200), activitycode NVARCHAR2(200), createtime DATE, lastmodifytime DATE, fromsys NVARCHAR2(200), tosys NVARCHAR2(200), createby CHAR(36), modifyby CHAR(36), note1 NVARCHAR2(200), note2 NVARCHAR2(200), note3 NVARCHAR2(200), note4 NVARCHAR2(200) ); comment on column Tab_NC_Interface_Log.objectid is '唯一標識'; comment on column Tab_NC_Interface_Log.instanceid is '實例表Id'; comment on column Tab_NC_Interface_Log.contentjson is '調用內容'; comment on column Tab_NC_Interface_Log.contentunusual is '異常原因'; comment on column Tab_NC_Interface_Log.remark1 is '備注1'; comment on column Tab_NC_Interface_Log.remark2 is '備注2'; comment on column Tab_NC_Interface_Log.state is '狀態'; comment on column Tab_NC_Interface_Log.nums is '調用次數'; comment on column Tab_NC_Interface_Log.method is '調用方法'; comment on column Tab_NC_Interface_Log.workflowcode is '流程模板編碼'; comment on column Tab_NC_Interface_Log.activitycode is '活動節點編碼'; comment on column Tab_NC_Interface_Log.createtime is '創建時間'; comment on column Tab_NC_Interface_Log.lastmodifytime is '最后修改時間'; comment on column Tab_NC_Interface_Log.fromsys is '來源系統(調用H3接口的系統)'; comment on column Tab_NC_Interface_Log.tosys is '調用系統(H3調用接口的系統)'; comment on column Tab_NC_Interface_Log.createby is '創建人'; comment on column Tab_NC_Interface_Log.modifyby is '最后修改人'; comment on column Tab_NC_Interface_Log.note1 is '擴展標記位1'; comment on column Tab_NC_Interface_Log.note2 is '擴展標記位2'; comment on column Tab_NC_Interface_Log.note3 is '擴展標記位3'; comment on column Tab_NC_Interface_Log.note4 is '擴展標記位4'; comment on table Tab_NC_Interface_Log is 'NC接口調用異常表'; commit; select * from Tab_NC_Interface_Log
與注釋相關的數據字典
all_col_comments
user_col_comments
all_tab_comments
user_tab_comments
關於表結構的數據字典:
dba_tab_columns
使用空值和默認值
隱式:插入記錄時,不指定字段,不指定值
顯示:插入記錄時,空值字段填null,默認值字段填default
參:http://blog.sina.com.cn/s/blog_690d63f80100jiq4.html
http://www.jb51.net/article/47130.htm
