- Oracle 11g從入門到精通(第2版) (軟件開發(fā)視頻大講堂)
- 明日科技
- 2634字
- 2020-11-28 15:54:52
3.3 常用SQL*Plus命令
視頻講解:光盤\TM\lx\3\常用SQL*Plus命令.mp4
在SQL*Plus環(huán)境中操作Oracle數(shù)據(jù)庫,除了使用SQL語句外,用戶接觸比較多的就是SQL*Plus命令,它執(zhí)行完成后,不會保存在SQL緩沖區(qū)中。下面將介紹一些常用的SQL*Plus命令。
3.3.1 HELP命令
SQL*Plus工具提供了許多操作Oracle數(shù)據(jù)庫的命令,并且每個命令都有很多選項,把所有命令的選項都記住,這對于用戶來說非常困難。為了解決這個難題,SQL*Plus提供了HELP命令來幫助用戶查詢指定命令的選項。HELP可以向用戶提供被查詢命令的標題、功能描述、縮寫形式和參數(shù)選項(包括必選參數(shù)和可選參數(shù))等信息。HELP命令的語法形式如下:
HELP|? [topic]
“? ”表示一個命令的部分字符,這樣就可以通過提供命令的部分字符以模糊查詢的方式來查詢命令格式;topic參數(shù)表示將要查詢的命令的完整名稱。若省略“? ”和topic參數(shù),直接執(zhí)行HELP命令,則會輸出HELP命令本身的語法格式及其功能描述信息。
【例3.9】 startup命令用來啟動數(shù)據(jù)庫實例,下面使用HELP命令查看startup命令的語法格式及功能描述,具體代碼如下。
SQL> help startup
本例運行結果如圖3.6所示。

圖3.6 startup命令
如果用戶無法記清所要使用的SQL*Plus命令,則可以使用help index命令來查看SQL*Plus命令清單。
【例3.10】 使用help index命令來查看SQL*Plus命令清單,具體代碼如下。
SQL> help index
本例運行結果如圖3.7所示。

圖3.7 SQL*Plus命令清單
3.3.2 DESCRIBE命令
在SQL*Plus的眾多命令中,DESCRIBE命令可能是被使用得最頻繁的一個,它用來查詢指定數(shù)據(jù)對象的組成結構。比如,通過DESCRIBE命令查詢表和視圖的結構,查詢結果就可以列出相應對象各個列的名稱、是否為空及類型等屬性。DESCRIBE命令的語法形式如下:
desc[ribe] object_name;
describe可以縮寫為desc, object_name表示將要查詢的對象名稱。
【例3.11】 下面通過DESCRIBE命令查看dba_tablespaces數(shù)據(jù)字典表(用來存儲表空間信息的內部表)的結構,代碼如下:
SQL> desc dba_tablespaces;
本例運行結果如圖3.8所示。

