Oracle 学习笔记3 Sql Plus 命令

一、SET 命令

1、set 命令格式

 命令格式:set system_variable value

system_variable:变量名

value:变量值

2、常用的变量名

变量名 变量可选值 说明
ARRAY[SIZE] 20(默认值)||N

设置SQL*Plus一次从数据库获取的行数,有效值为1~5000大数值可提高查询和子查询的有效性,

获取更多行,但需要更多的内存。当超过1000时,其效果不大

AUTO[COMMIT] OFF||ON||IMM[EDIATE]

控制Oracle对数据库的修改的提交,设置为ON时,在Oracle执行每个SQL命令或者PL/SQL块后

对数据库自动提交修改;设置为OFF时,则制止自动提交,需要手工提交修改;IMMEDIATE功能

等同于NO

BLO[CKTERMINATOR] .||C 设置非字母数字字符,用于结束PL/SQL块。要执行时,必须发出RUN命令或者/命令
CMDS[EP] ;||C||OFF||ON

设置非字母数字字符,用于分隔在一行中输入的多个SQL*Plus命令,ON或者OFF控制

在一行中是否能输入多个命令。ON时将自动将命令分隔符设为分号(;),其中C表示

所置字符

ECHO OFF||ON

控制START 命令是否列出文件中的每个命令,若设置为ON,则列出命令,若为OFF,

则直至列清单

FLU[SH] OFF||ON

控制输出送至用户的显示设备,设置为OFF时,运行操作系统做缓冲区输出;设置为

ON时,不允许缓冲。仅当非交互方式运行命令文件时使用OFF,这样可减少I/O总数,

从而改进性能

HEA[DING] OFF||ON

控制报表中列标题的打印。设置为ON时,在报表中打印列标题;设置为OFF时,禁止

打印列标题

LIN[SIZE] 80||N

设置SQL*Plus 在一行中显示的最多字符总数,他还控制在TTITLE和BTITLE中对准中

心的文本和右对齐文本。可定义LINESIZE为1至最大值,其最大值依赖于操作系统

NEWP[AGE] 1||N 设置一页中的空行的数量,默认值为1
NULL text

设置表示空值【NULL】的文本,如果NULL没有文本,则显示空值。使用COLUMN

命令中的NULL子句可控制NULL变量对该列的设置

NUMF[ORMAT] 格式 设置显示数值的默认格式,该格式时数值格式
PAGES[IZE] 10||N 设置从顶部标题至页结束之间的行数
PAU[SE] OFF||ON||text

设置SQL*Plus输出结果是否滚动显示,当设置为ON时,表示输出结果的每一页都暂

停,用户按Enter键后继续显示。在设置PAUSE的值为ON后,若再设置字符串时,设

置text值,则每次暂停都将显示该字符串

RECSEP WR[APPED]||EA[CH]|OFF

指定显示或打印记录分行符的条件。一个记录分行符是由RECSEPCHAR指定的字符组

成的单行,空格为RECSEPCHAR的默认字符

SERVEROUT[PUT] OFF||ON[SIZE N]

控制SQL*Plus中的存储过程是否显示输出。若设置为OFF则禁止;若设置为ON则显示

输出。SIZE设置缓冲输出的字节数,默认为2000,n不能小于2000或大于100万

SHOW[MODE] OFF|NO

控制SQL*Plus再执行SET命令时是否列出其新老值new或old的设置。其中ON值表示

列出新老值

SPA[CE] 1||N 设置输出列之间空格的数目,其最大值为10
SQLCO[NTINUE] >;||文本 在一附加行上继续某个SQL*Plus命令时,SQL*Plus以该设置的字符序列进行提示
SQLN[UMBER] OFF||ON

为SQL命令和PL/SQL块的第二行和后继行设置提示。若为ON,则提示行号;若为

OFF,则提示设置为SQLPROMRT的值

TI[ME] OFF||ON

控制当前日期的显示,若为ON则在每条SQL命令提示前显示当前时间,若为OFF则禁止显示当前时间

TIMI[NG] OFF||ON

控制时间统计的显示,若为ON则显示每一行运行的SQL命令或PL/SQL块的时间统计

,若为OFF则禁止每一个命令的时间统计

UND[ERLINE] -||C||OFF|ON 设置用在SQL*Plus报表中下划线列标题的字符,ON或OFF将下划线设置为开或者关状态
VER[IFY] OFF||ON

控制SQL*Plus用值替换前后是否猎猪命令的文本,若为ON则显示文本,若为OFF则禁止列清单

 WRA[P]  OFF||ON  控制SQL*Plus是否阶段数据项的显示,若为OFF,则阶段数据项;
