sqlplus常用命令

常用的SQLPLUS输出格式化命令:
执行一个SQL脚本文件
SQL>start file_name
SQL>@ file_name
将显示的内容输出到指定文件
SQL> SPOOL file_name
关闭spool输出
SQL> SPOOL OFF
只有关闭spool输出,才会在输出文件中看到输出的内容。
改变列的显示长度.
字符型改变:
SQL> col colname format a40
数值型改变:
SQL> col colname format 99999.99
是否显示脚本中正在执行的SQL语句.
SQL> SET ECHO {ON|OFF}
是否显示当前sql语句查询或修改的行数.
SQL> SET FEED[BACK] {6|n|ON|OFF}
默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,
则不管查询到多少行都返回。当为off 时,一律不显示查询的行数
是否显示列标题
SQL> SET HEA[DING] {ON|OFF}
当set heading off 时,在每页的上面不显示列标题,而是以空白行代替
设置一行可以容纳的字符数
SQL> SET LIN[ESIZE] {80|n}
如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
设置页与页之间的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
当set newpage 0 时,会在每页的开头有一个小的黑方框。
当set newpage n 时,会在页和页之间隔着n个空行。
当set newpage none 时,会在页和页之间没有任何间隔。
设置一页有多少行数
SQL> SET PAGES[IZE] {24|n}
如果设为0,则所有的输出内容为一页并且不显示列标题
是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息
SQL> SET SERVEROUT[PUT] {ON|OFF}
这个在shell脚本中经常使用,默认buffer是256个字节。
当输出的大于256时,可以使用SET SERVEROUT on size 1000000;
最大buffer的缓冲区为1000000(9i and 8i)。
当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句
SQL> SET WRA[P] {ON|OFF}
当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),
当set wrap on时,输出行的多于的字符会另起一行显示,否则,
会将输出行的多于字符切除,不予显示。
是否在屏幕上显示输出的内容,主要用与SPOOL结合使用
SQL> SET TERM[OUT] {ON|OFF}
在用spool命令将一个大表中的内容输出到一个文件中时,
将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,
则输出的内容只会保存在输出文件中,不会显示在屏幕上,
极大的提高了spool的速度。
将SPOOL输出中每行后面多余的空格去掉
SQL> SET TRIMS[OUT] {ON|OFF}
显示每个sql语句花费的执行时间
SQL>set TIMING{ON|OFF}


SQL>set linesize 200------------------------设置屏幕宽度

SQL> set echo on—————————————————设置运行命令是是否显示语句
SQL> set feedback on———————————————-设置显示“已选择XX行”
SQL> set colsep | ———

——————————————设置列与列之间的分割符号
SQL> set pagesize 10———————————————–设置每一页的行数
SQL> SET SERVEROUTPUT ON——————————-设置允许显示输出类似dbms_output.putline
SQL> set heading on————————————————设置显示列名
SQL> set timing on————————————————–设置显示“已用时间:XXXX”
SQL> set time on—————————————————–设置显示当前时间
SQL> set autotrace on———————————————–设置允许对执行的sql进行分析

sqlplus sys/sys@DODO as sysdba
sqlplus /as sysdba

sqlplus /nolog

SQL>conn sys/sys@DODO as sysdba

1、执行一个SQL脚本

SQL> start D:\a.sql
SQL> @ D:\a.sql
注:若需要在一个脚本中调用另一个脚本,则使用 @@D:\a.sql

2、重新执行上一次命令:

SQL> / --也可使用 run/r 来替代执行

3、编辑脚本:

SQL> edit --编辑当前输入的文本(前1次执行的部分)
SQL> edit D:\a.sql --编辑制定文档
注:在txt中编辑完成后保存,关闭即修改完成,使用“/”后运行

4、保存脚本:

SQL> save a --自动存档为a.sql 保存在C:\Documents and Settings\wangxiaoqi
SQL> save D:\a --保存到D:\a.sql

5、导入脚本:

SQL> get D:\a

6、显示一个表结构:

SQL> desc tab --如果tab不是表,则只显示其类型和名字

7、保存所有输入:

SQL> spool D:\xxx --建立一个xxx.LST文件
SQL> spool --显示当前spool状态
SQL> select * from dual;
SQL> spool off --结束录入

8、执行过程
SQL> execute a;

9、增加页眉和页脚:

SQL> TTITLE abc --添加页眉“abc”
SQL> BTITLE def --添加页脚“def”
SQL> TTITLE OFF --取消页眉显示

三、COLUMN[COL]命令修改字段属性:

可以修改的属性有:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE { expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
注:若不同表的同列名,会一起改掉!

1、HEADING--改变字段名

SQL> COLUMN id HEADING 'XX|YY' --使用'|'可将列名显示为两行

2、FORMAT--改变字符长度 & 格式化数值

SQL> COLUMN id FORMAT a20 --此字段长20个字符,只能针对字符,若为数字则无法正常显示
SQL> COLUMN id FORMAT $999.00 --前缀$,小数点前3位,小数点后2位四舍五入

3、JUSTIFY--改变字段名显示位置

SQL> COLUMN id JUSTIFY center --居中显示,默认的都是靠右(r )显示

4、NOPRINT--不显示

SQL> COLUMN id NOPRINT --不显示出来,可用PRINT设置回来

5、NULL--设置NULL值显示

SQL> COLUMN COMM NULL 0.00 --将NULL值设置位0.00 注意必须加上COMM 注:不起作用。

6、WRAPPED--设置回绕方式

SQL> COLUMN id FORMAT a5 --设置长度为5
SQL> COLUMN id WRAPPED --表示直接按长度回绕
SQL> COLUMN id WORD_WRAPPED --按单词回绕
SQL> COLUMN id TRUNCATED --直接按长度截断

7、COLUMN--显示当前列所有属性

SQL> COLUMN id --后面不加列名时显示所有的COLUMN

8、OFF|ON--设置某一字段关闭

SQL> COLUMN id OFF

9、CLEAR--清空所有字段属性

SQL> CLEAR COLUMNS



四、SQL*Plus的系统参数:

show all --显示所有系统参数的当前值
show [参数] --显示某个系统参数值
set [参数][值] --设置系统参数值

appinfo is OFF and set to "SQL*Plus"
arraysize 15
SQL*Plus一次从oracle获取的行数,设置越大可提高效率,但是对内存有要求,1000以上效果不大
autocommit OFF
针对session的自动提交 SQL> SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} --有IMM[EDIATE]则无需再ON
autoprint OFF
autorecovery OFF
autotrace OFF
设置可以对执行的SQL进行分析 SQL> SET AUTOTRACE ON
blockterminator "." (hex 2e)
btitle OFF and is the first few characters of the next SELECT statement
cmdsep OFF
colsep " "
设置列与列之间的分割符号 SQL> SET COLSEP '|'
compatibility version NATIVE
数据库版本,NATIVE为默认,可制定V6,V7,V8
concat "." (hex 2e)
copycommit 0
COPYTYPECHECK is ON
define "&" (hex 26)
替换变量时所使用的字符
describe DEPTH 1 LINENUM OFF INDENT ON
echo OFF
是否显示执行代码 SQL> SET ECHO {ON|OFF}
editfile "afiedt.buf"
embedded OFF
escape OFF
FEEDBACK ON for 6 or more rows
查询、修改时所影响的行数 SQL> SET FEED[BACK] {6|n|ON|OFF}
flagger OFF
flush ON
heading ON
是否显示列标题 SQL> SET HEA[DING] {ON|OFF}
headsep "|" (hex 7c)
instance "local"
linesize 100
设置一行可容纳的字符数 SQL> SET LIN[ESIZE] {80|n}
lno 8
loboffset 1
logsource ""
long 5000
longchunksize 80
markup HTML OFF ...
newpage 1
页与页之间的分隔符 SQL> SET NEWP[AGE] {1|n|NONE}
当set newpage 0 时,会在每页的开头有一个小的黑方框。
当set newpage n 时,会在页和页之间隔着n个空行。
当set newpage none 时,会在页和页之间没有任何间隔。

null ""
设置null值 SQL> SET NULL 0.00
但是此值显示出来后必为字符型
numformat ""
numwidth 10
设置number类型的长度限制 SQL> SET NUM[WIDTH] 16
pagesize 9999
一页显示多少行 SQL> SET PAGES[IZE] {24|n}
当设置为0时,则所有行显示在一页中,并且不显示标题行
PAUSE is OFF
pno 1
recsep WRAP
recsepchar " " (hex 20)
release 1002000100
repfooter OFF and is NULL
repheader OFF and is NULL
serveroutput ON SIZE 1000000 FORMAT WORD_WRAPPED
输出DBMS.OUTPUT时是否显示 SQL> SET SERVEROUT[PUT] {ON|OFF} [size n]
shiftinout INVISIBLE
showmode OFF
spool OFF
sqlblanklines OFF
sqlcase MIXED
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlpluscompatibility 10.2.0
sqlprefix "#" (hex 23)
sqlprompt " wangxiaoqi@DODO > "
sqlterminator ";" (hex 3b)
suffix "sql"
tab ON
termout ON
是否显示输出内容,例如spool输出 SQL> SET TERM[OUT] {ON|OFF}
timing OFF
SQL语句执行花费时间显示 set TIMING {ON|OFF}
trimout ON
标准输出中每行最后的空格是否去掉 SQL> SET TRIMS[OUT] {ON|OFF}
trimspool ON
spool标准输出中每行最后的空格是否去掉 SQL> SET TRIMS[OUT] {ON|OFF}
ttitle OFF and is the first few characters of the next SELECT statement
underline "-" (hex 2d)
USER is "WANGXIAOQI"
verify ON
wrap : lines will be wrapped
当长度超过时是否回绕 SQL> SET WRA[P] {ON|OFF} --基本上都要ON



五、一些常用的小操作:

show user --查看当前登录用户
show errors --显示错误信息
show rel[ease] --显示版本
show SGA --显示SGA
set time on --前端始终显示时间
select name from v$database; --查看当前所在数据库
select * from v$instance; --查看所有数据库实例(似乎没什么用)
select * from V_$PWFILE_USERS; --查看那些用户有SYSDBA/SYSOPER权限


相关文档
最新文档