圖3.8 查看dba_tablespaces數(shù)據(jù)字典表結構
相信很多用戶都遇到過這種情況,在SQL*Plus中敲了很長的命令后,突然發(fā)現(xiàn)想不起某個列的名字了,如果取消當前的命令,待查詢后再重敲,那是非常麻煩的事,這里可以使用#desc object_name的命令格式來隨時查看數(shù)據(jù)對象的結構。
【例3.12】 在scott.emp表中查詢銷售員(SALESMAN)的編號、姓名和工資,在編寫SQL語句的過程中,使用#desc scott.emp命令查詢scott.emp表中工資字段的名稱(sal),代碼及運行結果如下:
SQL> select empno, ename, 2 #desc scott.emp 名稱 是否為空? 類型 ------------------ ----------- ----------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) 2 sal from scott.emp where job='SALESMAN'; EMPNO ENAME SAL ---------- ---------- --------- 7499 ALLEN 1600 7521 WARD 1250 7654 MARTIN 1250 7844 TURNER 1500 SQL>
說明
DESCRIBE命令不僅可以查詢表、視圖的結構,而且還可以查詢過程、函數(shù)和程序包等PL/SQL對象的規(guī)范。
3.3.3 SPOOL命令
SPOOL命令可以把查詢結果輸出到指定文件中,這樣可以保存查詢結果并方便打印。SPOOL命令的語法格式如下:
SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]
參數(shù)file_name用于指定脫機文件的名稱,默認的文件擴展名為LST。在該參數(shù)后面可以跟一個關鍵字,該關鍵字有以下幾種情況:
CRE[ATE]:表示創(chuàng)建一個新的脫機文件,這也是SPOOL命令的默認狀態(tài)。
REP[LACE]:表示替代已經存在的脫機文件。
APP[END]:表示把脫機內容附加到一個已經存在的脫機文件中。
OFF | OUT:表示關閉spool輸出。
【例3.13】 使用spool命令聲稱emp.txt文件,并將scott.emp表中銷售員(SALESMAN)的記錄保存到該文件中,代碼如下(實例位置:光盤\TM\sl\3\5)。
SQL> spool c:\emp.txt SQL> select empno, ename, job, sal from scott.emp where job='SALESMAN'; EMPNO ENAME JOB SAL ---------- ---------- --------- --------- 7499 ALLEN SALESMAN 1600 7521 WARD SALESMAN 1250 7654 MARTIN SALESMAN 1250 7844 TURNER SALESMAN 1500 SQL> spool off
上面程序的執(zhí)行結果是:從spool命令開始(但不包括該命令行),一直到spool off命令行(包括該命令行)之間的所有內容都被寫入emp.txt文件中。
注意
只有使用spool off或spool out命令關閉輸出,才會在輸出文件中看到輸出的內容,否則輸出文件中無內容或無更新內容。
3.3.4 其他常用命令
除了上面介紹的幾個最常用SQL*Plus命令之外,還有一些比較常用,但非常簡單的SQL*Plus命令。下面進行簡單的介紹。
1.DEFINE命令
該命令用來定義一個用戶變量并且可以分配給它一個CHAR值,其語法格式如下:
DEF[INE] [variable] | [variable = text]
variable:表示定義的變量名。
text:變量的CHAR值。
【例3.14】 使用define命令定義vjob變量,并給它分配一個CHAR值“'SALESMAN'”,代碼如下:
SQL> define vjob='SALESMAN' SQL> define vjob DEFINE VJOB ="SALESMAN"(CHAR)
2.SHOW命令
該命令用來顯示SQL*Plus系統(tǒng)變量的值或SQL*Plus環(huán)境變量的值,其語法格式如下:
SHO[W] option
option表示要顯示的系統(tǒng)選項,常用的選項有ALL、PARAMETERS [parameter_name]、SGA、SPOOL、USER等。
【例3.15】 使用show命令顯示當前數(shù)據(jù)庫實例的數(shù)據(jù)塊大小,代碼及運行結果如下:
SQL> show parameters db_block_size; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_block_size integer 8192
3.EDIT命令
SQL語句或PL/SQL塊在執(zhí)行完畢之后,可以被存儲在一個被稱為SQL緩沖區(qū)的內存區(qū)域中,用戶可以從SQL緩沖區(qū)中重新調用、編輯或運行最近輸入的SQL語句。若要編輯SQL緩沖區(qū)中的最近一條SQL語句或PL/SQL塊,既可以在SQL*Plus環(huán)境中直接編輯,也可以使用EDIT命令實現(xiàn)在記事本中編輯。EDIT命令用來編輯SQL緩沖區(qū)或指定磁盤文件中的SQL語句或PL/SQL塊,其語法格式如下:
EDIT [file_name[.ext]]
參數(shù)file_name表示要編輯的磁盤文件名。若在SQL*Plus中只輸入“EDIT”或者它的簡寫形式“ED”,而不指定file_name參數(shù)的值,則表示編輯SQL緩沖區(qū)中的最近一條SQL語句或PL/SQL塊。
執(zhí)行EDIT命令后,SQL*Plus工具將打開一個包含SQL語句或PL/SQL塊的記事本,用戶就可以在記事本環(huán)境下編輯SQL語句或PL/SQL塊。
技巧
如果要執(zhí)行SQL緩沖區(qū)中最近一條SQL語句,可以使用運行命令“/”來執(zhí)行,這樣可以簡化操作。
4.SAVE命令
該命令實現(xiàn)將SQL緩沖區(qū)中的最近一條SQL語句或PL/SQL塊保存到一個文件中,其語法格式如下:
SAVE file_name
參數(shù)file_name表示要保存到的文件名,如果不為保存的文件指定路徑,則該文件會保存在Oracle系統(tǒng)安裝的主目錄中(但不建議這樣做)。如果不為保存的文件指定擴展名,則默認擴展名為SQL,即保存的文件為一個SQL腳本文件。
【例3.16】 使用save命令保存SQL緩沖區(qū)中的SQL語句到c:\dept.sql文件中,代碼及運行結果如下(實例位置:光盤\TM\sl\3\6)。
SQL> select * from scott.dept; DEPTNO DNAME LOC ------------------ -------------- ------------ 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> save c:\dept.sql 已創(chuàng)建file c:\dept.sql
技巧
如果要清空SQL緩沖區(qū)中的內容,可以使用clear buffer命令。
5.GET命令
該命令實現(xiàn)把一個SQL腳本文件的內容放進SQL緩沖區(qū),其語法格式如下:
GET [FILE] file_name[.ext] [LIST | NOLIST]
file_name:要檢索的文件名,如果省略了文件的擴展名,則默認文件的擴展名為SQL。
LIST:指定文件的內容加載到緩沖區(qū)時顯示文件的內容。
NOLIST:指定文件的內容加載到緩沖區(qū)時不顯示文件的內容。
執(zhí)行GET命令時,如果file_name參數(shù)不包括被檢索文件的路徑,則SQL*Plus工具會在Oracle系統(tǒng)安裝的主目錄下檢索指定文件。在SQL*Plus找到指定文件后,會把文件中的內容加載到SQL*Plus緩沖區(qū),并顯示該文件的內容。
【例3.17】 首先在c:\dept.sql文件中寫入SQL腳本,然后通過GET命令將c:\dept.sql文件的內容加載到SQL*Plus緩沖區(qū),最后使用運行命令“/”執(zhí)行SQL*Plus緩沖區(qū)的語句,代碼如下。
SQL> get c:\dept.sql 1* select*from scott.dept SQL> /
本例運行結果如圖3.9所示。

