Oracle SQL Plus 命令收集

來源:互聯網
上載者:User

Oracle的sql*plus是與oracle進行互動的用戶端工具。在sql*plus中,可以運行sql*plus命令與sql*plus語句。
我們通常所說的DML、DDL、DCL語句都是sql*plus語句,它們執行完後,都可以儲存在一個被稱為sql buffer的記憶體地區中,並且只能儲存一條最近執行的sql語句,我們可以對儲存在sql buffer中的sql 語句進行修改,然後再次執行,sql*plus一般都與資料庫打交道。

除了sql*plus語句,在sql*plus中執行的其它語句我們稱之為sql*plus命令。它們執行完後,不儲存在sql buffer的記憶體地區中,它們一般用來對輸出的結果進行格式化顯示,以便於製作報表。
下面就介紹一下一些常用的sql*plus命令:

1)無登入進入SQL命令列狀態
>sqlplus /nolog
SQL>


2)以指定帳號登入資料庫
>sqlplus [使用者名稱]/[使用者密碼]@[本地服務名]

>sqlplus [使用者名稱]/[使用者密碼]@[伺服器IP]:[伺服器連接埠,通常為1521]/[SID]
如果帳號是sysdba,命令列需增加參數 as sysdba,如
>sqlplus [使用者名稱]/[使用者密碼]@[本地服務名] as sysdba


3)執行SQL指令檔
SQL>start [sql檔案]

SQL>@ [sql檔案]


4)重新運行上一次啟動並執行sql語句
SQL>/


5)將顯示的內容輸出到指定檔案
SQL> SPOOL [檔案名稱]
在螢幕上的所有內容都包含在該檔案中,包括你輸入的sql語句。
如要關閉spool輸出,運行如下命令:
SQL> SPOOL OFF
只有關閉spool輸出,才會在輸出檔案中看到輸出的內容。


6)顯示一個表的結構
SQL> desc table_name


7)顯示當前環境變數的值:
SQL> Show all


8)顯示當前在建立函數、預存程序、觸發器、包等對象的錯誤資訊
SQL> Show error
當建立一個函數、預存程序等出錯時,變可以用該命令查看在那個地方出錯及相應的出錯資訊,進行修改後再次進行編譯。


9)顯示初始化參數的值:
SQL> show PARAMETERS [parameter_name]


10) 顯示資料庫的版本:
SQL> show REL[EASE]


11)顯示SGA的大小
SQL> show SGA


12)顯示當前的使用者名稱
SQL> show user


13)建立使用者並付許可權
SQL> create user [使用者名稱] identified by [密碼] default tablespace [預設的資料表空間名];
SQL> grant connect,resource to [使用者名稱];
或SQL> grant create session, create table to [使用者名稱];
connect只有create session許可權,這是串連資料庫的基本許可權;resource是開發人員許可權,至於其中包含的內容可以查詢系統資料表中的具體內容:
SQL> select * from role_sys_privs where role='RESOURCE';
resource一般包括如下許可權:
 CREATE SEQUENCE
 CREATE TRIGGER
 CREATE CLUSTER
 CREATE PROCEDURE
 CREATE TYPE
 CREATE OPERATOR
 CREATE TABLE
 CREATE INDEXTYPE
如果要修改密碼,則運行如下命令:
SQL> alert user [使用者名稱] identified by [新密碼];


14)建立使用者並付許可權
SQL> drop user [使用者名稱] cascade;
如果該urer剛建立沒有表等對象,可以使用drop user命令刪除,否則要使用drop user cascade命令刪除,此時會將該使用者擁有的對象一同刪除。


15)常用函數
sysdate -- 當前日期時間
lower(utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING =>  '888888'))) -- md5加密
concat('a','b') -- 合并兩個字串
'a' || 'b' || 'c' -- 合并多個字串
to_date('2011-01-01 20:28:03','YYYY-MM-DD HH24:MI:SS') -->字串轉換為date類型,參考ORACLE中date類型欄位的處理 見
to_char(t.create_date,'YYYY-MM-DD HH24:MI:SS') -->日期轉換為字串


16) 一些特殊的表的查詢
尋找指定使用者的所有表(注意使用者名稱用大寫):select * from all_tables where OWNER = '【USERNAME】';
      結果中列TABLESPACE_NAME的值為資料表空間的名稱
尋找指定表的所有約束:select * from all_constraints where TABLE_NAME = '【TABLE_NAME】';
尋找指定表的所有外鍵:select * from all_constraints where TABLE_NAME = '【TABLE_NAME】' and CONSTRAINT_TYPE = 'R';
       對於CONSTRAINT_TYPE的值,R -- 外鍵、P -- 主鍵、U -- 唯一性限制式、C -- 一般約束(如某列不可為空)
尋找指定使用者的所有預存程序和函數:select * from all_procedures where OWNER = '【USERNAME】';
       地中OBJECT_TYPE列的值為FUNCTION代表函數,值為PROCEDURE代表格儲存體過程
指定索引:select /*+ index(tablename index_name)*/ from tablename


特別注意:
1)用SQL Plus命令列運行sql檔案,建表語句內不能有空行,否則報語法錯誤
2)用SQL Plus命令列運行sql檔案,檔案內若包含中文,檔案格式必須為ANSI(GBK),設為UTF-8會中文亂碼

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.