知识大全 SQL*PLUS命令的使用大全

Posted 命令

篇首语:勤勉而顽强地钻研,永远可以使你百尺竿头更进一步。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL*PLUS命令的使用大全相关的知识,希望对你有一定的参考价值。

SQL*PLUS命令的使用大全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  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命令   执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中 这样当要执行这个文件中的所有的sql语句时 用上面的任一命令即可 这类似于dos中的批处理

  @与@@的区别是什么?@等于start命令 用来运行一个sql脚本文件 @命令调用当前目录下的 或指定全路径 或可以通过SQLPATH环境变量搜寻到的脚本文件 该命令使用是一般要指定要执行的文件的全路径 否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件 @@用在sql脚本文件中 用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下 而不用指定要执行sql脚本文件的全路径 也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件 该命令一般用在脚本文件中 如 在c:\\temp目录下有文件start sql和nest_start sql start sql脚本文件的内容为 @@nest_start sql     相当于@ c:\\temp\\nest_start sql则我们在sql*plus中 这样执行 SQL> @ c:\\temp\\start sql

   对当前的输入进行编辑 SQL>edit   重新运行上一次运行的sql语句 SQL>/   将显示的内容输出到指定文件 SQL> SPOOL file_name    在屏幕上的所有内容都包含在该文件中 包括你输入的sql语句   关闭spool输出 SQL> SPOOL OFF    只有关闭spool输出 才会在输出文件中看到输出的内容   .显示一个表的结构 SQL> desc table_name   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]   ) 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept;      DEPTNO DNAME                        LOC          ACCOUNTING                   NEW YORK sql>col  LOC heading location sql>select * from dept;     DEPTNO DNAME                        location         ACCOUNTING                   NEW YORK   ) 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上 Sql>select * from emp Department  name           Salary          aaa                         SQL> COLUMN ENAME HEADING Employee|Name Sql>select * from emp             Employee Department  name           Salary            aaa                note: the col heading turn into o lines from one line   ) 改变列的显示长度 FOR[MAT] format Sql>select empno ename job from emp;       EMPNO ENAME      JOB                    SMITH      CLERK             ALLEN      SALESMAN   WARD       SALESMAN   Sql> col ename format a       EMPNO ENAME                                    JOB                    SMITH                                    CLERK        ALLEN                                    SALESMAN        WARD                                    SALESMAN   ) 设置列标题的对齐方式 JUS[TIFY] L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT] SQL> col ename justify center SQL> /       EMPNO           ENAME                   JOB                  SMITH                                    CLERK        ALLEN                                    SALESMAN WARD                                     SALESMAN 对于NUMBER型的列 列标题缺省在右边 其它类型的列标题缺省在左边   ) 不让一个列显示在屏幕上 NOPRI[NT]|PRI[NT] SQL> col job noprint SQL> /       EMPNO           ENAME             SMITH        ALLEN WARD   ) 格式化NUMBER类型列的显示 SQL> COLUMN SAL FORMAT $ SQL> / Employee Department Name        Salary    Commission           ALLEN        $       ) 显示列值时 如果列值为NULL值 用text值代替NULL值 M NUL[L] text SQL>COL M NUL[L] text   ) 设置一个列的回绕方式 WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]         COL HOW ARE YOU?   SQL>COL COL FORMAT A SQL>COL COL WRAPPED COL HOW A RE YO U?   SQL> COL COL WORD_WRAPPED COL HOW ARE YOU?   SQL> COL COL WORD_WRAPPED COL HOW A   ) 显示列的当前的显示属性值 SQL> COLUMN column_name   ) 将所有列的显示属性设为缺省值 SQL> CLEAR COLUMNS   屏蔽掉一个列中显示的相同的值 BREAK ON break_column SQL> BREAK ON DEPTNO SQL> SELECT DEPTNO ENAME SAL FROM EMP   WHERE SAL <   ORDER BY DEPTNO; DEPTNO      ENAME         SAL            CLARK        MILLER                  SMITH       ADAMS         在上面屏蔽掉一个列中显示的相同的值的显示中 每当列值变化时在值变化之前插入n个空行 BREAK ON break_column SKIP n   SQL> BREAK ON DEPTNO SKIP SQL> / DEPTNO ENAME SAL CLARK MILLER   SMITH ADAMS   显示对BREAK的设置 SQL> BREAK   删除 的设置 SQL> CLEAR BREAKS   Set 命令 该命令包含许多子命令 SET system_variable value system_variable value 可以是如下的子句之一 APPI[NFO]ON|OFF|text ARRAY[SIZE] |n AUTO[MIT]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 [PATIBILITY]V |V |NATIVE CON[CAT] |c|ON|OFF COPYC[OMMIT] |n COPYTYPECHECK ON|OFF DEF[INE] &|c|ON|OFF DESCRIBE [DEPTH |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] |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] |n LOBOF[FSET] n| LOGSOURCE [pathname] LONG |n LONGC[HUNKSIZE] |n MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP ON|OFF] [SPOOL ON|OFF] [PRE[FORMAT] ON|OFF] NEWP[AGE] |n|NONE NULL text NUMF[ORMAT] format NUM[WIDTH] |n PAGES[IZE] |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   ) 设置当前session是否对修改的数据进行自动提交 SQL>SET AUTO[MIT] ON|OFF|IMM[EDIATE]| n   ).在用start命令执行一个sql脚本时 是否显示脚本中正在执行的SQL语句 SQL> SET ECHO ON|OFF   ) 是否显示当前sql语句查询或修改的行数 SQL> SET FEED[BACK] |n|ON|OFF    默认只有结果大于 行时才显示结果的行数 如果set feedback 则不管查询到多少行都返回 当为off 时 一律不显示查询的行数   ) 是否显示列标题 SQL> SET HEA[DING] ON|OFF 当set heading off 时 在每页的上面不显示列标题 而是以空白行代替   ) 设置一行可以容纳的字符数 SQL> SET LIN[ESIZE] |n    如果一行的输出内容大于设置的一行可容纳的字符数 则折行显示   ) 设置页与页之间的分隔 SQL> SET NEWP[AGE] |n|NONE 当set newpage 时 会在每页的开头有一个小的黑方框 当set newpage n 时 会在页和页之间隔着n个空行 当set newpage none 时 会在页和页之间没有任何间隔   ) 显示时 用text值代替NULL值 SQL> SET NULL text   ) 设置一页有多少行数 SQL> SET PAGES[IZE] |n 如果设为 则所有的输出内容为一页并且不显示列标题   ) 是否显示用DBMS_OUTPUT PUT_LINE包进行输出的信息 SQL> SET SERVEROUT[PUT] ON|OFF  在编写存储过程时 我们有时会用dbms_output put_line将必要的信息输出 以便对存储过程进行调试 只有将serveroutput变量设为on后 信息才能显示在屏幕上   ) 当SQL语句的长度大于LINESIZE时 是否在显示时截取SQL语句 SQL> SET WRA[P] ON|OFF    当输出的行的长度大于设置的行的长度时(用set linesize n命令设置) 当set wrap on时 输出行的多于的字符会另起一行显示 否则 会将输出行的多于字符切除 不予显示   ) 是否在屏幕上显示输出的内容 主要用与SPOOL结合使用 SQL> SET TERM[OUT] ON|OFF    在用spool命令将一个大表中的内容输出到一个文件中时 将内容输出在屏幕上会耗费大量的时间 设置set termspool off后 则输出的内容只会保存在输出文件中 不会显示在屏幕上 极大的提高了spool的速度   ) 将SPOOL输出中每行后面多余的空格去掉 SQL> SET TRIMS[OUT] ON|OFF      )显示每个sql语句花费的执行时间 set TIMING  ON|OFF

   ) 遇到空行时不认为语句已经结束 从后续行接着读入 SET SQLBLANKLINES ONSql*plus中 不允许sql语句中间有空行 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦 比如下面的脚本:select deptno empno enamefrom emp

  where empno = ;如果拷贝到sql*plus中执行 就会出现错误 这个命令可以解决该问题

   ) 设置DBMS_OUTPUT的输出SET SERVEROUTPUT ON BUFFER 用dbms_output put_line( strin_content );可以在存储过程中输出信息 对存储过程进行调试如果想让dbms_output put_line(      abc );的输出显示为 SQL>     abc 而不是SQL>abc 则在SET SERVEROUTPUT ON后加format wrapped参数

   ) 输出的数据为格式set markup 在 版本(也许是 ? 不太确定)以后 sql*plus中有一个set markup 的命令 可以将sql*plus的输出以格式展现 注意其中的spool on 当在屏幕上输出的时候 我们看不出与不加spool on有什么区别 但是当我们使用spool filename 输出到文件的时候 会看到spool文件中出现了等tag

   .修改sql buffer中的当前行中 第一个出现的字符串 C[HANGE] /old_value/new_value SQL> l    * select * from dept SQL> c/dept/emp    * select * from emp   .编辑sql buffer中的sql语句 EDI[T]   .显示sql buffer中的sql语句 list n显示sql buffer中的第n行 并使第n行成为当前行 L[IST] [n]   .在sql buffer的当前行下面加一行或多行 I[NPUT]   .将指定的文本加到sql buffer的当前行后面 A[PPEND] SQL> select deptno      dname      from dept;      DEPTNO DNAME          ACCOUNTING          RESEARCH          SALES          OPERATIONS   SQL> L    * dname SQL> a loc    * dname loc SQL> L      select deptno      dname loc    * from dept SQL> /        DEPTNO DNAME          LOC          ACCOUNTING     NEW YORK          RESEARCH       DALLAS          SALES          CHICAGO          OPERATIONS     BOSTON   .将sql buffer中的sql语句保存到一个文件中 SAVE file_name   .将一个文件中的sql语句导入到sql buffer中 GET file_name   .再次执行刚才已经执行的sql语句 RUN or /   .执行一个存储过程 EXECUTE procedure_name   .在sql*plus中连接到指定的数据库 CONNECT user_name/passwd@db_alias   .设置每个报表的顶部标题 TTITLE   .设置每个报表的尾部标题 BTITLE   .写一个注释 REMARK [text]   .将指定的信息或一个空行输出到屏幕上 PROMPT [text]   .将执行的过程暂停 等待用户响应后继续执行 PAUSE [text]   Sql>PAUSE Adjust paper and press RETURN to continue   .将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库) 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   .不退出sql*plus 在sql*plus中执行一个操作系统命令 HOST   Sql> host hostname 该命令在windows下可能被支持   .在sql*plus中 切换到操作系统命令提示符下 运行操作系统命令后 可以再次切换回sql*plus !   sql>! $hostname $exit sql>   该命令在windows下不被支持   .显示sql*plus命令的帮助 HELP 如何安装帮助文件 Sql>@ ?\\sqlplus\\admin\\help\\hlpbld sql ?\\sqlplus\\admin\\help\\helpus sql Sql>help index   .显示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   ) 显示当前环境变量的值 Show all   ) 显示当前在创建函数 存储过程 触发器 包等对象的错误信息 Show error 当创建一个函数 存储过程等出错时 变可以用该命令查看在那个地方出错及相应的出错信息 进行修改后再次进行编译   ) 显示初始化参数的值 show PARAMETERS [parameter_name]   ) 显示数据库的版本 show REL[EASE]   ) 显示SGA的大小 show SGA   ) 显示当前的用户名 show user

   查询一个用户下的对象SQL>select * from tab;SQL>select * from user_objects;

   查询一个用户下的所有的表SQL>select * from user_tables;

   查询一个用户下的所有的索引SQL>select * from user_indexes;

   定义一个用户变量方法有两个 a defineb COL[UMN] [column|expr NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]                            OLD_V[ALUE] variable  [NOPRI[NT]|PRI[NT]]

  下面对每种方式给予解释 a SyntaxDEF[INE] [variable]|[variable = text]定义一个用户变量并且可以分配给它一个CHAR值

  assign the value MANAGER to the variable POS type:SQL> DEFINE POS = MANAGER

  assign the CHAR value to the variable DEPTNO type:SQL> DEFINE DEPTNO =

  list the definition of DEPTNO enterSQL> DEFINE DEPTNO        ―――――――――――――――DEFINE DEPTNO = (CHAR)

  定义了用户变量POS后 就可以在sql*plus中用&POS或&&POS来引用该变量的值 sql*plus不会再提示你给变量输入值

  b COL[UMN] [column|expr NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]NEW_V[ALUE] variable指定一个变量容纳查询出的列值 例:column col_name new_value var_name noprint   select col_name from table_name where …… 将下面查询出的col_name列的值赋给var_name变量

  一个综合的例子:得到一个列值的两次查询之差(此例为 秒之内共提交了多少事务):column redo_writes new_value mit_count

  select sum(stat value) redo_writesfrom v$sesstat stat v$statname snwhere stat statistic# = sn statistic#and sn name = user mits ;

   等待一会儿(此处为 秒);execute dbms_lock sleep( );

  set veri offselect sum(stat value) &mit_count mits_addedfrom v$sesstat stat v$statname snwhere stat statistic# = sn statistic#and sn name = user mits ;

   定义一个绑定变量VAR[IABLE] [variable [NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR (n)|NVARCHAR (n)|CLOB|NCLOB|REFCURSOR]]定义一个绑定变量 该变量可以在pl/sql中引用 可以用print命令显示该绑定变量的信息 如 column inst_num  heading Inst Num   new_value inst_num  format ;column inst_name heading Instance   new_value inst_name format a ;column db_name   heading DB Name    new_value db_name   format a ;column dbid      heading DB Id      new_value dbid      format just c;

  promptprompt Current Instanceprompt ~~~~~~~~~~~~~~~~

  select d dbid            dbid     d name            db_name     i instance_number inst_num     i instance_name   inst_name  from v$database d        v$instance i;

  variable dbid       number;variable inst_num   number;begin  :dbid      :=  &dbid;  :inst_num  :=  &inst_num;end;/说明 在sql*plus中 该绑定变量可以作为一个存储过程的参数 也可以在匿名PL/SQL块中直接引用 为了显示用VARIABLE命令创建的绑定变量的值 可以用print命令

  注意 绑定变量不同于变量 .        定义方法不同 .        引用方法不同绑定变量 :variable_name        变量 &variable_name or &&variable_name 在sql*plus中 可以定义同名的绑定变量与用户变量 但是引用的方法不同

   &与&&的区别&用来创建一个临时变量 每当遇到这个临时变量时 都会提示你输入一个值 &&用来创建一个持久变量 就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样 当用&&命令引用这个变量时 不会每次遇到该变量就提示用户键入值 而只是在第一次遇到时提示一次

  如 将下面三行语句存为一个脚本文件 运行该脚本文件 会提示三次 让输入deptnoval的值 select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;

  将下面三行语句存为一个脚本文件 运行该脚本文件 则只会提示一次 让输入deptnoval的值 select count(*) from emp where deptno = &&deptnoval;select count(*) from emp where deptno = &&deptnoval;select count(*) from emp where deptno = &&deptnoval;

   .在输入sql语句的过程中临时先运行一个sql*plus命令(摘自)#有没有过这样的经历? 在sql*plus中敲了很长的命令后 突然发现想不起某个列的名字了 如果取消当前的命令 待查询后再重敲 那太痛苦了 当然你可以另开一个sql*plus窗口进行查询 但这里提供的方法更简单

  比如说 你想查工资大于 的员工的信息 输入了下面的语句:

  SQL> select deptno empno ename from emp where这时 你发现你想不起来工资的列名是什么了

  这种情况下 只要在下一行以#开头 就可以执行一条sql*plus命令 执行完后 刚才的语句可以继续输入

  SQL>> select deptno empno ename from emp where #desc empName Null? Type EMPNO NOT NULL NUMBER( )ENAME VARCHAR ( )JOB VARCHAR ( )MGR NUMBER( )HIREDATE DATESAL NUMBER( )M NUMBER( )DEPTNO NUMBER( )

   sal > ;

  DEPTNO EMPNO ENAME KING

