oracle sqlplus 常用命令大全

字號(hào):


    SQL> show all --查看所有68個(gè)系統(tǒng)變量值
    SQL> show user --顯示當(dāng)前連接用戶(hù)
    SQL> show error --顯示錯(cuò)誤
    SQL> set heading off --禁止輸出列標(biāo)題,默認(rèn)值為ON
    SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息,默認(rèn)值為"對(duì)6個(gè)或更多的記錄,回送ON"
    SQL> set timing on --默認(rèn)為OFF,設(shè)置查詢(xún)耗時(shí),可用來(lái)估計(jì)SQL語(yǔ)句的執(zhí)行時(shí)間,測(cè)試性能
    SQL> set sqlprompt "SQL> " --設(shè)置默認(rèn)提示符,默認(rèn)值就是"SQL> "
    SQL> set linesize 1000 --設(shè)置屏幕顯示行寬,默認(rèn)100
    SQL> set autocommit ON --設(shè)置是否自動(dòng)提交,默認(rèn)為OFF
    SQL> set pause on --默認(rèn)為OFF,設(shè)置暫停,會(huì)使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁(yè)
    SQL> set arraysize 1 --默認(rèn)為15
    SQL> set long 1000 --默認(rèn)為80
    說(shuō)明:
    long值默認(rèn)為80,設(shè)置1000是為了顯示更多的內(nèi)容,因?yàn)楹芏鄶?shù)據(jù)字典視圖中用到了long數(shù)據(jù)類(lèi)型,如:
    SQL> desc user_views
    列名 可空值否 類(lèi)型
    ------------------------------- -------- ----
    VIEW_NAME NOT NULL VARCHAR2(30)
    TEXT_LENGTH NUMBER
    TEXT LONG
    SQL> define a = '''20000101 12:01:01''' --定義局部變量,如果想用一個(gè)類(lèi)似在各種顯示中所包括的回車(chē)那樣的常量,
    --可以用define命令來(lái)設(shè)置
    SQL> select &a from dual;
    原值 1: select &a from dual
    新值 1: select '20000101 12:01:01' from dual
    '2000010112:01:01
    -----------------
    20000101 12:01:01
    問(wèn)題提出:
    1、用戶(hù)需要對(duì)數(shù)據(jù)庫(kù)用戶(hù)下的每一張表都執(zhí)行一個(gè)相同的SQL操作,這時(shí),一遍、一遍的鍵入SQL語(yǔ)句是很麻煩的
    實(shí)現(xiàn)方法:
    SQL> set heading off --禁止輸出列標(biāo)題
    SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息
    列出當(dāng)前用戶(hù)下所有同義詞的定義,可用來(lái)測(cè)試同義詞的真實(shí)存在性
    select 'desc '||tname from tab where tabtype='SYNONYM';
    查詢(xún)當(dāng)前用戶(hù)下所有表的記錄數(shù)
    select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
    把所有符合條件的表的select權(quán)限授予為public
    select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
    刪除用戶(hù)下各種對(duì)象
    select 'drop '||tabtype||' '||tname from tab;
    刪除符合條件用戶(hù)
    select 'drop user '||username||' cascade;' from all_users where user_id>25;
    快速編譯所有視圖
    ----當(dāng)在把數(shù)據(jù)庫(kù)倒入到新的服務(wù)器上后(數(shù)據(jù)庫(kù)重建),需要將視圖重新編譯一遍,
    ----因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會(huì)出現(xiàn)問(wèn)題,可以利用PL/SQL的語(yǔ)言特性,快速編譯。
    SQL> SPOOL ON.SQL
    SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
    SQL> SPOOL OFF
    然后執(zhí)行ON.SQL即可。
    SQL> @ON.SQL
    當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:
    SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶(hù)名;' FROM TAB;
    SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶(hù)名.'||TNAME||';' FROM TAB;
    命令列表:
    假設(shè)當(dāng)前執(zhí)行命令為:select * from tab;
    (a)ppend 添加文本到緩沖區(qū)當(dāng)前行尾a order by tname 結(jié)果:select * from tab order by tname;
    (注:a后面跟2個(gè)空格)
    (c)hange/old/new 在當(dāng)前行用新的文本替換舊的文本 c/*/tname 結(jié)果:select tname from tab;
    (c)hange/text從當(dāng)前行刪除文本c/tab 結(jié)果:select tname from ;
    del 刪除當(dāng)前行
    del n刪除第n行
    (i)nput 文本 在當(dāng)前行之后添加一行
    (l)ist  顯示緩沖區(qū)中所有行
    (l)ist n 顯示緩沖區(qū)中第 n 行
    (l)ist m n  顯示緩沖區(qū)中 m 到 n 行
    run 執(zhí)行當(dāng)前緩沖區(qū)的命令
    /執(zhí)行當(dāng)前緩沖區(qū)的命令
    r執(zhí)行當(dāng)前緩沖區(qū)的命令
    @文件名 運(yùn)行調(diào)入內(nèi)存的sql文件,如:
    SQL> edit s<回車(chē)>
    如果當(dāng)前目錄下不存在s.sql文件,則系統(tǒng)自動(dòng)生成s.sql文件,
    在其中輸入"select * from tab;",存盤(pán)退出。
    SQL> @s<回車(chē)>
    系統(tǒng)會(huì)自動(dòng)查詢(xún)當(dāng)前用戶(hù)下的所有表、視圖、同義詞。
    @@文件名 在.sql文件中調(diào)用令一個(gè).sql文件時(shí)使用
    save 文件名 將緩沖區(qū)的命令以文件方式存盤(pán),缺省文件擴(kuò)展名為.sql
    get 文件名  調(diào)入存盤(pán)的sql文件
    start 文件名 運(yùn)行調(diào)入內(nèi)存的sql文件
    spool 文件名 把這之后的各種操作及執(zhí)行結(jié)果"假脫機(jī)"即存盤(pán)到磁盤(pán)文件上,默認(rèn)文件擴(kuò)展名為.lst
    spool顯示當(dāng)前的"假脫機(jī)"狀態(tài)
    spool off停止輸出
    例:
    SQL> spool a
    SQL> spool
    正假脫機(jī)到 A.LST
    SQL> spool off
    SQL> spool
    當(dāng)前無(wú)假脫機(jī)
    exit 退出SQL*PLUS
    desc 表名顯示表的結(jié)構(gòu)
    show user顯示當(dāng)前連接用戶(hù)
    show error  顯示錯(cuò)誤
    show all 顯示所有68個(gè)系統(tǒng)變量值
    edit 打開(kāi)默認(rèn)編輯器,Windows系統(tǒng)中默認(rèn)是notepad.exe,把緩沖區(qū)中最后一條SQL語(yǔ)句調(diào)入afiedt.buf文件中進(jìn)行編輯
    edit 文件名 把當(dāng)前目錄中指定的.sql文件調(diào)入編輯器進(jìn)行編輯
    clear screen 清空當(dāng)前屏幕顯示
    二.Oracle sqlplus語(yǔ)句編輯命令
    首先我們輸入這樣一條指令:
    SELECT emp_id, emp_name
    FROM Employees
    input 命令可以接著上一條指令的后面添加語(yǔ)句,比如在上述語(yǔ)句運(yùn)行后輸入:
    input WHERE emp_age > 30
    便可得到如下指令:
    SELECT emp_id, emp_name
    FROM Employees
    WHERE emp_age > 30
    ln 命令用于指定對(duì)以輸入的第n行語(yǔ)句進(jìn)行操作,比如在上述語(yǔ)句運(yùn)行后輸入:
    l1則當(dāng)前選中的語(yǔ)句行即為
    SELECT emp_id, emp_name
    (語(yǔ)句前有"*"表示)
    a 命令用于直接在當(dāng)前行的末尾加上字符,比如在上述語(yǔ)句運(yùn)行后輸入:
    a , emp_dept
    則執(zhí)行的指令變?yōu)椋?BR>    SELECT emp_id, emp_name, emp_dept
    FROM Employees
    WHERE emp_age > 30
    c 命令用于修改當(dāng)前語(yǔ)句中的字符,比如在上述語(yǔ)句運(yùn)行后輸入:
    c /emp_name/emp_age/則執(zhí)行的指令變?yōu)椋?BR>    SELECT emp_id, emp_age, emp_dept
    FROM Employees
    WHERE emp_age > 30
    del n 命令用于刪除第n行指令,比如在上述語(yǔ)句運(yùn)行后輸入:
    DEL 3
    則執(zhí)行的指令變?yōu)椋?BR>    SELECT emp_id, emp_age, emp_dept
    FROM Employees