文章詳情頁
Oracle的sql*plus
瀏覽:7日期:2023-11-15 15:37:41
Oracle的sql*plus是與oracle進行交互的客戶端工具。在sql*plus中,可以運行sql*plus命令與sql*plus語句。 我們通常所說的DML、DDL、DCL語句都是sql*plus語句,它們執行完后,都可以保存在一個被稱為sql buffer的內存區域中,并且只能保存一條最近執行的sql語句,我們可以對保存在sql buffer中的sql 語句進行修改,然后再次執行,sql*plus一般都與數據庫打交道。 除了sql*plus語句,在sql*plus中執行的其它語句我們稱之為sql*plus命令。它們執行完后,不保存在sql buffer的內存區域中,它們一般用來對輸出的結果進行格式化顯示,以便于制作報表。 下面就介紹一下一些常用的sql*plus命令: 1. 執行一個SQL腳本文件 SQL>start file_name SQL>@ file_name 我們可以將多條sql語句保存在一個文本文件中,這樣當要執行這個文件中的所有的sql語句時,用上面的任一命令即可,這類似于dos中的批處理。 2. 對當前的輸入進行編輯 SQL>edit 3. 重新運行上一次運行的sql語句 SQL>/ 4. 將顯示的內容輸出到指定文件 SQL> SPOOL file_name 在屏幕上的所有內容都包含在該文件中,包括你輸入的sql語句。 5. 關閉spool輸出 SQL> SPOOL OFF 只有關閉spool輸出,才會在輸出文件中看到輸出的內容。 6.顯示一個表的結構 SQL> desc table_name 7. COL命令: 主要格式化列的顯示形式。 該命令有許多選項,具體如下: COL[UMN] [{ columneXPr} [ option ...]] Option選項可以是如下的子句: 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 { expralias} NEWL[INE] NEW_V[ALUE] variable NOPRI[NT]PRI[NT] NUL[L] text OLD_V[ALUE] variable ONOFF WRA[PPED]WOR[D_WRAPPED]TRU[NCATED] 1). 改變缺省的列標題 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME;;;;;LOC ---------- ---------------------------- --------- 10 ACCOUNTINGNEW YORK sql>col; LOC heading location sql>select * from dept; DEPTNO DNAME;;;;;location --------- ---------------------------- ----------- 10 ACCOUNTINGNEW YORK 2). 將列名ENAME改為新列名EMPLOYEE NAME并將新列名放在兩行上: Sql>select * from emp Department; nameSalary ---------- ---------- ---------- 10 aaa;;;;;11 SQL> COLUMN ENAME HEADING ’EmployeeName’ Sql>select * from emp Employee Department; nameSalary ---------- ---------- ----------; 10 aaa;;;;;11 note: the col heading turn into two lines from one line. 3). 改變列的顯示長度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME;;;JOB;;;;;---------- ----------;;--------- 7369 SMITH;;;CLERK;;; 7499 ALLEN;;;SALESMAN7521 WARD;;;;SALESMANSql> col ename format a40 EMPNO ENAME;JOB -------------------------------------------------- --------- 7369 SMITH;CLERK 7499 ALLEN;SALESMAN 7521 WARD;SALESMAN 4). 設置列標題的對齊方式 JUS[TIFY] {L[EFT]C[ENTER]C[ENTRE]R[IGHT]} SQL> col ename justify center SQL> / EMPNOENAMEJOB --------------------------------------------------;;;;--------- 7369 SMITH;CLERK 7499 ALLEN;SALESMAN 7521 WARD;;SALESMAN 對于NUMBER型的列,列標題缺省在右邊,其它類型的列標題缺省在左邊 5). 不讓一個列顯示在屏幕上 NOPRI[NT]PRI[NT] SQL> col job noprint SQL> / EMPNOENAME ----------;;---------------------------------------- 7369 SMITH 7499 ALLEN 7521 WARD 6). 格式化NUMBER類型列的顯示: SQL> COLUMN SAL FORMAT $99,990 SQL> / Employee Department Name;;;;;Salary;Commission ---------- ---------- --------- ---------- 30; ALLEN;;;;;$1,600;300 7). 顯示列值時,假如列值為NULL值,用text值代替NULL值 COMM NUL[L] text SQL>COL COMM NUL[L] text 8). 設置一個列的回繞方式 WRA[PPED]WOR[D_WRAPPED]TRU[NCATED] COL1 -------------------- HOW ARE YOU? SQL>COL COL1 FORMAT A5 SQL>COL COL1 WRAPPED COL1 ----- HOW A RE YO U? SQL> COL COL1 Word_WRAPPED COL1 ----- HOW ARE YOU? SQL> COL COL1 WORD_WRAPPED COL1 ----- HOW A 9). 顯示列的當前的顯示屬性值 SQL> COLUMN column_name 10). 將所有列的顯示屬性設為缺省值 SQL> CLEAR COLUMNS 8. 屏蔽掉一個列中顯示的相同的值 BREAK ON break_column SQL> BREAK ON DEPTNO SQL> SELECT DEPTNO, ENAME, SAL FROM EMP WHERE SAL < 2500 ORDER BY DEPTNO; DEPTNO;;;ENAME SAL ---------- ----------- --------- 10CLARK;;;;;2450 MILLER;;;1300 20;SMITH;;;;800 ADAMS;;;;1100 9. 在上面屏蔽掉一個列中顯示的相同的值的顯示中,每當列值變化時在值變化之前插入n個空行。 BREAK ON break_column SKIP n SQL> BREAK ON DEPTNO SKIP 1 SQL> / DEPTNO ENAME SAL ---------- ----------- --------- 10 CLARK 2450 MILLER 1300 20 SMITH 800 ADAMS 1100 10. 顯示對BREAK的設置 SQL> BREAK 11. 刪除6、7的設置 SQL> CLEAR BREAKS 12. Set 命令: 該命令包含許多子命令: SET system_variable value system_variable value 可以是如下的子句之一: APPI[NFO]{ONOFFtext} ARRAY[SIZE] {15n} AUTO[COMMIT]{ONOFFIMM[EDIATE]n} AUTOP[RINT] {ONOFF} AUTORECOVERY [ONOFF] AUTOT[RACE] {ONOFFTRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] BLO[CKTERMINATOR] {.c} CMDS[EP] {;cONOFF} COLSEP {_text} COM[PATIBILITY]{V7V8NATIVE} CON[CAT] {.cONOFF} COPYC[OMMIT] {0n} COPYTYPECHECK {ONOFF} DEF[INE] {&cONOFF} DESCRIBE [DEPTH {1nALL}][LINENUM {ONOFF}][INDENT {ONOFF}] ECHO {ONOFF} EDITF[ILE] file_name[.ext] EMB[EDDED] {ONOFF} ESC[APE] {cONOFF} FEED[BACK] {6nONOFF} FLAGGER {OFFENTRY INTERMED[IATE]FULL} FLU[SH] {ONOFF} HEA[DING] {ONOFF} HEADS[EP] {cONOFF} INSTANCE [instance_pathLOCAL] LIN[ESIZE] {80n} LOBOF[FSET] {n1} LOGSOURCE [pathname] LONG {80n} LONGC[HUNKSIZE] {80n} MARK[UP] Html [ONOFF] [HEAD text] [BODY text] [ENTMAP {ONOFF}] [SPOOL {ONOFF}] [PRE[FORMAT] {ONOFF}] NEWP[AGE] {1nNONE} NULL text NUMF[ORMAT] format NUM[WIDTH] {10n} PAGES[IZE] {24n} PAU[SE] {ONOFFtext} RECSEP {WR[APPED]EA[CH]OFF} RECSEPCHAR {_c} SERVEROUT[PUT] {ONOFF} [SIZE n] [FOR[MAT] {WRA[PPED]WOR[D_ WRAPPED]TRU[NCATED]}] SHIFT[INOUT] {VIS[IBLE]INV[ISIBLE]} SHOW[MODE] {ONOFF} SQLBL[ANKLINES] {ONOFF} SQLC[ASE] {MIX[ED]LO[WER]UP[PER]} SQLCO[NTINUE] {> text} SQLN[UMBER] {ONOFF} SQLPRE[FIX] {#c} SQLP[ROMPT] {SQL>text} SQLT[ERMINATOR] {;cONOFF} SUF[FIX] {SQLtext} TAB {ONOFF} TERM[OUT] {ONOFF} TI[ME] {ONOFF} TIMI[NG] {ONOFF} TRIM[OUT] {ONOFF} TRIMS[POOL] {ONOFF} UND[ERLINE] {-cONOFF} VER[IFY] {ONOFF} WRA[P] {ONOFF} 1). 設置當前session是否對修改的數據進行自動提交 SQL>SET AUTO[COMMIT] {ONOFFIMM[EDIATE] n} 2).在用start命令執行一個sql腳本時,是否顯示腳本中正在執行的SQL語句 SQL> SET ECHO {ONOFF} 3).是否顯示當前sql語句查詢或修改的行數 SQL> SET FEED[BACK] {6nONOFF} 默認只有結果大于6行時才顯示結果的行數。假如set feedback 1 ,則不管查詢到多少行都返回。當為off 時,一律不顯示查詢的行數 4).是否顯示列標題 SQL> SET HEA[DING] {ONOFF} 當set heading off 時,在每頁的上面不顯示列標題,而是以空白行代替 5).設置一行可以容納的字符數 SQL> SET LIN[ESIZE] {80n} 假如一行的輸出內容大于設置的一行可容納的字符數,則折行顯示。 6).設置頁與頁之間的分隔 SQL> SET NEWP[AGE] {1nNONE} 當set newpage 0 時,會在每頁的開頭有一個小的黑方框。 當set newpage n 時,會在頁和頁之間隔著n個空行。 當set newpage none 時,會在頁和頁之間沒有任何間隔。 7).顯示時,用text值代替NULL值 SQL> SET NULL text 8).設置一頁有多少行數 SQL> SET PAGES[IZE] {24n} 假如設為0,則所有的輸出內容為一頁并且不顯示列標題 9).是否顯示用DBMS_OUTPUT.PUT_LINE包進行輸出的信息。 SQL> SET SERVEROUT[PUT] {ONOFF}; 在編寫存儲過程時,我們有時會用dbms_output.put_line將必要的信息輸出,以便對存儲過程進行調試,只有將serveroutput變量設為on后,信息才能顯示在屏幕上。 10).當SQL語句的長度大于LINESIZE時,是否在顯示時截取SQL語句。 SQL> SET WRA[P] {ONOFF} 當輸出的行的長度大于設置的行的長度時(用set linesize n命令設置),當set wrap on時,輸出行的多于的字符會另起一行顯示,否則,會將輸出行的多于字符切除,不予顯示。 11).是否在屏幕上顯示輸出的內容,主要用與SPOOL結合使用。 SQL> SET TERM[OUT] {ONOFF} 在用spool命令將一個大表中的內容輸出到一個文件中時,將內容輸出在屏幕上會耗費大量的時間,設置set termspool off后,則輸出的內容只會保存在輸出文件中,不會顯示在屏幕上,極大的提高了spool的速度。 12).將SPOOL輸出中每行后面多余的空格去掉 SQL> SET TRIMS[OUT] {ONOFF}; 13)顯示每個sql語句花費的執行時間 set TIMING; {ONOFF} 14.修改sql buffer中的當前行中,第一個出現的字符串 C[HANGE] /old_value/new_value SQL> l 1* select * from dept SQL> c/dept/emp 1* select * from emp 15.編輯sql buffer中的sql語句 EDI[T] 16.顯示sql buffer中的sql語句,list n顯示sql buffer中的第n行,并使第n行成為當前行 L[IST] [n] 17.在sql buffer的當前行下面加一行或多行 I[NPUT] 18.將指定的文本加到sql buffer的當前行后面 A[PPEND] SQL> select deptno, 2; dname 3; from dept; DEPTNO DNAME ---------- -------------- 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS SQL> L 2 2* dname SQL> a ,loc 2* dname,loc SQL> L 1; select deptno, 2; dname,loc 3* from dept SQL> / DEPTNO DNAME; LOC ---------- -------------- ------------- 10 ACCOUNTING;;NEW YORK 20 RESEARCH;;;;DALLAS 30 SALES; CHICAGO 40 OPERATIONS;;BOSTON 19.將sql buffer中的sql語句保存到一個文件中 SAVE file_name 20.將一個文件中的sql語句導入到sql buffer中 GET file_name 21.再次執行剛才已經執行的sql語句 RUN or / 22.執行一個存儲過程 EXECUTE procedure_name 23.在sql*plus中連接到指定的數據庫 CONNECT user_name/passwd@db_alias 24.設置每個報表的頂部標題 TTITLE 25.設置每個報表的尾部標題 BTITLE 26.寫一個注釋 REMARK [text] 27.將指定的信息或一個空行輸出到屏幕上 PROMPT [text] 28.將執行的過程暫停,等待用戶響應后繼續執行 PAUSE [text] Sql>PAUSE Adjust paper and press RETURN to continue. 29.將一個數據庫中的一些數據拷貝到另外一個數據庫(如將一個表的數據拷貝到另一個數據庫) COPY {FROM database TO database FROM database TO database} {APPENDCREATEINSERTREPLACE} destination_table [(column, column, column, ...)] USING query sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST; create emp_temp USING SELECT * FROM EMP 30.不退出sql*plus,在sql*plus中執行一個操作系統命令: HOST Sql> host hostname 該命令在windows下可能被支持。 31.在sql*plus中,切換到操作系統命令提示符下,運行操作系統命令后,可以再次切換回sql*plus: ! sql>! $hostname $exit sql> 該命令在windows下不被支持。 32.顯示sql*plus命令的幫助 HELP 如何安裝幫助文件: Sql>@ ? qlplusadminhelphlpbld.sql ? qlplusadminhelphelpus.sql Sql>help index 33.顯示sql*plus系統變量的值或sql*plus環境變量的值 Syntax SHO[W] option where option represents one of the following terms or clauses: system_variable ALL BTI[TLE] ERR[ORS] [{FUNCTIONPROCEDUREPACKAGEPACKAGE BODY TRIGGERVIEWTYPETYPE BODY} [schema.]name] LNO PARAMETERS [parameter_name] PNO REL[EASE] REPF[OOTER] REPH[EADER] SGA SPOO[L] SQLCODE TTI[TLE] USER 1) . 顯示當前環境變量的值: Show all 2) . 顯示當前在創建函數、存儲過程、觸發器、包等對象的錯誤信息 Show error 當創建一個函數、存儲過程等出錯時,變可以用該命令查看在那個地方出錯及相應的出錯信息,進行修改后再次進行編譯。 3) . 顯示初始化參數的值: show PARAMETERS [parameter_name] 4) . 顯示數據庫的版本: show REL[EASE] 5) . 顯示SGA的大小 show SGA 6). 顯示當前的用戶名 show user
相關文章:
排行榜
