1  常用SQL*PLUS 附加命令简介
Oracle公司提供的附加语句(或称命令),可以满足程序人员和管理员的一些特殊操作要求。比如,在显示超过上百行记录信息时,可以采用每屏“暂停”来实现。要达到这样的目的,就要在SQL>下发 set pause on 命令。由于SQL*PLUS命令较多,下面仅给出最常用的几个命令的说明,详细的请参考附录。
1.1  登录到SQL*PLUS
可以用下面命令登录到 SQL*PLUS,SQL*PLUS命令的简单语法如下:
SQLPLUS  [  [logon] | [start]  ]
logon可以是:
{username[/password][@connect_identifier]|/} [AS {SYSOPER|SYSDBA}]
|/NOLOG
注1:SQLPLUS 主要是在命令方式下使用,在NT、WINDOWS/2000、UNIX的用法都一样。
注2:如果在UNIX下,SQLPLUS命令不被识别(不存在),则问题在环境变量PATH没有设置正确或者没有设置。SQLPLUS 可执行程序在$ORACLE_HOME/bin 目录下。
1.2  EXIT和QUIT
可以用 exit 或quit 来终止SQL*PLUS的操作(会话)。语法如下:
{EXIT|QUIT} [SUCCESS|FAILURE|WARNING ] 
{EXIT|QUIT}  可以用exit 或quit ,目前它们的功能一样。
SUCCESS  正常退出
FAILURE  带提示错误代码的退出
WARNING  带提示警告代码的退出
COMMIT  退出前将未提交进行保存
例如:
SQL>exit

1.3  DESCRIBE(显示表、视图结构)
DESCRIBE可以用(只要用DESC即可)来显示表、视图的列的定义,也可以显示同义词、函数或存储过程的说明。语法如下:
DESC[RIBE] {[schema.]object[@connect_identifier]}

Schema:用户名,如果省去,则为对象的所有者。
object
可以是 表(table), 视图(view),类型( type), 存储过程(procedure),函数( function), 包(package)或同义词( synonym)
@connect_identifier
数据库连接字串
例:显示emp 表的结构:
SQL>desc emp
1.4  LIST(列出)命令
可以用 LIST 命令来列出当前SQL缓冲区中的一行或多行命令语句。        
L[IST] [n|n m|n *|n LAST|*|* n|* LAST|LAST]
n 列出第n行
n m 列出n到m行
n * 列出第n行到当前行
n LAST 列出第n行到最末行
*  列出所有行
* n  列出当前行到第n行
* LAST列出当前行到最末行
LAST 列出最末行
例:
SQL> LIST
1 SELECT ENAME, DEPTNO, JOB
2 FROM EMP
3 WHERE JOB = ’CLERK’
4* ORDER BY DEPTNO
1.5  Change(替换字符串)命令
可以用Change命令来改变字符串(即替换字符串)。语法如下:
C[HANGE] sepchar old [sepchar [new [sepchar]]]
Sepchar 为分隔符,可以是”/” 或”!”  -- 请使用者特别注意

Old 旧字串
New 新字串
例:将 除号(/)改为 乘号( * ),则需要命令为c !/!*! 。即:
SQL> l
  1* select sal,sal/100 from emp
SQL> c !/!*!
提醒:对于修改 / 字符的只能用 ! 来作分隔符(上例)。
例:将乘号( * )改为 加号( + ),则需要命令为c !/!*! 。即:
SQL> l
  1* select sal,sal*100 from emp
SQL> c/*/+/
  1* select sal,sal+100 from emp
SQL>
1.6  Append(追加字符串)命令
可以用 Append命令来完成在当前行的末尾追加字符串。语法如下:
A[PPEND] text
Text  所要求追加的字符串
例:在当前行select sal,sal+100 from emp 后加 where sal>=2000,则:
SQL> l
  1* select sal,sal+100 from emp
SQL> a  where sal>=2000
  1* select sal,sal+100 from emp where sal>=2000
SQL>
1.7  Save保存当前缓冲区命令到文件
可以用SAVE命令将当前的命令行保存到操作系统的文件中。语法如下:
SAV[E] filename[.ext] [CRE[ATE]|REP[LACE]|APP[END]]
其中:
filename:你将把缓冲区中的内容存入到操作系统目录的文件名。
ext:若使用文件后缀,缺省的文件后缀为SQL。
例:
SQL>select  table_name from dict where  table_name like ‘%ROLE%’;
SQL>save c:\get_role
1.8  GET将命令文件读到缓冲区
可以用GET 命令将操作系统的目录下的命令文件读到缓冲区(但不执行)。语法如下:
GET filename [.ext] [LIS[T]|NOL[IST]]
其中:
filename: 希望加载到SQL缓冲区的文件名
ext: 文件的扩展名,缺省为 SQL.
例:
SQL>get c:\get_role
1.9  SPOOL将信息记录到文件中
Oracle的SPOOL 命令可以实现将屏幕所出现的一切信息记录到操作系统的文件中直到SPOOL OFF为止。语法如下:
SPO[OL] [filename[.ext] | OFF | OUT]
其中:
filename:你想输出(spool)的文件名。
ext:文件的后缀。缺省的后缀是LST(或LIS)。
SQL>col table_name for a20
SQL>col comments for a80
SQL>set linesize 110
SQL>SPOOl c:\all_dict
SQL>select table_name,comments from dict;
 . . .  . . . (系统查询信息)
SQL>SPOOL OFF
1.10  再运行当前缓冲区的命令
在SQL>方式下,如果希望在运行当前的命令,可用Run(或R)或用 / 来实现,如:
SQL> set lin 120
SQL> select  table_name from dict where  table_name like '%ROLE%';
TABLE_NAME
------------------------------
DBA_ROLES
DBA_ROLE_PRIVS
USER_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_ROLES
已选择7行。
SQL> l
  1* select  table_name from dict where  table_name like '%ROLE%'
SQL> /
TABLE_NAME
------------------------------
DBA_ROLES
DBA_ROLE_PRIVS
USER_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_ROLES
已选择7行。