cha138/Article/program/Oracle/201311/18384

相关参考

知识大全 Oracle中SQL*PLUS使用的一些技巧

Oracle中SQL*PLUS使用的一些技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Sq

知识大全 安装好Oracle后SQL*Plus的操作初步

安装好Oracle后SQL*Plus的操作初步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  系

知识大全 使用Expect和命名管状远程控制SQL*Plus

使用Expect和命名管状远程控制SQL*Plus  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 解决使用ORACLE SQL*PLUS时没有监听器的问题

解决使用ORACLESQL*PLUS时没有监听器的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 如何在SQL *Plus中把数据库栏以变量的形式保存

如何在SQL*Plus中把数据库栏以变量的形式保存  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 oracle中怎样从sql*plus向shell传递变量

很多人在实际的工作和学习中都遇到了无法通过sqlplus向shell传递变量下面我们来介绍一个实例脚本来进行折中处理  >  下面我们再来介绍另一个实例方法  >>>cha138/Artic

知识大全 sqlplus中隐患组合键

  关于sqlplus中隐患组合键今天就来详细解说一下吧!  SQLPlus  在UNIX/Linux平台中的SQL*Plus命令行提示符下如果误按了组合键  Ctrl+S那么这个会话将被锁定输入任何

知识大全 SQL命令查询Oracle存储过程信息

SQL命令查询Oracle存储过程信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SELEC

知识大全 SQL SERVER DBCC命令解释

SQLSERVERDBCC命令解释  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQLSERV

知识大全 深入浅出SQL系列教程之基本SELECT命令

深入浅出SQL系列教程之基本SELECT命令  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  se