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