SQLPLUS操作总结:
首先命令、SQL代码是不区分大小写;
SET SQLBLANKLINES ON:允许SQL代码的空行,默认一行内只输入回车表示SQL代码结束;
以替代变量的方式执行命令:(变量类型是字符类的需加上引号)
SQL> select * from spj where sno=&s;
输入 s 的值: 's5'
原值 1: select * from spj where sno=&s
新值 1: select * from spj where sno='s5'
SN PN JN QTY
-- -- -- ----------
s5 p2 j4 100
s5 p3 j1 200
s5 p6 j2 200
s5 p6 j4 500
当然可以同时有多个替代变量,比如:
SQL> update spj set qty=100 where sno=&sno and pno=&pno and jno=&jno;
输入 sno 的值: 's5'
输入 pno 的值: 'p6'
输入 jno 的值: 'j4'
原值 1: update spj set qty=100 where sno=&sno and pno=&pno and jno=&jno
新值 1: update spj set qty=100 where sno='s5' and pno='p6' and jno='j4'
已更新 1 行。
查询缓冲区中的SQL代码:
l(list)
修改缓冲区中的SQL代码:
比如执行了如下错误语句:
SQL> select % fron spj;
select % fron spj
*
第 1 行出现错误:
ORA-00911: 无效字符
用c(change)命令替换错误的代码:
SQL> c/% fron/* from
1* select * from spj
SQL> /
向缓冲区中添加代码:
常见的用法是对SQL语句添加where子句的限制条件:
SQL> select * from spj;
.
.
.
.
.
.
已选择19行。
SQL> a where sno='s5'
1* select * from spj where sno='s5'
SQL> /
SN PN JN QTY
-- -- -- ----------
s5 p2 j4 100
s5 p3 j1 200
s5 p6 j2 200
s5 p6 j4 100
get与@的区别:
@+文本文件路径:读取文件中的SQL代码至缓冲区并执行;
get+文本文件路径:只读取不执行
格式化列标签:
COL命令:
改变列宽
col 列名 format a10 【10个ASCII字符宽度,也就是5个宽字符】
col 列名 format 999,999,999 【以三位间隔的方式输出数值类型的值,适合查看字节类型的数值】
改变列名显示
col sno heading '供货商号'【实际的列名不会改变,仍可以引用原列名:sno 像:select * from spj where sno='s3';】
当然format子句和heading子句可以同时使用,这里就不再赘述;
注意:格式化列标签只在一个会话期间起作用,重新登陆后将不起作用,disconn断开连接操作不会新建会话
清除格式化:
col 列名cle(ar)
SQLPLUS中的分组统计:
COMP COUNT LABEL "计数" OF 被统计的字段名 ON 归类字段
做分组统计的前提是归类字段的break已经开启为on:break on 归类字段,否则不会显示统计数据;break on对于列的重复值的只在第一个显示一次,被归类字段具有重复值的记录必须在连续得处在记录集中,也就是说break on不对列做隐含的GROUP BY操作;
不过在做好了一次分组统计后,再要做其他字段的分组统计就不行了;
保存结果集:
spool+路径名
具体操作、显示结果
spool off
对于多次的操作的结果可以以追加的形式保存至同一个文件,只要在spool+路径名后再带上append参数。