若为ON则允许数据项缠绕到下一行

3、PAGESIZE 变量  用于设置从顶部标题至页结束之间的行数

首先查看PAGESIZE变量信息

SQL>SHOW PAGESIZE

然后修改PAGESIZE

SQL> SET PAGESIZE 18

最后查看效果

SQL> select user_id,username,account_status from dba_users order by user_id  ;

4、NEWPAGE变量  用于设置一页中空行的数量

首先查看PAGESIZE变量信息

SQL>SHOW NEWPAGE

然后修改NEWPAGE

SQL> SET NEWPAGE 5

最后查看效果

SQL> select user_id,username,account_status from dba_users order by user_id  ;

5、LINESIZE变量  用于设置一行所显示的最多字符总数

首先查看LINESIZE变量信息

SQL>SHOW LINESIZE

然后修改LINESIZE

SQL> SET LINESIZE  100

最后查看效果

SQL> select user_id,username,account_status from dba_users order by user_id  ;

6、PAUSE变量  用于设置输出结果是否滚动显示,默认是OFF

首先设置为按页暂停

SQL>SET PAUSE ON

然后设置在每页暂停的最后一列有文字提醒

SQL> SET PAUSE ‘你好’

最后查看效果

SQL> select user_id,username,account_status from dba_users order by user_id  ;

7、NUMFORMAT变量  用于设置显示数值的默认格式

掩码 说明 举例
9 查询结果中数字替换格式中的掩码 999
0 格式中的掩码屏蔽掉查询结果中的数字 999.00
$ 在查询结果中的数字前添加美元前缀 ¥999
S 为数字显示符号类型,通常用于显示查询结果中的正负数字 S999
, 放置逗号,便于位数统计 99,999

将SCOTT.EMP表中的SAL以千分符隔开,并在数字前面加美元前缀

SQL>SET  NUMFORMAT $999,999,999.00

最后查看效果

SQL> select ename,job,sal from scott.emp;

二、常用的SQL*Plus命令

1、HELP命令,用于查询命令的标题、功能描述、缩写形式和参数选项

格式:HELE|?[TOPIC]

?标志一个命令的部分字符,可以通过模糊搜索查询;

topic参数表示将要查询的命令的完整名称

2、DESCRIBE命令,用于查询指定数据对象的数据结构

可以简写程DESC 

格式:DESC[RIBE] object_name

object_name表示将要查询的对象名称

3、SPOOL命令,用于保存查询结果并方便打印

格式:SPO[OL] [file_name[.ext]  [CRE[ATE] | REP[LACE] | APP[LACE] | APP[END]] |OFF|OUT]

CRE[ATE] :表示创建一个新的脱机文件,这也是SPOOL命令的默认状态;

REP[LACE]:表示替代已经存在的脱机文件;

APP[END] :表示把脱机内容附加到一个已经粗在的脱机文件中;

OFF|OUT :表示关闭SPOOL输出

实例:

SQL> spool c:emp.txt   创建输出的目标文件
SQL> select empno,ename,sal from scott.emp where job='SALESMAN';  查询需要查询的信息

EMPNO ENAME SAL
---------- -------------------- ----------
7499 ALLEN 1600
7521 WARD 1250
7654 MARTIN 1250,
7844 TURNER 1500

SQL> spool off  关闭SPOOL命令,姜结果输出到创建的文件中

3、DEFINE 命令  用来定义一个用户的变量并且可以分配给它一个CHAR值,

格式:DEF[INE] [variable] |[bariable = text]

variable 表示定义的变量名

text 表示变量的CHAR值

4、SHOW 命令  用来显示SQL*Plus系统变量的值或者SQL*Plus环境变量的值

格式: SHO[W] option

option 表示要显示的系统选项,常用的选项有ALL、PARAMETERS [parameter_name]、SGA、SPOOL、USER等;

5、EDIT命令 用来编辑SQL缓冲区或者指定磁盘文件中的SQL语句或者PL/SQL块,

格式:EDIT [file_name[.ext]]

如果要执行SQL缓冲区中最近一条SQL语句,可以使用命令“/”来执行;

6、SAVE命令 将最近一条SQL语句或者PL/SQL块保存到一个文件中;

格式:SAVE file_name

file_name 是保存的文件名称,需要指定路径

7、GET命令  用于把一个SQL脚本文件的内容放进SQL缓冲区;

格式:GET[FILE] FILE_NAME[.ext] [LIST|NOLIST]

