SQL Plus基礎命令學習筆記
?
?
??? 依舊是我當年學習的筆記之一,這是在學習SQL Plus時記的。其實在SQL Plus下是有很多其他地方不能使用的功能和技巧的,不過這邊只是一個基本的應用,不涉及一些復雜的東西。好,下面看一下內容:
?
?
一、使用cmd登錄:
???
??? 前提:PATH中設置%oracle_home%/bin
?
??? \admin> sqlplus
??? 輸入用戶名:sys
??? 輸入密碼:sys as sysdba(頁面中不顯示)
?
??? \admin> sqlplus sys/sys as sysdba
??? \admin> sqlplus /as sysdba
?
??? \admin> sqlplus /nolog
??? SQL> conn sys/sys as sysdba
?
??? 注:如果需要加鏈接字符串,則為sys/sys@DODO as sysdba
??????? 不填時默認登錄本機數據庫,若為遠程鏈接則必須填寫
?
?
?
二、基本操作命令:
?
1、執行一個SQL腳本
?
??? SQL> start D:\a.sql
??? SQL> @ D:\a.sql
??? 注:若需要在一個腳本中調用另一個腳本,則使用 @@D:\a.sql
?
2、重新執行上一次命令:
?
??? SQL> /?????????????? --也可使用 run/r 來替代執行
?
3、編輯腳本:
?
??? SQL> edit??????????? --編輯當前輸入的文本(前1次執行的部分)
??? SQL> edit D:\a.sql?? --編輯制定文檔
??? 注:在txt中編輯完成后保存,關閉即修改完成,使用“/”后運行
?
4、保存腳本:
?
??? SQL> save a????????? --自動存檔為a.sql 保存在C:\Documents and Settings\wangxiaoqi
??? SQL> save D:\a?????? --保存到D:\a.sql
?
5、導入腳本:
?
??? SQL> get D:\a
?
6、顯示一個表結構:
?
??? SQL> desc tab??????? --如果tab不是表,則只顯示其類型和名字
?
7、保存所有輸入:
?
??? SQL> spool D:\xxx??? --建立一個xxx.LST文件
??? SQL> spool?????????? --顯示當前spool狀態
??? SQL> select * from dual;
??? SQL> spool off?????? --結束錄入
???
8、執行過程
??? SQL> execute
a;
?
9、增加頁眉和頁腳:
?
??? SQL> TTITLE abc????? --添加頁眉“abc”
??? SQL> BTITLE def????? --添加頁腳“def”
??? SQL> TTITLE OFF????? --取消頁眉顯示
?
?
?
三、COLUMN[COL]命令修改字段屬性:
?
??? 可以修改的屬性有:
??? 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、HEADING--改變字段名
?
??? SQL> COLUMN id HEADING 'XX|YY'? --使用'|'可將列名顯示為兩行
?
2、FORMAT--改變字符長度 & 格式化數值
?
??? SQL> COLUMN id FORMAT a20?????? --此字段長20個字符,只能針對字符,若為數字則無法正常顯示
??? SQL> COLUMN id FORMAT $999.00?? --前綴$,小數點前3位,小數點后2位四舍五入
?
3、JUSTIFY--改變字段名顯示位置
?
??? SQL> COLUMN id JUSTIFY center?? --居中顯示,默認的都是靠右(r
)顯示
?
4、NOPRINT--不顯示
?
??? SQL> COLUMN id NOPRINT????????? --不顯示出來,可用PRINT設置回來
?
5、NULL--設置NULL值顯示
?
??? SQL> COLUMN COMM NULL 0.00????? --將NULL值設置位0.00? 注意必須加上COMM? 注:不起作用。??
?
6、WRAPPED--設置回繞方式
?
??? SQL> COLUMN id FORMAT a5??????? --設置長度為5
??? SQL> COLUMN id WRAPPED???????? --表示直接按長度回繞
??? SQL> COLUMN id WORD_WRAPPED?? --按單詞回繞
??? SQL> COLUMN id TRUNCATED????? --直接按長度截斷
?
7、COLUMN--顯示當前列所有屬性
?
??? SQL> COLUMN id????????????????? --后面不加列名時顯示所有的COLUMN
?
8、OFF|ON--設置某一字段關閉
?
??? SQL> COLUMN id OFF
?
9、CLEAR--清空所有字段屬性
?
??? SQL> CLEAR COLUMNS
?
?
?
四、SQL*Plus的系統參數:
?
??? show all???????? --顯示所有系統參數的當前值
??? show [參數]????? --顯示某個系統參數值
??? set? [參數][值]? --設置系統參數值
?
??? appinfo is OFF and set to "SQL*Plus"
??? arraysize 15
??? SQL*Plus一次從oracle獲取的行數,設置越大可提高效率,但是對內存有要求,1000以上效果不大
??? autocommit OFF
??? 針對session的自動提交
SQL> SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}?? --有IMM[EDIATE]則無需再ON
??? autoprint OFF
??? autorecovery OFF
??? autotrace OFF
??? 設置可以對執行的SQL進行分析 SQL> SET AUTOTRACE ON
??? blockterminator "." (hex 2e)
??? btitle OFF and is the first few characters of the next SELECT statement
??? cmdsep OFF
??? colsep " "
??? 設置列與列之間的分割符號 SQL> SET COLSEP '|'
??? compatibility version NATIVE
??? 數據庫版本,NATIVE為默認,可制定V6,V7,V8
??? concat "." (hex 2e)
??? copycommit 0
??? COPYTYPECHECK is ON
??? define "&" (hex 26)
??? 替換變量時所使用的字符
??? describe DEPTH 1 LINENUM OFF INDENT ON
??? echo OFF
??? 是否顯示執行代碼
SQL> SET ECHO {ON|OFF}
??? editfile "afiedt.buf"
??? embedded OFF
??? escape OFF
??? FEEDBACK ON for 6 or more rows
??? 查詢、修改時所影響的行數
SQL> SET FEED[BACK] {6|n|ON|OFF}
??? flagger OFF
??? flush ON
??? heading ON
??? 是否顯示列標題
SQL> SET HEA[DING] {ON|OFF}
??? headsep "|" (hex 7c)
??? instance "local"
??? linesize 100
??? 設置一行可容納的字符數
SQL> SET LIN[ESIZE] {80|n}
??? lno 8
??? loboffset 1
??? logsource ""
??? long 5000
??? longchunksize 80
??? markup HTML OFF ...
??? newpage 1
??? 頁與頁之間的分隔符
SQL> SET NEWP[AGE] {1|n|NONE}
????????????? 當set newpage 0 時,會在每頁的開頭有一個小的黑方框。
????????????? 當set newpage n 時,會在頁和頁之間隔著n個空行。
????????????? 當set newpage none 時,會在頁和頁之間沒有任何間隔。
??? null ""
??? 設置null值?
SQL> SET NULL 0.00
???????????????????? 但是此值顯示出來后必為字符型
??? numformat ""
??? numwidth 10
??? 設置number類型的長度限制 SQL> SET NUM[WIDTH] 16
??? pagesize 9999
??? 一頁顯示多少行
SQL> SET PAGES[IZE] {24|n}
???????????????????? 當設置為0時,則所有行顯示在一頁中,并且不顯示標題行
??? PAUSE is OFF
??? pno 1
??? recsep WRAP
??? recsepchar " " (hex 20)
??? release 1002000100
??? repfooter OFF and is NULL
??? repheader OFF and is NULL
??? serveroutput ON SIZE 1000000 FORMAT WORD_WRAPPED
??? 輸出DBMS.OUTPUT時是否顯示
SQL> SET SERVEROUT[PUT] {ON|OFF} [size n]
??? shiftinout INVISIBLE
??? showmode OFF
??? spool OFF
??? sqlblanklines OFF
??? sqlcase MIXED
??? sqlcode 0
??? sqlcontinue "> "
??? sqlnumber ON
??? sqlpluscompatibility 10.2.0
??? sqlprefix "#" (hex 23)
??? sqlprompt "
wangxiaoqi@DODO
> "
??? sqlterminator ";" (hex 3b)
??? suffix "sql"
??? tab ON
??? termout ON
??? 是否顯示輸出內容,例如spool輸出?
SQL> SET TERM[OUT] {ON|OFF}
??? timing OFF
??? SQL語句執行花費時間顯示?
set TIMING? {ON|OFF}
??? trimout ON
??? 標準輸出中每行最后的空格是否去掉
SQL> SET TRIMS[OUT] {ON|OFF}
??? trimspool ON
??? spool標準輸出中每行最后的空格是否去掉
SQL> SET TRIMS[OUT] {ON|OFF}
??? ttitle OFF and is the first few characters of the next SELECT statement
??? underline "-" (hex 2d)
??? USER is "WANGXIAOQI"
??? verify ON
??? wrap : lines will be wrapped
??? 當長度超過時是否回繞?
SQL> SET WRA[P] {ON|OFF}?? --基本上都要ON
?
?
?
五、一些常用的小操作:
?
??? show user????????????????????? --查看當前登錄用戶
??? show errors??????????????????? --顯示錯誤信息
??? show rel[ease]???????????????? --顯示版本
??? show SGA?????????????????????? --顯示SGA
??? set time on??????????????????? --前端始終顯示時間
??? select name from v$database;?? --查看當前所在數據庫
??? select * from v$instance;????? --查看所有數據庫實例(似乎沒什么用)
??? select * from V_$PWFILE_USERS; --查看那些用戶有SYSDBA/SYSOPER權限