SQL * PLUS 常用命令

一、启动与退出
1、启动:sqlplus [username]/[password] [@connect_string]|[nolog]
2、退出:输入EXIT或QUIT,回车


二、连接与断开数据库
1、连接:conn[ect] [username]/[password] [@hoststring]
  以特权用户身份连接:后面加as sysdba或者as sysoper
conn[ect] [username]/[password] [@hoststring] as sysdba


2、断开:只是断开与数据库的连接,不退出SQL *PLUS
disc[onnect]


三、修改用户口令
passw[ord]
用于修改自身的口令,如果要修改其它用户口令,则必须以DBA身份登录
SQL>password  scott;
更改scott的口令


四、编辑命令
1、输入
  1).当输入完SQL *PLUS命令后,回车,则立即执行该命令
  2).当输入完SQL语句后,有三种处理方式:
①在语句最后加分号(;),并回车,则立即执行该语句;
②语句输入最后加空格并回车,换行后再回车,则结束SQL语句输入但不执行该语句
③语句输入结束后回车,换行后按斜杠(/),则立即执行该语句
  3).当输入完PL/SQL程序,回车换行后,如果按点号(.),则结束输入,但不执行;如果输入斜杠
      (/),则立即执行


2、显示缓冲区
  l[ist]


3、编辑缓冲区
  a[ppend]----将指定的文本追加到缓冲区内当前行的末尾;
  c[hange]----修改缓冲区当前的文本;
  del   ----删除缓冲区中的当前行的文本;
  n   ----用数值定位缓冲区中的当前行;
  i[nput] ----在缓冲区当前行的后面新增加一行文本;
  ed[it]  ----以记事本方式打开缓冲区,进行编辑;(Windows中常用)


4、执行缓冲区
  run或“/”


5、清除缓冲区
  clear [buffer]


五、文件操作命令
   通常。可以将经常执行的SQL *Plus命令、SQL语句或PL/SQL程序存储到SQL脚本文件中,然后执行
SQL脚本文件。这样可以降低命令输入量,还可以避免输入错误。


1、脚本文件的创建
  可以使用save命令将SQL缓冲区的内容保存到SQL脚本文件中


save filename [replace]


  如果filename文件不存在,则创建该文件;如果已存在,则覆盖该文件(需要使用replace参数)
  例如:
SQL> save c:\sqlscript.sql
已创建文件 c:\sqlscript.sql
SQL> save c:\sqlscript.sql
sp2-0540:文件"c:\sqlscript.sql"已经存在。
SQL> save c:\sqlscript.sql replace(覆盖)
已写入文件c:\sqlscript.sql  
  由于SQL *Plus 命令不会自动保存到缓冲区,因此,如果希望将SQL *Plus命令与SQL语句,PL/SQL
  程序一起保存到文件中,需使用input命令将SQL *Plus命令送入缓冲区,然后保存。
  例如:
SQL> clear buffer
buffer已清除
SQL> input
 1 column sal heading 'salary'
 2 select emno,ename,sal from emp where empno=7844
 3
SQL> save c:\sqlscript.sql


2、脚本文件的装载与编辑
  将SQL脚本文件装载到SQL *Plus 的SQL缓冲区中进行编辑

get filename [l[ist]]|[nol[ist]]
  使用list参数,会显示文件内容;使用nolist则不显示,默认是list
  例如:
sql> get c:\sqlscript
  l* select * from emp where empno=7844
sql> get c:\sqlscript nolist
sql>
  当脚本文件被装载到sql缓冲区后,可以使用edit命令编辑


3、脚本文件的执行
  通过start或@命令执行sql脚本文件

start filename 或 @filename

  filename中包含文件的完整路径


六、交互式命令
   如果希望一个sql脚本在执行时能够根据不同的条件进行,即运行时可以根据用户的不同输入而得 到不同的结果,就需


要在sql脚本文件中使用交互式命令。
1、替换变量
  1)使用替换变量
SQL *Plus 允许在SQL语句中使用替换变量,在变量名前加“&”。变量可以用define定义,
后面会说。如果变量没有定义,则会临时定义替换变量(该变量只在当前语句中起作用),
并需要为其输入数据。
/*如果替换变量为数值列提供数据,则可以直接引用;如果替换变量为字符类型或日期类型
列提供数据,则需要在SQL语句中将替换变量用单引号引起来*/


   例如:
sql> select empno,ename from emp where deptno=&x and job='&y';
输入x的值:10
输入y的值:manager
原值 1:select empno,ename from emp where deptno=&x and job='&y'
新值 1:select empno,ename from emp where deptno=10 and job='manager'
---------
---------
如果不希望每次执行都要赋值,可以在变量前加两个‘&’,这样只需赋值一次,就可以一直
使用。
   例如:
sql> select empno,ename from emp where deptno=&&no;
输入no的值:10
原值 1:select empno,ename from emp where deptno=&&no
新值 1:select empno,ename from emp where deptno=10
.....
sql> select empno,ename from emp where deptno=&&no;
原值 1:select empno,ename from emp where deptno=&&no
新值 1:select empno,ename from emp where deptno=10


  2)定义替换变量
可以使用define命令为当前SQL *Plus环境定义char类型的替换变量。例如:
sql> define dno='10'


  3)查看替换变量
sql> define


  4)清除替换变量
sql> undefine 变量

2、绑定变量
绑定变量是指在SQL *Plus中定义,在PL/SQL程序中使用的变量。
利用绑定变量可以将PL/SQL程序运行情况在SQL *Plus中显示出来。
在SQL *Plus中通过variable定义绑定变量,语法为:


variable variable_name type


/*在PL/SQL程序中引用绑定变量时,必须在变量名前加冒号(:)*/
/*在SQL *Plus中,使用execute命令给绑定变量赋值,使用print命令显示绑定变量的值*/


例如:
sql> variable v_sal number
sql> execute :v_sal:=10
PL/SQL过程已成功完成
sql> begin
 2 :v_sal:=20;
 3 end;
 4 /
PL/SQL过程已成功完成
sql> print v_sal
 v_sal
-----
 20


3、与用户通信
prompt:用于输出提示信息,引导用户操作
pause: 用于暂停脚本文件的运行
accept:让用户指定替换变量的类型,用prompt选项指定提示值,用hide选项隐藏输入,以
便于用户输入替换变量
例如:
sql> input
  1 prompt 显示工资高于XX的员工信息
  2 prompt 按<enter>键继续
  3 pause
  4 accept value number prompt '请输入工资界限:'
  5 select empno,ename,sal from emp where sal<&value
  6
sql> save c:\test
已创建文件c:\test.sql
sql> @c:\test
显示工资高于XX的员工信息
按<enter>键继续
请输入工资界限:3000
原值 1:select empno,ename,sal from emp where sal>&value
新值 1:select empno,ename,sal from emp where sal>3000


七、显示与设置环境变量(这个有界面操作,可以不使用命令)
1、show和set
2、arraysize
3、autocommit
4、colsp
5、feedback
6、heading
7、linesize
8、long
9、pagesize
10、serveroutput
11、time
12、timing


八、其它常用命令
1、显示表结构 desc[ribe] tablename
2、将SQL *Plus屏幕内容保存到文件 spool filename
3、清除屏幕内容 clear screen
4、帮助命令 help [内容]