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>