Oracle杂谈二 SQL*PLUS命令的使用大全

简介: Oracle杂谈二 SQL*PLUS命令的使用大全

 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] [{ column|expr} [ 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 { 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). 改变缺省的列标题  


COLUMN column_name HEADING column_heading  


For example:  


Sql>select * from dept;  


    DEPTNO DNAME                        LOC  


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


        10 ACCOUNTING                   NEW YORK  


sql>col  LOC heading location  


sql>select * from dept;  


   DEPTNO DNAME                        location  


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


       10 ACCOUNTING                   NEW YORK  


 


2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:  


Sql>select * from emp  


Department  name           Salary  


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


        10 aaa                11          


SQL> COLUMN ENAME HEADING ’Employee|Name’  


Sql>select * from emp  


           Employee  


Department  name           Salary  


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


        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      SALESMAN    


7521 WARD       SALESMAN    


Sql> 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> /  


     EMPNO           ENAME                   JOB  


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


      7369 SMITH                                    CLERK  


      7499 ALLEN                                    SALESMAN  


7521 WARD                                     SALESMAN  


对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边  


 


5). 不让一个列显示在屏幕上  


NOPRI[NT]|PRI[NT]  


SQL> col job noprint  


SQL> /  


     EMPNO           ENAME  


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


      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  


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


10           CLARK        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]{ON|OFF|text}  


ARRAY[SIZE] {15|n}  


AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}  


AUTOP[RINT] {ON|OFF}  


AUTORECOVERY [ON|OFF]  


AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]  


BLO[CKTERMINATOR] {.|c}  


CMDS[EP] {;|c|ON|OFF}  


COLSEP {_|text}  


COM[PATIBILITY]{V7|V8|NATIVE}  


CON[CAT] {.|c|ON|OFF}  


COPYC[OMMIT] {0|n}  


COPYTYPECHECK {ON|OFF}  


DEF[INE] {&|c|ON|OFF}  


DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]  


ECHO {ON|OFF}  


EDITF[ILE] file_name[.ext]  


EMB[EDDED] {ON|OFF}  


ESC[APE] {\|c|ON|OFF}  


FEED[BACK] {6|n|ON|OFF}  


FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}  


FLU[SH] {ON|OFF}  


HEA[DING] {ON|OFF}  


HEADS[EP] {||c|ON|OFF}  


INSTANCE [instance_path|LOCAL]  


LIN[ESIZE] {80|n}  


LOBOF[FSET] {n|1}  


LOGSOURCE [pathname]  


LONG {80|n}  


LONGC[HUNKSIZE] {80|n}  


MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL  


{ON|OFF}] [PRE[FORMAT] {ON|OFF}]  


NEWP[AGE] {1|n|NONE}  


NULL text  


NUMF[ORMAT] format  


NUM[WIDTH] {10|n}  


PAGES[IZE] {24|n}  


PAU[SE] {ON|OFF|text}  


RECSEP {WR[APPED]|EA[CH]|OFF}  


RECSEPCHAR {_|c}  


SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_  


WRAPPED]|TRU[NCATED]}]  


SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}  


SHOW[MODE] {ON|OFF}  


SQLBL[ANKLINES] {ON|OFF}  


SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}  


SQLCO[NTINUE] {> |text}  


SQLN[UMBER] {ON|OFF}  


SQLPRE[FIX] {#|c}  


SQLP[ROMPT] {SQL>|text}  


SQLT[ERMINATOR] {;|c|ON|OFF}  


SUF[FIX] {SQL|text}  


TAB {ON|OFF}  


TERM[OUT] {ON|OFF}  


TI[ME] {ON|OFF}  


TIMI[NG] {ON|OFF}  


TRIM[OUT] {ON|OFF}  


TRIMS[POOL] {ON|OFF}  


UND[ERLINE] {-|c|ON|OFF}  


VER[IFY] {ON|OFF}  


WRA[P] {ON|OFF}  


 


1). 设置当前session是否对修改的数据进行自动提交    


SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}  


 


2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句    


SQL> SET ECHO {ON|OFF}  


 


3).是否显示当前sql语句查询或修改的行数    


SQL> SET FEED[BACK] {6|n|ON|OFF}  


  默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数    


 


4).是否显示列标题  


