? ? ? ?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
腳本文件
?
SQL>start?file_name?
SQL>@?file_name?
我們可以將多條
sql
語句保存在一個文本文件中,這樣當要執行這個文件中的所有的
sql
語句時,用上面的任一命令即可,這類似于
dos
中的批處理。
?
??
2.?
對當前的輸入進行編輯
?
SQL>edit?
??
3.?
重新運行上一次運行的
sql
語句
?
SQL>/?
??
4.?
將顯示的內容輸出到指定文件
?
SQL>?SPOOL?file_name?
???
在屏幕上的所有內容都包含在該文件中,包括你輸入的
sql
語句。
?
??
5.?
關閉
spool
輸出
?
SQL>?SPOOL?OFF?
???
只有關閉
spool
輸出,才會在輸出文件中看到輸出的內容。
?
??
6
.顯示一個表的結構
?
SQL>?desc?table_name?
??
7.?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?
----------?----------------------------?---------?
?????????10?ACCOUNTING???????????????????NEW?YORK?
sql>col??LOC?heading?location?
sql>select?*?from?dept;?
????DEPTNO?DNAME????????????????????????location?
---------?----------------------------?-----------?
????????10?ACCOUNTING???????????????????NEW?YORK?
??
2).?
將列名
ENAME
改為新列名
EMPLOYEE?NAME
并將新列名放在兩行上:
?
Sql>select?*?from?emp?
Department??name???????????Salary?
----------?----------?----------?
?????????10?aaa????????????????11?????????
SQL>?COLUMN?ENAME?HEADING?’Employee|Name’?
Sql>select?*?from?emp?
????????????Employee?
Department??name???????????Salary?
----------?----------?----------??
?????????10?aaa????????????????11?
note:?the?col?heading?turn?into?two?lines?from?one?line.?
??
3).?
改變列的顯示長度:
?
FOR[MAT]?format?
Sql>select?empno,ename,job?from?emp;?
??????EMPNO?ENAME??????JOB????????
----------?----------?????---------?
???????7369?SMITH??????CLERK??????
???????7499?ALLEN??????SALESMAN???
7521?WARD???????SALESMAN???
Sql>?col?ename?format?a40?
??????EMPNO?ENAME????????????????????????????????????JOB?
----------???----------------------------------------?????????---------?
???????7369?SMITH????????????????????????????????????CLERK?
???????7499?ALLEN????????????????????????????????????SALESMAN?
???????7521?WARD????????????????????????????????????SALESMAN?
??
4).?
設置列標題的對齊方式
?
JUS[TIFY]?{L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}?
SQL>?col?ename?justify?center?
SQL>?/?
??????EMPNO???????????ENAME???????????????????JOB?
----------???----------------------------------------???????---------?
???????7369?SMITH????????????????????????????????????CLERK?
???????7499?ALLEN????????????????????????????????????SALESMAN?
7521?WARD?????????????????????????????????????SALESMAN?
對于
NUMBER
型的列,列標題缺省在右邊,其它類型的列標題缺省在左邊
?
??
5).?
不讓一個列顯示在屏幕上
?
NOPRI[NT]|PRI[NT]?
SQL>?col?job?noprint?
SQL>?/?
??????EMPNO???????????ENAME?
----------?????----------------------------------------?
???????7369?SMITH?
???????7499?ALLEN?
7521?WARD?
??
6).?
格式化
NUMBER
類型列的顯示:
?
SQL>?COLUMN?SAL?FORMAT?$99,990?
SQL>?/?
Employee?
Department?Name????????Salary????Commission?
----------?----------?---------?----------?
30??????????ALLEN????????$1,600????300?
??
7).?
顯示列值時,如果列值為
NULL
值,用
text
值代替
NULL
值
?
COMM?NUL[L]?text?
SQL>COL?COMM?NUL[L]?text?
??
8).?
設置一個列的回繞方式
?
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]?
????????COL1?
--------------------?
HOW?ARE?YOU??
??
SQL>COL?COL1?FORMAT?A5?
SQL>COL?COL1?WRAPPED?
COL1?
-----?
HOW?A?
RE?YO?
U??
??
SQL>?COL?COL1?WORD_WRAPPED?
COL1?
-----?
HOW?
ARE?
YOU??
??
SQL>?COL?COL1?WORD_WRAPPED?
COL1?
-----?
HOW?A?
??
9).?
顯示列的當前的顯示屬性值
?
SQL>?COLUMN?column_name?
??
10).?
將所有列的顯示屬性設為缺省值
?
SQL>?CLEAR?COLUMNS?
??
8.?
屏蔽掉一個列中顯示的相同的值
?
BREAK?ON?break_column?
SQL>?BREAK?ON?DEPTNO?
SQL>?SELECT?DEPTNO,?ENAME,?SAL?
FROM?EMP?
??WHERE?SAL?<?2500?
??ORDER?BY?DEPTNO;?
DEPTNO??????ENAME?????????SAL?
----------?-----------?---------?
10???????????CLARK????????2450?
MILLER??????1300?
20????????????SMITH???????800?
ADAMS???????1100?
??
9.?
在上面屏蔽掉一個列中顯示的相同的值的顯示中,每當列值變化時在值變化之前插入
n
個空行。
?
BREAK?ON?break_column?SKIP?n?
??
SQL>?BREAK?ON?DEPTNO?SKIP?1?
SQL>?/?
DEPTNO?ENAME?SAL?
----------?-----------?---------?
10?CLARK?2450?
MILLER?1300?
??
20?SMITH?800?
ADAMS?1100?
??
10.?
顯示對
BREAK
的設置
?
SQL>?BREAK?
??
11.?
刪除
6
、
7
的設置
?
SQL>?CLEAR?BREAKS?
??
12.?Set?
命令:
?
該命令包含許多子命令:
?
SET?system_variable?value?
system_variable?value?
可以是如下的子句之一:
?
APPI[NFO]{ON|OFF|text}?
ARRAY[SIZE]?{15|n}?
AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}?
AUTOP[RINT]?{ON|OFF}?
AUTORECOVERY?[ON|OFF]?
AUTOT[RACE]?{ON|OFF|TRACE[ONLY]}?[EXP[LAIN]]?[STAT[ISTICS]]?
BLO[CKTERMINATOR]?{.|c}?
CMDS[EP]?{;|c|ON|OFF}?
COLSEP?{_|text}?
COM[PATIBILITY]{V7|V8|NATIVE}?
CON[CAT]?{.|c|ON|OFF}?
COPYC[OMMIT]?{0|n}?
COPYTYPECHECK?{ON|OFF}?
DEF[INE]?{&|c|ON|OFF}?
DESCRIBE?[DEPTH?{1|n|ALL}][LINENUM?{ON|OFF}][INDENT?{ON|OFF}]?
ECHO?{ON|OFF}?
EDITF[ILE]?file_name[.ext]?
EMB[EDDED]?{ON|OFF}?
ESC[APE]?{\|c|ON|OFF}?
FEED[BACK]?{6|n|ON|OFF}?
FLAGGER?{OFF|ENTRY?|INTERMED[IATE]|FULL}?
FLU[SH]?{ON|OFF}?
HEA[DING]?{ON|OFF}?
HEADS[EP]?{||c|ON|OFF}?
INSTANCE?[instance_path|LOCAL]?
LIN[ESIZE]?{80|n}?
LOBOF[FSET]?{n|1}?
LOGSOURCE?[pathname]?
LONG?{80|n}?
LONGC[HUNKSIZE]?{80|n}?
MARK[UP]?HTML?[ON|OFF]?[HEAD?text]?[BODY?text]?[ENTMAP?{ON|OFF}]?[SPOOL?
{ON|OFF}]?[PRE[FORMAT]?{ON|OFF}]?
NEWP[AGE]?{1|n|NONE}?
NULL?text?
NUMF[ORMAT]?format?
NUM[WIDTH]?{10|n}?
PAGES[IZE]?{24|n}?
PAU[SE]?{ON|OFF|text}?
RECSEP?{WR[APPED]|EA[CH]|OFF}?
RECSEPCHAR?{_|c}?
SERVEROUT[PUT]?{ON|OFF}?[SIZE?n]?[FOR[MAT]?{WRA[PPED]|WOR[D_?
WRAPPED]|TRU[NCATED]}]?
SHIFT[INOUT]?{VIS[IBLE]|INV[ISIBLE]}?
SHOW[MODE]?{ON|OFF}?
SQLBL[ANKLINES]?{ON|OFF}?
SQLC[ASE]?{MIX[ED]|LO[WER]|UP[PER]}?
SQLCO[NTINUE]?{>?|text}?
SQLN[UMBER]?{ON|OFF}?
SQLPRE[FIX]?{#|c}?
SQLP[ROMPT]?{SQL>|text}?
SQLT[ERMINATOR]?{;|c|ON|OFF}?
SUF[FIX]?{SQL|text}?
TAB?{ON|OFF}?
TERM[OUT]?{ON|OFF}?
TI[ME]?{ON|OFF}?
TIMI[NG]?{ON|OFF}?
TRIM[OUT]?{ON|OFF}?
TRIMS[POOL]?{ON|OFF}?
UND[ERLINE]?{-|c|ON|OFF}?
VER[IFY]?{ON|OFF}?
WRA[P]?{ON|OFF}?
??
1).?
設置當前
session
是否對修改的數據進行自動提交
?
SQL>SET?AUTO[COMMIT]?{ON|OFF|IMM[EDIATE]|?n}?
??
2)
.在用
start
命令執行一個
sql
腳本時,是否顯示腳本中正在執行的
SQL
語句
?
SQL>?SET?ECHO?{ON|OFF}?
??
3).
是否顯示當前
sql
語句查詢或修改的行數
?
SQL>?SET?FEED[BACK]?{6|n|ON|OFF}?
???
默認只有結果大于
6
行時才顯示結果的行數。如果
set?feedback?1?
,則不管查詢到多少行都返回。當為
off?
時,一律不顯示查詢的行數
?
??
4).
是否顯示列標題
?
SQL>?SET?HEA[DING]?{ON|OFF}?
當
set?heading?off?
時,在每頁的上面不顯示列標題,而是以空白行代替
?
??
5).
設置一行可以容納的字符數
?
SQL>?SET?LIN[ESIZE]?{80|n}?
???
如果一行的輸出內容大于設置的一行可容納的字符數,則折行顯示。
?
??
6).
設置頁與頁之間的分隔
?
SQL>?SET?NEWP[AGE]?{1|n|NONE}?
當
set?newpage?0?
時,會在每頁的開頭有一個小的黑方框。
?
當
set?newpage?n?
時,會在頁和頁之間隔著
n
個空行。
?
當
set?newpage?none?
時,會在頁和頁之間沒有任何間隔。
?
??
7).
顯示時,用
text
值代替
NULL
值
?
SQL>?SET?NULL?text?
??
8).
設置一頁有多少行數
?
SQL>?SET?PAGES[IZE]?{24|n}?
如果設為
0
,則所有的輸出內容為一頁并且不顯示列標題
?
??
9).
是否顯示用
DBMS_OUTPUT.PUT_LINE
包進行輸出的信息。
?
SQL>?SET?SERVEROUT[PUT]?{ON|OFF}??
在編寫存儲過程時,我們有時會用
dbms_output.put_line
將必要的信息輸出,以便對存儲過程進行調試,只有將
serveroutput
變量設為
on
后,信息才能顯示在屏幕上。
?
??
10).
當
SQL
語句的長度大于
LINESIZE
時,是否在顯示時截取
SQL
語句。
?
SQL>?SET?WRA[P]?{ON|OFF}?
???
當輸出的行的長度大于設置的行的長度時(用
set?linesize?n
命令設置),當
set?wrap?on
時,輸出行的多于的字符會另起一行顯示,否則,會將輸出行的多于字符切除,不予顯示。
?
??
11).
是否在屏幕上顯示輸出的內容,主要用與
SPOOL
結合使用。
?
SQL>?SET?TERM[OUT]?{ON|OFF}?
???
在用
spool
命令將一個大表中的內容輸出到一個文件中時,將內容輸出在屏幕上會耗費大量的時間,設置
set?termspool?off
后,則輸出的內容只會保存在輸出文件中,不會顯示在屏幕上,極大的提高了
spool
的速度。
?
??
12).
將
SPOOL
輸出中每行后面多余的空格去掉
?
SQL>?SET?TRIMS[OUT]?{ON|OFF}??
????
13)
顯示每個
sql
語句花費的執行時間
?
set?TIMING??{ON|OFF}?
??
14
.修改
sql?buffer
中的當前行中,第一個出現的字符串
?
C[HANGE]?/old_value/new_value?
SQL>?l?
???1*?select?*?from?dept?
SQL>?c/dept/emp?
???1*?select?*?from?emp?
??
15
.編輯
sql?buffer
中的
sql
語句
?
EDI[T]?
??
16
.顯示
sql?buffer
中的
sql
語句,
list?n
顯示
sql?buffer
中的第
n
行,并使第
n
行成為當前行
?
L[IST]?[n]?
??
17
.在
sql?buffer
的當前行下面加一行或多行
?
I[NPUT]?
??
18
.將指定的文本加到
sql?buffer
的當前行后面
?
A[PPEND]?
SQL>?select?deptno,?
???2??dname?
???3??from?dept;?
?????DEPTNO?DNAME?
----------?--------------?
?????????10?ACCOUNTING?
?????????20?RESEARCH?
?????????30?SALES?
?????????40?OPERATIONS?
??
SQL>?L?2?
???2*?dname?
SQL>?a?,loc?
???2*?dname,loc?
SQL>?L?
???1??select?deptno,?
???2??dname,loc?
???3*?from?dept?
SQL>?/?
??
?????DEPTNO?DNAME??????????LOC?
----------?--------------?-------------?
?????????10?ACCOUNTING?????NEW?YORK?
?????????20?RESEARCH???????DALLAS?
?????????30?SALES??????????CHICAGO?
?????????40?OPERATIONS?????BOSTON?
??
19
.將
sql?buffer
中的
sql
語句保存到一個文件中
?
SAVE?file_name?
??
20
.將一個文件中的
sql
語句導入到
sql?buffer
中
?
GET?file_name?
??
21
.再次執行剛才已經執行的
sql
語句
?
RUN?
or?
/?
??
22
.執行一個存儲過程
?
EXECUTE?procedure_name?
??
23
.在
sql*plus
中連接到指定的數據庫
?
CONNECT?user_name/passwd@db_alias?
??
24
.設置每個報表的頂部標題
?
TTITLE?
??
25
.設置每個報表的尾部標題
?
BTITLE?
??
26
.寫一個注釋
?
REMARK?[text]?
??
27
.將指定的信息或一個空行輸出到屏幕上
?
PROMPT?[text]?
??
28
.將執行的過程暫停,等待用戶響應后繼續執行
?
PAUSE?[text]?
??
Sql>PAUSE?Adjust?paper?and?press?RETURN?to?continue.?
??
29
.將一個數據庫中的一些數據拷貝到另外一個數據庫(如將一個表的數據拷貝到另一個數據庫)
?
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?
??
30
.不退出
sql*plus
,在
sql*plus
中執行一個操作系統命令:
?
HOST?
??
Sql>?host?hostname?
該命令在
windows
下可能被支持。
?
??
31
.在
sql*plus
中,切換到操作系統命令提示符下,運行操作系統命令后,可以再次切換回
sql*plus
:
?
!?
??
sql>!?
$hostname?
$exit?
sql>?
??
該命令在
windows
下不被支持。
?
??
32
.顯示
sql*plus
命令的幫助
?
HELP?
如何安裝幫助文件:
?
Sql>@??\sqlplus\admin\help\hlpbld.sql??\sqlplus\admin\help\helpus.sql?
Sql>help?index?
??
33
.顯示
sql*plus
系統變量的值或
sql*plus
環境變量的值
?
Syntax?
SHO[W]?option?
where?option?represents?one?of?the?following?terms?or?clauses:?
system_variable?
ALL?
BTI[TLE]?
ERR[ORS]?[{FUNCTION|PROCEDURE|PACKAGE|PACKAGE?BODY|?
TRIGGER|VIEW|TYPE|TYPE?BODY}?[schema.]name]?
LNO?
PARAMETERS?[parameter_name]?
PNO?
REL[EASE]?
REPF[OOTER]?
REPH[EADER]?
SGA?
SPOO[L]?
SQLCODE?
TTI[TLE]?
USER?
??
1)?.?
顯示當前環境變量的值:
?
Show?all?
??
2)?.?
顯示當前在創建函數、存儲過程、觸發器、包等對象的錯誤信息
?
Show?error?
當創建一個函數、存儲過程等出錯時,變可以用該命令查看在那個地方出錯及相應的出錯信息,進行修改后再次進行編譯。
?
??
3)?.?
顯示初始化參數的值:
?
show?PARAMETERS?[parameter_name]?
??
4)?.?
顯示數據庫的版本:
?
show?REL[EASE]?
??
5)?.?
顯示
SGA
的大小
?
show?SGA?
??
6).?
顯示當前的用戶名
?
show?user
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
