SQLPLUS命令的使用大全.doc

上传人:hw****26 文档编号:3552853 上传时间:2019-06-04 格式:DOC 页数:16 大小:51.50KB
下载 相关 举报
SQLPLUS命令的使用大全.doc_第1页
第1页 / 共16页
SQLPLUS命令的使用大全.doc_第2页
第2页 / 共16页
SQLPLUS命令的使用大全.doc_第3页
第3页 / 共16页
SQLPLUS命令的使用大全.doc_第4页
第4页 / 共16页
SQLPLUS命令的使用大全.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、SQL*PLUS 命令的使用大全(已更新)2006.01.01 更新:添加了set 命令中的 14) - 16),34 - 41SQL*PLUS 命令的使用大全 Oracle 的 sql*plus 是与 oracle 进行交互的客户端工具。在 sql*plus 中,可以运行 sql*plus 命令与sql*plus 语句。 我们通常所说的 DML、DDL 、DCL 语句都是 sql*plus 语句,它们执行完后,都可以保存在一个被称为sql buffer 的内存区域中,并且只能保存一条最近执行的 sql 语句,我们可以对保存在 sql buffer 中的 sql 语句进行修改,然后再次执行,s

2、ql*plus 一般都与数据库打交道。 除了 sql*plus 语句,在 sql*plus 中执行的其它语句我们称之为 sql*plus 命令。它们执行完后,不保存在sql buffer 的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的 sql*plus 命令: 1. 执行一个 SQL 脚本文件 SQLstart file_name SQL file_name 我们可以将多条 sql 语句保存在一个文本文件中,这样当要执行这个文件中的所有的 sql 语句时,用上面的任一命令即可,这类似于 dos 中的批处理。 与 的区别是什么?等于 start

3、命令,用来运行一个 sql 脚本文件。命令调用当前目录下的,或指定全路径,或可以通过 SQLPATH 环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用 SQLPATH 变量指定)下读取指定的文件。用在 sql 脚本文件中,用来说明用执行的 sql 脚本文件与所在的文件在同一目录下,而不用指定要执行 sql 脚本文件的全路径,也不是从 SQLPATH 环境变量指定的路径中寻找 sql 脚本文件,该命令一般用在脚本文件中。如:在 c:temp 目录下有文件 start.sql 和 nest_start.sql,start.sql 脚本文件的内容为:nest

4、_start.sql - - 相当于 c:tempnest_start.sql则我们在 sql*plus 中,这样执行:SQL c:tempstart.sql 2. 对当前的输入进行编辑 SQLedit 3. 重新运行上一次运行的 sql 语句 SQL/ 4. 将显示的内容输出到指定文件 SQL SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的 sql 语句。 5. 关闭 spool 输出 SQL SPOOL OFF 只有关闭 spool 输出,才会在输出文件中看到输出的内容。 6显示一个表的结构 SQL desc table_name 7. COL 命令: 主

5、要格式化列的显示形式。 该命令有许多选项,具体如下: COLUMN column|expr option . Option 选项可以是如下的子句 : ALIAS alias CLEAR FOLD_AFTER FOLD_BEFORE FORMAT format HEADING text JUSTIFY LEFT|CENTER|CENTRE|RIGHT LIKE expr|alias NEWLINE NEW_VALUE variable NOPRINT|PRINT NULL text OLD_VALUE variable ON|OFF WRAPPED|WORD_WRAPPED|TRUNCATED

6、1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sqlselect * from dept; DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK sqlcol LOC heading location sqlselect * from dept; DEPTNO DNAME location - - - 10 ACCOUNTING NEW YORK 2). 将列名 ENAME 改为新列名 EMPLOYEE NAME 并将新列名放在两行上: Sqlselect * fro

7、m emp Department name Salary - - - 10 aaa 11 SQL COLUMN ENAME HEADING Employee|Name Sqlselect * from emp Employee Department name Salary - - - 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FORMAT format Sqlselect empno,ename,job from emp; EMPNO ENAME JOB - - - 7369

8、 SMITH CLERK 7499 ALLEN SALESMAN 7521 WARD SALESMAN Sql col ename format a40 EMPNO ENAME JOB - - - 7369 SMITH CLERK 7499 ALLEN SALESMAN 7521 WARD SALESMAN 4). 设置列标题的对齐方式 JUSTIFY LEFT|CENTER|CENTRE|RIGHT SQL col ename justify center SQL / EMPNO ENAME JOB - - - 7369 SMITH CLERK 7499 ALLEN SALESMAN 752

