【學習】SQL基礎-013-DDL

Kevin_Weig發表於2018-04-09
1、資料庫物件
    表
    檢視:儲存在資料字典中的一條 select 語句
    序列
    同義詞
    索引

2、保留字
     select * from v$reserved_words where reserved='Y';

3、建立表
      前提:
          有CREATE TABLE許可權,有空間,一個表最多1000個列 
 
      臨時表級別 GLOBAL TEMPORARY:
        事務級 ON COMMIT DELETE ROWS
        會話級 ON COMMIT PRESERVE ROWS
         語法
          CREATE GLOBAL TEMPORARY TABLE ....
           (...
           ) 
           ON COMMIT PRESERVE ROWS;
  
     語法:
       create table dept01
          ( deptno number(2),
            dname varchar2(14)
          );

     default值:create table test (col1 number,col2 date default sysdate);
     資料型別:字元、數字、日期、大物件等



      資料字典
           user_tables
           user_objects:物件的名字、ID和型別
           user_catalog:檢視使用者擁有的表、檢視、同義詞、序列

      使用CAST的方式建立新表
            源表上列上的 not null(非空)約束也將應用於新表,但 primary key(主鍵)、 unique(唯一)、 foreigne key(外來鍵)約束 以及 隱式的 not null(主鍵列)約束都不會被繼承;
            只建立表結構的空表 create table test as select * from emp where 1=2;

4、修改表 
     add增加一列      alter table dept30 add (job varchar2(9));
    modify更改一列  alter table dept30 modify (ename varchar2(15));
    drop丟棄一列  
            alter table dept30 drop column job;
            刪除有約束的列加cascade constraint     alter table ... drop column ...cascade constraint
    rename重新命名列  alter table dept30 rename column empno to id;
    set unused 標記不可用列
            alter table xxx set unused (col1,col2);
            與drop列配合使用,在業務高峰期先標記不可用,然後在業務低谷drop列   alter table xxx drop unused columns;
            不能還原
            select * from user_unused_col_tabs;

5、重新命名錶
      rename dept30 to department30;

6、截斷表
      truncate table department;
     只刪除資料,保留了表結構

     truncate與delete的區別:
        a)  delete 是 DML 語句,會產生很多 undo 資料,用於回滾( rollback),速度慢。
              delete 不會降低高水位線。 delete 可以刪除表中部分資料。
        b)  truncate 是 DDL 語句,幾乎不產生 undo 資料,不能回滾。速度快。
              truncate 會降低高水位線。 truncate 會刪除表中所有資料。

7、刪除表
     drop table dept30;
    無法回滾
    drop table purge //刪除的表不會放到回收站
    刪除有約束的表 drop table dept02 cascade constraint;

8、增加註釋
    表級別  comment on table emp is 'Employee Information';                  user_tab_comments 資料字典
    列級別  comment on column emp.deptno is 'Department Number';      user_col_comments  資料字典

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31476473/viewspace-2152709/,如需轉載,請註明出處,否則將追究法律責任。

相關文章