file_name  要检索的文件名称,如果省略了文件的扩展名,则默认文件的扩展名为SQL;

LIST :指定文件的内容加载到缓冲区时显示的内容

NOLIST:指定文件的内容加载到缓冲区时不显示文件的内容

8、sSTART 和@命令  用于执行一个SQL脚本

格式:STA[RT] {ur|file_name[.ext]}  [arg]

@ {ur|file_name[.ext]}[arg]

ur:表示要执行的SQL脚本文件的路径·

{file_name[.ext]}  表示要执行的SQL脚本的文件名称

[arg] 其他参数

三、格式化查询结果

        SQL*Plus 工具提供了多个用于格式化查询结果的命令,使用这些命令可以实现设置列的标题、定义输出值的格式显示和显示宽度、为报表增加头标题和底标题、在报表中显示当前日期和页号等功能。

1、COLUMN命令,该命令实现格式化查询结果、设置列宽度、重新设置列标题等功能。

        格式:COL[UMN] [column_name | alias | option]

        column_name  用于指定要设置的列的名称;

        alias  用于指定列的别名,通过它可以把英文列标题设置为汉字;

        option  用于指定某个列的显示格式,以下是常用的option选项的值及其说明;

option选项的值 说明
CLEAR 清楚指定列所设置的显示属性,从而恢复列使用默认的显示属性
FORMAT 格式化指定的列
HEADING 定义列标题
JUSRIFY 调整列标题的对齐方式。默认情况下,数值类型的列为右对齐,其他类型的列为左对齐
NULL 指定一个字符串,如果列的值为NULL,则由该字符串代替
PRINT/NOPRINT 显示列标题或隐藏列标题,默认为PRINT
ON/OFF 控制定义的显示属性的状态,OFF表示定义的所有属性都不起作用,默认是ON
WRAPPED 当字符串的长度超过显示宽度时,将字符串的超出部分折叠到下一行显示
WORD_WRAPPED 表示从一个完整的字符处折叠
TRUNCATED 表示截断字符串的尾部

示例1:

将sal字段的格式修改为$999,999.00 的格式

SQL> column sal format $999,999.00
SQL> select empno,ename,sal from scott.emp;

示例2

将empno 字段名改为“雇员编号”,将ename 字段名改为“雇员姓名”,将sal字段名改为“薪水”

SQL> column empno heading 雇员编号
SQL> column ename heading 雇员姓名
SQL> column sal heading 薪水

示例3

将comm字段中的NULL值修改为“空值”

SQL> columnn comm null '空值'

2、TTITLE和BTITLE命令,用来设置打印时每页的顶部和底部标题;

格式:TTI[TLE] [printspec [text|variable]......] | [OFF|ON]

text    用于设置输出结果的头标题(即报表头文字)

variable  用于在头标题中输出相应的变量值

OFF 表示禁止打印头标题

ON  表示允许打印头标题

printspec  用来作为头标题的修饰性选项。printspec选项的值及其说明如下:

printspec选项的值 说明
COL 指定在当前行的第几列打印头标题
SKIP 跳到从下一行开始的第几行,默认为1
LEFT 在当前行中左对齐打印数据
CENTER 在当前行中间打印数据
RIGHT 在当前行中右对齐打印数据
BILD 以黑体打印数据

示例1

为sxott.salgrade表设置头标题与底标题,头标题设置为“销售情况排行榜”,底标题设置为“打印日期:2012年5月1日  打印人:东方”

SQL> set pagesize 8
SQL> ttitle left '销售情况排行表'
SQL> btitle left '打印日期:2012年5月1日'
SQL> btitle left '打印日期:2012年5月1日'  打印人:东方

SQL> select * from scott.salgrade;

销售情况排行表
GRADE LOSAL HISAL
---------- ---------- ----------
1 700 1200
2 1201 1400
3 1401 2000
打印日期:2012年5月1日打印人:东方

销售情况排行表
GRADE LOSAL HISAL
---------- ---------- ----------
4 2001 3000
5 3001 9999

打印日期:2012年5月1日打印人:东方

示例2

为sxott.salgrade表设置头标题与底标题,要求头标题与底标题都使用DEFINE命令定义的变量输出

SQL> set pagesize 8
SQL> define varT=' 雇员信息表'
SQL> define varB=' 操作员:东方'
SQL> ttitle left varT
SQL> btitle left varB
SQL> select empno,ename from scott.emp;

示例3

如果要取消头标题与底标题

SQL> ttitle off
SQL> btitle off
SQL> select empno,ename from scott.emp;

原文地址:https://www.cnblogs.com/TengQiuli/p/14174931.html