圖3.9 加載并執(zhí)行SQL腳本文件
6.start和@命令
這兩個命令都可以用來執(zhí)行一個SQL腳本文件,它們的語法格式如下:
STA[RT] {url|file_name[.ext]} [arg ...] @ {url|file_name[.ext]} [arg ...]
url:表示要執(zhí)行的SQL腳本文件的路徑。
file_name:表示包含SQL腳本的文件名。
arg:其他參數(shù)。
【例3.18】 使用start命令執(zhí)行包含有“select count(*)from scott.emp; ”SQL腳本的emp.txt文件,代碼及運行結果如下:
SQL> start c:\emp.txt; COUNT(*) --------------- 14
注意
上面的代碼若使用“@ c:\emp.txt”命令可以得到同樣的結果。
- MATLAB圖像處理超級學習手冊
- Practical Data Science Cookbook(Second Edition)
- 神經網絡編程實戰(zhàn):Java語言實現(xiàn)(原書第2版)
- 跟老齊學Python:輕松入門
- Building Cross-Platform Desktop Applications with Electron
- Getting Started with SQL Server 2012 Cube Development
- 小程序開發(fā)原理與實戰(zhàn)
- TradeStation交易應用實踐:量化方法構建贏家策略(原書第2版)
- Spring Boot實戰(zhàn)
- Unity&VR游戲美術設計實戰(zhàn)
- JBoss:Developer's Guide
- JavaScript機器人編程指南
- Docker:容器與容器云(第2版)
- Java高級程序設計
- MATLAB 2020 GUI程序設計從入門到精通