9、1 WARD SALESMAN 对于 NUMBER 型的列,列标题缺省在右边,其它类型的列标题缺省在左边 5). 不让一个列显示在屏幕上 NOPRINT|PRINT SQL col job noprint SQL / EMPNO ENAME - - 7369 SMITH 7499 ALLEN 7521 WARD 6). 格式化 NUMBER 类型列的显示: SQL COLUMN SAL FORMAT $99,990 SQL / Employee Department Name Salary Commission - - - - 30 ALLEN $1,600 300 7). 显示列值时,如果列

10、值为 NULL 值,用 text 值代替 NULL 值 COMM NULL text SQLCOL COMM NULL text 8). 设置一个列的回绕方式 WRAPPED|WORD_WRAPPED|TRUNCATED COL1 - HOW ARE YOU? SQLCOL COL1 FORMAT A5 SQLCOL COL1 WRAPPED COL1 - HOW A RE YO U? SQL COL COL1 WORD_WRAPPED COL1 - HOW ARE YOU? SQL COL COL1 WORD_WRAPPED COL1 - HOW A 9). 显示列的当前的显示属性值 SQL

11、 COLUMN column_name 10). 将所有列的显示属性设为缺省值 SQL CLEAR COLUMNS 8. 屏蔽掉一个列中显示的相同的值 BREAK ON break_column SQL BREAK ON DEPTNO SQL SELECT DEPTNO, ENAME, SAL FROM EMP WHERE SAL 2500 ORDER BY DEPTNO; DEPTNO ENAME SAL - - - 10 CLARK 2450 MILLER 1300 20 SMITH 800 ADAMS 1100 9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前

12、插入 n 个空行。 BREAK ON break_column SKIP n SQL BREAK ON DEPTNO SKIP 1 SQL / DEPTNO ENAME SAL - - - 10 CLARK 2450 MILLER 1300 20 SMITH 800 ADAMS 1100 10. 显示对 BREAK 的设置 SQL BREAK 11. 删除 6、7 的设置 SQL CLEAR BREAKS 12. Set 命令: 该命令包含许多子命令: SET system_variable value system_variable value 可以是如下的子句之一: APPINFOON|O

13、FF|text ARRAYSIZE 15|n AUTOCOMMITON|OFF|IMMEDIATE|n AUTOPRINT ON|OFF AUTORECOVERY ON|OFF AUTOTRACE ON|OFF|TRACEONLY EXPLAIN STATISTICS BLOCKTERMINATOR .|c CMDSEP ;|c|ON|OFF COLSEP _|text COMPATIBILITYV7|V8|NATIVE CONCAT .|c|ON|OFF COPYCOMMIT 0|n COPYTYPECHECK ON|OFF DEFINE |c|ON|OFF SUFFIX SQL|text

14、TAB ON|OFF TERMOUT ON|OFF TIME ON|OFF TIMING ON|OFF TRIMOUT ON|OFF TRIMSPOOL ON|OFF UNDERLINE -|c|ON|OFF VERIFY ON|OFF WRAP ON|OFF 1). 设置当前 session 是否对修改的数据进行自动提交 SQLSET AUTOCOMMIT ON|OFF|IMMEDIATE| n 2)在用 start 命令执行一个 sql 脚本时,是否显示脚本中正在执行的 SQL 语句 SQL SET ECHO ON|OFF 3).是否显示当前 sql 语句查询或修改的行数 SQL SET

15、FEEDBACK 6|n|ON|OFF 默认只有结果大于 6 行时才显示结果的行数。如果 set feedback 1 ,则不管查询到多少行都返回。当为 off 时,一律不显示查询的行数 4).是否显示列标题 SQL SET HEADING ON|OFF 当 set heading off 时,在每页的上面不显示列标题,而是以空白行代替 5).设置一行可以容纳的字符数 SQL SET LINESIZE 80|n 如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。 6).设置页与页之间的分隔 SQL SET NEWPAGE 1|n|NONE 当 set newpage 0 时,会在每页

