常用的sql*plus命令:

bluelight發表於2011-01-11
檢視當前使用的資料庫例項:

select name from V$database;

***************************************************

切換兩個資料庫例項

在sqlplus裡connect username/password@sid

或host set ORACLE_SID=sid

或cmd裡set ORACLE_SID=sid

或修改登錄檔裡ORACLE_SID項

***************************************************

執行一個SQL指令碼檔案

SQL>start file_name

SQL>@ file_name

我們可以將多條sql語句儲存在一個文字檔案中,這樣當要執行這個檔案中的所有的sql語句時,用上面的任一命令即可,這類似於dos中的批處理。

***************************************************

對當前的輸入進行編輯

SQL>edit

***************************************************

重新執行上一次執行的sql語句

SQL>/

將顯示的內容輸出到指定檔案

SQL> SPOOL file_name

在螢幕上的所有內容都包含在該檔案中,包括你輸入的sql語句。

關閉spool輸出

SQL> SPOOL OFF

只有關閉spool輸出,才會在輸出檔案中看到輸出的內容。

***************************************************

COL命令:

主要格式化列的顯示形式。

該命令有許多選項,具體如下:

COL[UMN] [{ column|expr} [ option ...]]

Option選項可以是如下的子句:

ALI[AS] alias

CLE[AR]

FOLD_A[FTER]

FOLD_B[EFORE]

FOR[MAT] format

HEA[DING] text

JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}

LIKE { expr|alias}

NEWL[INE]

NEW_V[ALUE] variable

NOPRI[NT]|PRI[NT]

NUL[L] text

OLD_V[ALUE] variable

ON|OFF

WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]

1). 改變預設的列標題

COLUMN column_name HEADING column_heading

For example:

Sql>select * from dept;

DEPTNO DNAME LOC

[@more@]設定一行可以容納的字元數

SQL> SET LIN[ESIZE] {80|n}

如果一行的輸出內容大於設定的一行可容納的字元數,則折行顯示。

設定頁與頁之間的分隔

SQL> SET NEWP[AGE] {1|n|NONE}

當set newpage 0 時,會在每頁的開頭有一個小的黑方框。

當set newpage n 時,會在頁和頁之間隔著n個空行。

當set newpage none 時,會在頁和頁之間沒有任何間隔。

設定一頁有多少行數

SQL> SET PAGES[IZE] {24|n}

如果設為0,則所有的輸出內容為一頁並且不顯示列標題

是否顯示用DBMS_OUTPUT.PUT_LINE包進行輸出的資訊。

SQL> SET SERVEROUT[PUT] {ON|OFF}

在編寫過程時,我們有時會用dbms_output.put_line將必要的資訊輸出,以便對過程進行除錯,只有將serveroutput變數設為on後,資訊才能顯示在螢幕上。

當SQL語句的長度大於LINESIZE時,是否在顯示時擷取SQL語句。

SQL> SET WRA[P] {ON|OFF}

當輸出的行的長度大於設定的行的長度時(用set linesize n命令設定),當set wrap on時,輸出行的多於的字元會另起一行顯示,否則,會將輸出行的多於字元切除,不予顯示。

***************************************************

修改sql buffer中的當前行中,第一個出現的字串

C[HANGE] /old_value/new_value

SQL> l

1* select * from dept

SQL> c/dept/emp

1* select * from emp

編輯sql buffer中的sql語句

EDI[T]

顯示sql buffer中的sql語句,list n顯示sql buffer中的第n行,並使第n行成為當前行

L[IST] [n]

在sql buffer的當前行下面加一行或多行

I[NPUT]

將sql buffer中的sql語句儲存到一個檔案中

SAVE file_name

將一個檔案中的sql語句匯入到sql buffer中

GET file_name

再次執行剛才已經執行的sql語句

RUN or /

在sql*plus中連線到指定的資料庫

CONNECT

***************************************************

將一個資料庫中的一些資料複製到另外一個資料庫(如將一個表的資料複製到另一個資料庫)

COPY {FROM database | TO database | FROM database TO database}

{APPEND|CREATE|INSERT|REPLACE} destination_table

[(column, column, column, ...)] USING query

sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST

create emp_temp

USING SELECT * FROM EMP

***************************************************

顯示當前環境變數的值:

Show all

顯示當前在建立函式、儲存過程、觸發器、包等物件的錯誤資訊

Show error

當建立一個函式、儲存過程等出錯時,變可以用該命令檢視在那個地方出錯及相應的出錯資訊,進行修改後再次進行編譯。

顯示初始化引數的值:

show PARAMETERS [parameter_name]

顯示資料庫的版本:

show REL[EASE]

5) . 顯示SGA的大小

show SGA

6). 顯示當前的使用者名稱

show user

SQL>SET DEFINE ON

***************************************************

問什麼在修改大量的行時,我的指令碼會變得很慢?

當透過PL/SQL塊修改一個表中的許多行時,你會建立在表上建立一個cursor,但是隻有在你關閉cursor時,才會釋放ROLLBACK SEGMENT,這樣,當cursor仍然開啟時,修改過程會變慢,這是因為資料庫不得不搜尋大量的rollback segment以便於維護讀一致性。為了避免這樣情況,試著在表上加一個標誌欄位來描述該行是否已經被修改,然後關閉該cursor,然後再開啟該cursor。每次可以修改5000行.

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

相關文章