ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL*PLUS命令的使用大全

SQL*PLUS命令的使用大全

原创 Linux操作系统 作者:pennypengy 时间:2011-05-06 10:42:41 0 删除 编辑

1. 执行一个SQL脚本文件    

SQL>@

2. 对当前的输入进行编辑    

   SQL>edit

3. 重新运行上一次运行的sql语句    

   SQL>/

4. 将显示的内容输出到指定文件    

   SQL>spool file_name

5. 关闭spool输出  

   SQL>spool off 

6.显示一个表的结构    

   SQL>desc table_name

7. COL命令:    

1). 改变缺省的列标题    

    SQL>col col_name heading column_heading

2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:    

    SQL>col ename heading ‘Employee|Name’

3). 改变列的显示长度:    

    SQL>col col_name format a40

4). 设置列标题的对齐方式    

    SQL>col col_name justify left|center|right

5). 不让一个列显示在屏幕上    

    SQL>col col_name noprint|print

6). 格式化NUMBER类型列的显示:    

    SQL>col col_name format $99,990

7). 显示列值时,如果列值为NULL值,用text值代替NULL    

    SQL>col comm null text

8). 设置一个列的回绕方式    

    SQL>col col_name wrapped | word_wrapped | truncated

9). 显示列的当前的显示属性值    

    SQL>column col_name

10). 将所有列的显示属性设为缺省值    

    SQL>clear columns

8. 屏蔽掉一个列中显示的相同的值    

   SQL> break on col_name

9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。    

   SQL>break on break_column skip n

10. 显示对BREAK的设置    

   SQL>break

11. 删除89的设置    

   SQL>clear breaks

12. Set 命令:    

1).设置当前session是否对修改的数据进行自动提交    

   SQL>set autocommit {on | off | immediate | n}

2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句    

   SQL>set echo {on | off}

3).是否显示当前sql语句查询或修改的行数    

   SQL>set 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 时,会在每页的开头有一个小的黑方框。

   set newpage n 时,会在页和页之间隔着n 个空行。

   set newpage none时,会在页和页之间没有任何间隔。

7).显示时,用text值代替NULL    

   SQL>set null text

8).设置一页有多少行数    

   SQL>set pagesize {24 | n}

9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。    

   SQL>set serveroutput {on | off}

10).SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。    

   SQL>set wrap {on | off}

   当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。    

   SQL>set termout {on | off}

   在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。

12).SPOOL输出中每行后面多余的空格去掉    

   SQL>set trimspool {on | off}

13)显示每个sql语句花费的执行时间    

   SQL>set timing {on | off}

14). 遇到空行时不认为语句已经结束,从后续行接着读入。    

   SQL>set sqlblanklines on

   Sql*plus中,不允许sql语句中间有空行,这在从其它地方拷贝脚本到sql*plus中执行时很麻烦,比如下面的脚本:select deptno,empno,ename

            From emp

 

            Where empno=’7788’;

    如果拷贝到sql*plus中执行,就会出现错误,这个命令可以解决该问题。

15).设置DBMS_OUTPUT的输出    

SQL>set serveroutput on buffer 20000

dbms_output.put_line(‘strin_content’);可以在存储过程中输出信息,对存储过程进行调试,如果想让dbms_output.put_line(‘    abc’);的话输出显示为:SQL>      abc,而不是SQL>abc,则在set serveroutput on 后面加format wrapped 参数。

16). 输出的数据为html格式    

    SQL>set markup html

14.修改sql buffer中的当前行中,第一个出现的字符串

    SQL>change/old_value/new_value   

15.编辑sql buffer中的sql语句    

    SQL>edit

16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行    

    SQL>list n

17.在sql buffer的当前行下面加一行或多行    

    SQL>imput

18.将指定的文本加到sql buffer的当前行后面    

    SQL>append, add_text

19.将sql buffer中的sql语句保存到一个文件中    

    SQL>save file_name

20.将一个文件中的sql语句导入到sql buffer    

    SQL>get file_name

21.再次执行刚才已经执行的sql语句    

    SQL>run or /

22.执行一个存储过程    

    SQL>execute procedure_name

23.在sql*plus中连接到指定的数据库    

    SQL>connect user_name/passwd@db_sid

24.设置每个报表的顶部标题    

    SQL>ttitle

25.设置每个报表的尾部标题    

    SQL>btitle

