oracle中用SQL語句創建和管理表


表名和列名的命名規則
 必須以字母開頭
 必須在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 ********.****.****格式,*01
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM