常用SQL語句收集

1.刪除表
  select 'drop table ' || table_name || ' purge;'
  from user_tables
  where length(table_name) <= 4;

    刪除帶約束的表
    Drop table 表名 cascade  constraints;

2.查詢view&同義詞
   --說明:可以根據視圖的text_length值設定set long 的大小
   set long 2000;               
   select * from user_views where view_name='MY_VIEW_NAME'; 
   select * from all_views where view_name='MY_VIEW_NAME';
   select * from user_synonyms;

3.臨時表
    create global temporary table xay_temp as select * from xay;
                on commit preserve rows/on commit delete rows
        在Oracle中,可以創建以下兩種臨時表:
   a 會話特有的臨時表:
        create global temporary table () on commit preserve rows;
        會話指定,當中斷會話時ORACLE將截斷表

   b 事務特有的臨時表:
        create global temporary table () on commit delete rows;
        事務指定,每次提交後ORACLE將截斷表(刪除全部行)
   c 說明
       臨時表只在當前連接內有效
     臨時表不建立索引,所以如果數據量比較大或進行多次查詢時,不推薦使用
     數據處理比較複雜的時候時錶快,反之視圖快點

4.填加註釋
    comment on table 表名 is  '註釋';
    comment on column 表名.列名 is '註釋';

5. ROWNUM
    按設定排序的行的序號
    SELECT * FROM emp WHERE ROWNUM < 10 ;

6. ROWID
    返回行的物理地址
    SELECT ROWID, ename FROM emp  WHERE deptno = 20 ;

7. 複製表
   create table table_name [logging|nologging] as subquery

8.刪除字段
     alter table table_name drop column column_name [Cascade Constrains];

9.移動表空間(move tablespace)
    ALTER TABLE TABLE_NAME MOVE TABLESPACE_NAME;
    ALTER INDEX INDEX_NAME REBUILD TABLESPACE TABLESPACE_NAME;

10.表改名:
    rename xsb1 to xsb2;

11.改表的列名
ALTER TABLE UserName.TabName
RENAME COLUMN SourceColumn TO DestColumn

12.刪除列
ALTER TABLE UserName.TabName
SET UNUSED (ColumnName) CASCADE CONSTRAINTS
ALTER TABLE UserName.TabName
DROP (ColumnName) CASCADE CONSTRAINTS

13.失效OBJECT
  COLUMN object_name FORMAT A30;
  SELECT owner, object_type, object_name, status
  FROM dba_objects
  WHERE status = 'INVALID'
  ORDER BY owner, object_type, object_name;

  重新編譯:
  SELECT 'ALTER '||OBJECT_TYPE||' '||OWNER||'.'||OBJECT_NAME||' COMPILE;',OWNER
  FROM ALL_OBJECTS
  WHERE STATUS='INVALID'
  ORDER BY OWNER

14.如何查看某個表給哪些用戶授權
    SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = 'table_name';

15.truncate表分區
  alter table test truncate partition p20090531;

16.查表分區
select partition_name from DBA_TAB_PARTITIONS
where table_name ='table_name'
and table_owner='table_owner'
order by partition_name;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章