16、的开头有一个小的黑方框。 当 set newpage n 时,会在页和页之间隔着 n 个空行。 当 set newpage none 时,会在页和页之间没有任何间隔。 7).显示时,用 text 值代替 NULL 值 SQL SET NULL text 8).设置一页有多少行数 SQL SET PAGESIZE 24|n 如果设为 0,则所有的输出内容为一页并且不显示列标题 9).是否显示用 DBMS_OUTPUT.PUT_LINE 包进行输出的信息。 SQL SET SERVEROUTPUT ON|OFF 在编写存储过程时,我们有时会用 dbms_output.put_line 将必要的信息

17、输出,以便对存储过程进行调试,只有将 serveroutput 变量设为 on 后,信息才能显示在屏幕上。 10).当 SQL 语句的长度大于 LINESIZE 时,是否在显示时截取 SQL 语句。 SQL SET WRAP ON|OFF 当输出的行的长度大于设置的行的长度时(用 set linesize n 命令设置),当 set wrap on 时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。 11).是否在屏幕上显示输出的内容,主要用与 SPOOL 结合使用。 SQL SET TERMOUT ON|OFF 在用 spool 命令将一个大表中的内容输出到一个

18、文件中时,将内容输出在屏幕上会耗费大量的时间,设置 set termspool off 后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了 spool的速度。 12).将 SPOOL 输出中每行后面多余的空格去掉 SQL SET TRIMSOUT ON|OFF 13)显示每个 sql 语句花费的执行时间 set TIMING ON|OFF 14). 遇到空行时不认为语句已经结束,从后续行接着读入。SET SQLBLANKLINES ONSql*plus 中, 不允许 sql 语句中间有空行, 这在从其它地方拷贝脚本到 sql*plus 中执行时很麻烦. 比如下面的脚本:sel

19、ect deptno, empno, enamefrom empwhere empno = 7788;如果拷贝到 sql*plus 中执行, 就会出现错误。这个命令可以解决该问题15).设置 DBMS_OUTPUT 的输出SET SERVEROUTPUT ON BUFFER 20000用 dbms_output.put_line(strin_content);可以在存储过程中输出信息,对存储过程进行调试如果想让 dbms_output.put_line( abc);的输出显示为:SQL abc,而不是 SQLabc,则在 SET SERVEROUTPUT ON 后加 format wrappe

20、d 参数。16). 输出的数据为 html 格式set markup html在 8.1.7 版本(也许是 816? 不太确定 )以后, sql*plus 中有一个 set markup html 的命令, 可以将 sql*plus的输出以 html 格式展现.注意其中的 spool on, 当在屏幕上输出的时候, 我们看不出与不加 spool on 有什么区别, 但是当我们使用spool filename 输出到文件的时候, 会看到 spool 文件中出现了等 tag.14修改 sql buffer 中的当前行中,第一个出现的字符串 CHANGE /old_value/new_value S

21、QL l 1* select * from dept SQL c/dept/emp 1* select * from emp 15编辑 sql buffer 中的 sql 语句 EDIT 16显示 sql buffer 中的 sql 语句,list n 显示 sql buffer 中的第 n 行,并使第 n 行成为当前行 LIST n 17在 sql buffer 的当前行下面加一行或多行 INPUT 18将指定的文本加到 sql buffer 的当前行后面 APPEND SQL select deptno, 2 dname 3 from dept; DEPTNO DNAME - - 10 A

22、CCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS SQL L 2 2* dname SQL a ,loc 2* dname,loc SQL L 1 select deptno, 2 dname,loc 3* from dept SQL / DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 19将 sql buffer 中的 sql 语句保存到一个文件中 SAVE file_name 20将一个文件中的

23、 sql 语句导入到 sql buffer 中 GET file_name 21再次执行刚才已经执行的 sql 语句 RUN or / 22执行一个存储过程 EXECUTE procedure_name 23在 sql*plus 中连接到指定的数据库 CONNECT user_name/passwddb_alias 24设置每个报表的顶部标题 TTITLE 25设置每个报表的尾部标题 BTITLE 26写一个注释 REMARK text 27将指定的信息或一个空行输出到屏幕上 PROMPT text 28将执行的过程暂停,等待用户响应后继续执行 PAUSE text SqlPAUSE Adjust paper and press RETURN to continue. 29将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库) COPY FROM database | TO database | FROM database TO database APPEND|CREATE|INSERT|REPLACE destination_table (column, column, column, .) USING query

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。