26.写一个注释    

    SQL>remark [text]

27.将指定的信息或一个空行输出到屏幕上    

    SQL>promt [text]

28.将执行的过程暂停,等待用户响应后继续执行    

SQL>pause [text]

SQL>pause Adjust paper and press return to continue.

29.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库)    

SQL>copy from scott/tiger@hq to join/chrome@west

 {append | create | insert | replace} destination_table

     [(column,column,column,…)] using query

30.不退出sql*plus,在sql*plus中执行一个操作系统命令:    

    SQL>host hostname

31.在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus    

SQL>!

$hostname

$exit

SQl>

32.显示sql*plus命令的帮助    

    SQL>help

33.显示sql*plus系统变量的值或sql*plus环境变量的值    

1) . 显示当前环境变量的值:    

    SQL>show all

2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息    

    SQL>show error

3) . 显示初始化参数的值:    

    SQL>parameters [parameter_name]

4) . 显示数据库的版本:    

    SQL>show release

5) . 显示SGA的大小    

    SQL>show sga

6). 显示当前的用户名    

    SQL>show user

34.查询一个用户下的对象    

SQL>select * from tab;

SQL>select * from user_objects;

35.查询一个用户下的所有的表    

    SQL>select * from user_tables;

36.查询一个用户下的所有的索引    

    SQL>select * from user_indexes;

37. 定义一个用户变量    

方法有两个:

a. DEFINE [variable] | [variable=text]

定义一个用户变量并且可以分配给它一个CHAR值。

SQL>define pos=manager  //定义pos=’manager’

SQL>define deptno=20    //定义deptno=’20’

b. COLUMN [{column | expr} NEW_VALUE variable [NOPRINT | PRINT]

                          OLD_VALUE variable [NOPRINT | PRINT]

例:SQL>column col_name new_value var_name noprint

    SQL>select col_name from table_name where…..

    //将下面查询出的col_name列的值赋给var_name变量,但不显示出来。

 

38. 定义一个绑定变量    

    SQL>VARIABLE [variable [NUMBER | CHAR | CHAR(n) | NCHAR | NCHAR(n) | VARCHAR2(n) | NVARCHAR2(n) | CLOB | NCLOB | REFCURSOR]]

     定义一个绑定变量,该变量可以在pl/sql中引用

     绑定变量:   variable_name

     变量:        &variable_name or &&variable_name

     sql*plus中,可以定义同名的绑定变量与用户变量,但是引用的方法不同。

39. &&&的区别    

   &用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。

   &&用来创建一个持久变量,就像用define命令或带new_value字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。

如:将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值:

Select count(*) from emp where deptno = &deptnoval;

Select count(*) from emp where deptno = &deptnoval;

Select count(*) from emp where deptno = &deptnoval;

 

将下面三行语句存为一个脚本文件,运行该脚本文件夹,则只会提示一次,让输入deptnoval的值:

Select count(*) from emp where deptno = &&deptnoval;

Select count(*) from emp where deptno = &&deptnoval;

Select count(*) from emp where deptno = &&deptnoval;

 

40.在输入sql语句的过程中临时先运行一个sql*plus命令    

比如说,你想查工资大于4000的员工的信息,输入了下面的语句:

SQL>select deptno,empno,ename

  2 from emp

  3 where

 这时,你发现你想不起来工资的列名是什么了。这种情况下,只要在下一行以#开头,就可以执行一条sql*plus命令,执行完后,刚才的语句可以继续输入

SQL>select deptno,empno,ename

  2 from emp

  3 where

  4#desc emp

 Name       NULL?         Type

Deptno       not null         number(3)

Empno       not null         number(4)

Ename                       varchar(10)

Sal                          number(7,2)

 

4 sal>4000;

  Deptno    empno      ename

  10        7893        KING

41. SQLPlus中的快速复制和粘贴技巧    

   1 鼠标移到想要复制内容的开始

   2 用右手食指按下鼠标左键

   3 向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样

   4 内容选取完毕后(所选内容全部反显),鼠标左键按住不动,用右手中指按鼠标右键

   5 这时,所选内容会自动复制到SQL*Plus环境的最后一行

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22012035/viewspace-694598/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle AWR--转
请登录后发表评论 登录
全部评论

注册时间:2011-04-17

  • 博文量
    20
  • 访问量
    24951