官术网_书友最值得收藏!

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”命令可以得到同樣的結果。

主站蜘蛛池模板: 平利县| 贵溪市| 定兴县| 水城县| 穆棱市| 余姚市| 濮阳市| 武汉市| 绿春县| 海晏县| 芮城县| 苗栗县| 南木林县| 视频| 达拉特旗| 磐安县| 固镇县| 荆门市| 余江县| 台东县| 资源县| 象州县| 宁安市| 峨眉山市| 铁岭县| 义乌市| 武穴市| 揭东县| 托克托县| 松桃| 宜昌市| 黎城县| 济源市| 简阳市| 乐清市| 奉新县| SHOW| 广宁县| 霍山县| 龙南县| 辉县市|