SQL> SET HEA[DING] {ON|OFF}  


当set heading off 时,在每页的上面不显示列标题,而是以空白行代替    


 


5).设置一行可以容纳的字符数  


SQL> SET LIN[ESIZE] {80|n}  


  如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。    


 


6).设置页与页之间的分隔  


SQL> SET NEWP[AGE] {1|n|NONE}  


当set newpage 0 时,会在每页的开头有一个小的黑方框。    


当set newpage n 时,会在页和页之间隔着n个空行。    


当set newpage none 时,会在页和页之间没有任何间隔。    


 


7).显示时,用text值代替NULL值    


SQL> SET NULL text  


 


8).设置一页有多少行数  


SQL> SET PAGES[IZE] {24|n}  


如果设为0,则所有的输出内容为一页并且不显示列标题    


 


9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。    


SQL> SET SERVEROUT[PUT] {ON|OFF}    


在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。    


 


10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。    


SQL> SET WRA[P] {ON|OFF}  


  当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。    


 


11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。    


SQL> SET TERM[OUT] {ON|OFF}  


  在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。    


 


12).将SPOOL输出中每行后面多余的空格去掉    


SQL> SET TRIMS[OUT] {ON|OFF}    


   


13)显示每个sql语句花费的执行时间    


set TIMING  {ON|OFF}  


 


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}  


{APPEND|CREATE|INSERT|REPLACE} 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>@ ?\sqlplus\admin\help\hlpbld.sql ?\sqlplus\admin\help\helpus.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] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|  


TRIGGER|VIEW|TYPE|TYPE 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  


目录
相关文章
|
8天前
|
SQL 存储 Oracle
Oracle的PL/SQL定义变量和常量:数据的稳定与灵动
【4月更文挑战第19天】在Oracle PL/SQL中,变量和常量扮演着数据存储的关键角色。变量是可变的“魔术盒”,用于存储程序运行时的动态数据,通过`DECLARE`定义,可在循环和条件判断中体现其灵活性。常量则是不可变的“固定牌”,一旦设定值便保持不变,用`CONSTANT`声明,提供程序稳定性和易维护性。通过 `%TYPE`、`NOT NULL`等特性,可以更高效地管理和控制变量与常量,提升代码质量。善用两者,能优化PL/SQL程序的结构和性能。
|
1月前
|
Oracle 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB(Oracle兼容版) 执行命令报错如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
5天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
8天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
8天前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
8天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL条件控制:数据的“红绿灯”与“分岔路”
【4月更文挑战第19天】在Oracle PL/SQL中,IF语句与CASE语句扮演着数据流程控制的关键角色。IF语句如红绿灯,依据条件决定程序执行路径;ELSE和ELSIF提供多分支逻辑。CASE语句则是分岔路,按表达式值选择执行路径。这些条件控制语句在数据验证、错误处理和业务逻辑中不可或缺,通过巧妙运用能实现高效程序逻辑,保障数据正确流转,支持企业业务发展。理解并熟练掌握这些语句的使用是成为合格数据管理员的重要一环。
|
8天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL表达式:数据的魔法公式
【4月更文挑战第19天】探索Oracle PL/SQL表达式,体验数据的魔法公式。表达式结合常量、变量、运算符和函数,用于数据运算与转换。算术运算符处理数值计算,比较运算符执行数据比较,内置函数如TO_CHAR、ROUND和SUBSTR提供多样化操作。条件表达式如CASE和NULLIF实现灵活逻辑判断。广泛应用于SQL查询和PL/SQL程序,助你驾驭数据,揭示其背后的规律与秘密,成为数据魔法师。
|
1月前
|
SQL Oracle 关系型数据库
Oracle系列十一:PL/SQL
Oracle系列十一:PL/SQL
|
SQL 关系型数据库 Oracle
|
SQL Oracle 关系型数据库
Oracle SQL*Plus命令
登录数据库: 方式(1)当我们刚安装Oracle数据库时,登录账户时可以使用win+r 输入sqlplus,进入sqlplus命令窗口,然后输入用户名和密码,这里输入密码时不会有回显    方式(2)使用win+r 输入cmd,进入dos命令窗口,然后输入用户名和密码,这里输入密码时不会有回显 ...
700 0

推荐镜像

更多