SQLPLUS环境命令

来源:互联网 发布:梯级水电站优化调度 编辑:程序博客网 时间:2024/06/07 20:48
sqlplus常用命令
当输入SQL语句时,SQL在SQLPLUS里的缓存中,这个缓存很小,只能允许一个SQL语句,当下一个SQL输入时,上一个SQL就被覆盖了
为了更有效的输入和编辑SQL语句,SQLPLUS提供了一些常用命令,与SQL语句相比,SQLPLUS里的命令可以缩写.
查看sqlplus里的所有命令
help index
查看sqlplus里某个命令的帮助
help cmd
show all 列出所有当前参数值
set line[size]{80|n}
设置显示宽度 默认是80 n可以自己定义
set line 100

l列出当前缓冲区内容
n整数.缓冲区中的指定行号
c/OLD/NEW 替换 NEW部分不写则是删除的意思
/ 或 r 运行
a 追加内容 一般和n先提取行后追加
del n 删除第n行的整行

1.输入错误的修正 方法一:
seker> select ename,sal
  2  from emq
  3  where sal <=1000;
from emq
      *
ERROR at line 2:
ORA-00942: table or view does not exist
执行后发现输入错误

seker> l  
  1  select ename,sal
  2  from emq
  3* where sal <=1000
L列出命令清单 发现第2行emp写成emq

seker> 2
  2* from emq
N命令提取指定行

seker> c/q/p
  2* from emp
c/OLD/NEW 替换

seker> l
  1  select ename,sal
  2  from emp
  3* where sal <=1000
列出当前的缓冲区查看

seker> /
ENAME  SAL
---------- ----------
SMITH  800
JAMES  950
seker> 
/执行当前缓冲区的命令


2.输入错误的修正 方法二:
seker> select ename,sal
  2  from emq
  3  where sal <=1000;
from emq
     *
ERROR at line 2:
ORA-00942: table or view does not exist
执行后发现输入错误

seker> l
  1  select ename,sal
  2  from emq
  3* where sal <=1000
L列出命令清单 发现第2行emp写成emq

seker> 2 from emp
n text 命令修改指定行的内容

seker> r
  1  select ename,sal
  2  from emp
  3* where sal <=1000

ENAME  SAL
---------- ----------
SMITH  800
JAMES  950

seker> 
r执行当前缓冲区的命令
a 追加操作
seker> l
  1  select ename,sal
  2  from emp
  3* where sal <=1000
seker> 1
  1* select ename,sal
seker> a ,job,deptno
  1* select ename,sal,job,deptno
seker> l
  1  select ename,sal,job,deptno
  2  from emp
  3* where sal <=1000
seker> /

ENAME  SAL JOB     DEPTNO
---------- ---------- --------- ----------
SMITH  800 CLERK 20
JAMES  950 CLERK 30

seker> 

del n命令 不可以简写为d
idle> l
  1  select ename,sal,job,deptno
  2  from emp
  3* where sal <=1000
idle> d 3
SP2-0042: unknown command "d 3" - rest of line ignored.
idle> del 3
idle> l
  1  select ename,sal,job,deptno
  2* from emp
idle> 

将当前缓冲区的内容另存到文件
idle> l
  1  select ename,sal,job,deptno
  2* from emp
idle> save abc.sql
Created file abc.sql
idle> host ls
abc.sql  afiedt.buf  oracle  sqlnet.log
idle> !cat abc.sql
select ename,sal,job,deptno
from emp
/
idle> 

加载文件中的语句到缓冲区
idle> l
  1* select * from emp
idle> get abc.sql
  1  select ename,sal,job,deptno
  2* from emp
idle> l
  1  select ename,sal,job,deptno
  2* from emp
idle> 

编辑缓冲区 
通过定义编辑器 define _editor = "vi"
或写在SQLPLUS环境变量文件中定义编辑器$ORACLE_HOME/sqlplus/admin/glogin.sql
之后执行ed

idle> !grep 'DEFINE_EDITOR' $ORACLE_HOME/sqlplus/admin/glogin.sql
DEFINE _EDITOR = "vim"  /* linux */
DEFINE _EDITOR = "notepad" /* windows */

idle> ed
Wrote file afiedt.buf

直接运行脚本 @file 或 start file
idle> !ls
abc.sql  afiedt.buf  oracle  sqlnet.log

idle> @abc.sql
idle> start abc.sql 
只装载不运行脚本
get file

将输出执行过程中的所有操作和输出另存到文件(屏幕录像) spool file .... spool off
idle> spool xyz.txt
idle> select ename,job,sal from emp where sal <=1000;

ENAME   JOB     SAL
---------- --------- ----------
SMITH   CLERK     800
JAMES   CLERK     950

idle> spool off
idle> !cat xyz.txt
idle> select ename,job,sal from emp where sal <=1000;

ENAME      JOB              SAL
---------- --------- ----------
SMITH      CLERK            800
JAMES      CLERK            950

idle> spool off

idle> 

col 列名 for [a]n 设置列的长度和显示类型(数值或字符)
col ename for a8 设置ename列的显示长度为8个字符
col sal for 99999设置sal列的显示长度为5位数字



替代变量
用于临时存储数值.
define 命令用于定义,显示,并查看替代变量结果
定义 查看
SQL> define name=SCOTT
SQL> define name
DEFINE NAME        = "SCOTT" (CHAR)
SQL> undefine name
SQL> define name
SP2-0135: symbol name is UNDEFINED
SQL> 

引用替代变量
对变量名添加&或者&&符号做前缀
SQL> define name=SCOTT
SQL> select ename,sal from emp where ename='&name';
old   1: select ename,sal from emp where ename='&name'
new   1: select ename,sal from emp where ename='SCOTT'

ENAME  SAL
---------- ----------
SCOTT 3000

SQL> select '&name','&name','&name' from dual;
old   1: select '&name','&name','&name' from dual
new   1: select 'SCOTT','SCOTT','SCOTT' from dual

'SCOT 'SCOT 'SCOT
----- ----- -----
SCOTT SCOTT SCOTT

SQL> undefine name
SQL> select '&name','&name','&name' from dual;
Enter value for name: SCOTT
Enter value for name: king
Enter value for name: seker
old   1: select '&name','&name','&name' from dual
new   1: select 'SCOTT','king','seker' from dual

'SCOT 'KIN 'SEKE
----- ---- -----
SCOTT king seker

为了避免重复输出 可以第一次使用双&&符号 以后的单&符号就是前面双&&符号的输入值
SQL> select '&&name','&name','&name' from dual;
Enter value for name: seker
old   1: select '&&name','&name','&name' from dual
new   1: select 'seker','seker','seker' from dual

'SEKE 'SEKE 'SEKE
----- ----- -----
seker seker seker

SQL>