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;