程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> oracle sqlplus 常用命令大全

oracle sqlplus 常用命令大全

編輯:關於Oracle數據庫

      SQL> show all --查看所有68個系統變量值

      SQL> show user --顯示當前連接用戶

      SQL> show error   --顯示錯誤

      SQL> set heading off --禁止輸出列標題,默認值為ON

      SQL> set feedback off --禁止顯示最後一行的計數反饋信息,默認值為"對6個或更多的記錄,回送ON"

      SQL> set timing on --默認為OFF,設置查詢耗時,可用來估計SQL語句的執行時間,測試性能

      SQL> set sqlprompt "SQL> " --設置默認提示符,默認值就是"SQL> "

      SQL> set linesize 1000 --設置屏幕顯示行寬,默認100

      SQL> set autocommit ON --設置是否自動提交,默認為OFF

      SQL> set pause on --默認為OFF,設置暫停,會使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁

      SQL> set arraysize 1 --默認為15

      SQL> set long 1000 --默認為80

      說明:

      long值默認為80,設置1000是為了顯示更多的內容,因為很多數據字典視圖中用到了long數據類型,如:

      SQL> desc user_views

      列名 可空值否 類型

      ------------------------------- -------- ----

      VIEW_NAME NOT NULL VARCHAR2(30)

      TEXT_LENGTH NUMBER

      TEXT LONG

      SQL> define a = '''20000101 12:01:01''' --定義局部變量,如果想用一個類似在各種顯示中所包括的回車那樣的常量,

      --可以用define命令來設置

      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

      問題提出:

      1、用戶需要對數據庫用戶下的每一張表都執行一個相同的SQL操作,這時,一遍、一遍的鍵入SQL語句是很麻煩的

      實現方法:

      SQL> set heading off --禁止輸出列標題

      SQL> set feedback off --禁止顯示最後一行的計數反饋信息

      列出當前用戶下所有同義詞的定義,可用來測試同義詞的真實存在性

      select 'desc '||tname from tab where tabtype='SYNONYM';

      查詢當前用戶下所有表的記錄數

      select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';

      把所有符合條件的表的select權限授予為public

      select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;

      刪除用戶下各種對象

      select 'drop '||tabtype||' '||tname from tab;

      刪除符合條件用戶

      select 'drop user '||username||' cascade;' from all_users where user_id>25;

      快速編譯所有視圖

      ----當在把數據庫倒入到新的服務器上後(數據庫重建),需要將視圖重新編譯一遍,

      ----因為該表空間視圖到其它表空間的表的連接會出現問題,可以利用PL/SQL的語言特性,快速編譯。

      SQL> SPOOL ON.SQL

      SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;

      SQL> SPOOL OFF

      然後執行ON.SQL即可。

      SQL> @ON.SQL

      當然,授權和創建同義詞也可以快速進行,如:

      SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;

      SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB;

      命令列表:

      假設當前執行命令為:select * from tab;

      (a)ppend     添加文本到緩沖區當前行尾    a order by tname 結果:select * from tab order by tname;

      (注:a後面跟2個空格)

      (c)hange/old/new 在當前行用新的文本替換舊的文本 c/*/tname     結果:select tname from tab;

      (c)hange/text  從當前行刪除文本        c/tab       結果:select tname from ;

      del       刪除當前行

      del n      刪除第n行

      (i)nput 文本   在當前行之後添加一行

      (l)ist      顯示緩沖區中所有行

      (l)ist n     顯示緩沖區中第 n 行

      (l)ist m n    顯示緩沖區中 m 到 n 行

      run       執行當前緩沖區的命令

      /        執行當前緩沖區的命令

      r        執行當前緩沖區的命令

      @文件名     運行調入內存的sql文件,如:

      SQL> edit s<回車>

      如果當前目錄下不存在s.sql文件,則系統自動生成s.sql文件,

      在其中輸入"select * from tab;",存盤退出。

      SQL> @s<回車>

      系統會自動查詢當前用戶下的所有表、視圖、同義詞。

      @@文件名     在.sql文件中調用令一個.sql文件時使用

      save 文件名   將緩沖區的命令以文件方式存盤,缺省文件擴展名為.sql

      get 文件名    調入存盤的sql文件

      start 文件名   運行調入內存的sql文件

      spool 文件名   把這之後的各種操作及執行結果"假脫機"即存盤到磁盤文件上,默認文件擴展名為.lst

      spool      顯示當前的"假脫機"狀態

      spool off    停止輸出

      例:

      SQL> spool a

      SQL> spool

      正假脫機到 A.LST

      SQL> spool off

      SQL> spool

      當前無假脫機

      exit       退出SQL*PLUS

      desc 表名    顯示表的結構

      show user    顯示當前連接用戶

      show error    顯示錯誤

      show all     顯示所有68個系統變量值

      edit       打開默認編輯器,Windows系統中默認是notepad.exe,把緩沖區中最後一條SQL語句調入afiedt.buf文件中進行編輯

      edit 文件名   把當前目錄中指定的.sql文件調入編輯器進行編輯

      clear screen   清空當前屏幕顯示

      二.Oracle sqlplus語句編輯命令

      首先我們輸入這樣一條指令:

      SELECT emp_id, emp_name

      FROM Employees

      input 命令可以接著上一條指令的後面添加語句,比如在上述語句運行後輸入:

      input WHERE emp_age > 30

      便可得到如下指令:

      SELECT emp_id, emp_name

      FROM Employees

      WHERE emp_age > 30

      ln 命令用於指定對以輸入的第n行語句進行操作,比如在上述語句運行後輸入:

      l1則當前選中的語句行即為

      SELECT emp_id, emp_name

      (語句前有"*"表示)

      a 命令用於直接在當前行的末尾加上字符,比如在上述語句運行後輸入:

      a , emp_dept

      則執行的指令變為:

      SELECT emp_id, emp_name, emp_dept

      FROM Employees

      WHERE emp_age > 30

      c 命令用於修改當前語句中的字符,比如在上述語句運行後輸入:

      c /emp_name/emp_age/則執行的指令變為:

      SELECT emp_id, emp_age, emp_dept

      FROM Employees

      WHERE emp_age > 30

      del n 命令用於刪除第n行指令,比如在上述語句運行後輸入:

      DEL 3

      則執行的指令變為:

      SELECT emp_id, emp_age, emp_dept

      FROM Employees

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved