SQLPLUS使用技巧.docx
- 文档编号:23912575
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:22
- 大小:22.84KB
SQLPLUS使用技巧.docx
《SQLPLUS使用技巧.docx》由会员分享,可在线阅读,更多相关《SQLPLUS使用技巧.docx(22页珍藏版)》请在冰豆网上搜索。
SQLPLUS使用技巧
sql*plus使用技巧集锦:
SQL*PLUS是Oracle提供的一个工具程序,它不仅可以用于测试,运行SQL语句和PL/SQL块,而且还可以用于管理Oracle数据库,
1.启动sql*plus
为了使用sql*plus,必须首先要启动sql*plus。
Oracle不仅提供了命令行和图形界面的sql*plus,而且还可以在web浏览器中
运行.
(1)在命令运行sql*plus
在命令行运行sql*plus是使用sqlplus命令来完成的,该命令适用于任何操作系统平台,
语法如下:
sqlplus[username]/[password][@server]
如上所示:
username用于指定数据库用户名,password用于指定用户口令,server则用于指定主机字符串(网络服务名).
当连接到本地数据时,不需要提供网络服务名,如果要连接到远程数据库,则必须要使用网络服务名.
(2)在windows环境中运行sql*plus
如果在windows环境中安装了oralce数据库产品,那么可以在窗口环境中运行sql*plus
具体方法:
“开始->程序->oracle-oradb10g_home1->applicationdevelopment->sql*plus”
2.连接命令
(1)conn[ect]
该命令用于连接到数据库。
注意,使用该命令建立新会话时,会自动断开先前会话,示例如下:
sql>connscott/yhai1981@demo
(2)disc[onnect]
该命令用于断开已经存在的数据库连接。
注:
该命令只是断开连接会话,而不会退出sql*plus,示例如下:
sql>disc
(3)passw[ord]
该命令用于修改用户的口令。
注,任何用户都可以使用该命令修改其自身口令,但如果要修改其他用户的口令时,
则必须以DBA身份(sys和system)登录,在sql*plus中,当修改用户口令时,可以使用该命令取代sql命令alteruser,
示例如下:
sql>passw
更改scott的口令
旧口令:
******
新口令:
******
重新键入新口令:
******
口令已更改
sql>
(4)exit
该命令用于退出sql*plus,另外你也可以使用quit命令退出sql*plus.使用该命令不仅会断开连接,而且也会退出sql*plus
注:
默认情况下,当执行该命令时会自动提交事务。
3,编辑命令
(1)l[ist]
该命令用于列出sql缓冲区的内容,使用该命令可以列出sql缓冲某行,某几行或所有行的内容。
在显示结果中,数据字为具体
的行号,而”*”则表示当前行。
示例一:
列出sql缓冲区所有内容
sql>l
示例二:
列出sql缓冲区首行内容:
sql>l1
(2)a[ppend]
该命令用于在sql缓冲区的当前行尾部添加内容。
注:
该命令将内容追加到标记为”*”的行的尾部,示例如下:
以下是引用片段:
sql>l
1selectempno,ename,sal,hiredate,comm,deptno
2fromemp
3*wheredeptno=10
sql>aandjob=’CLERK’
sql>l
SQL>list
1selectempno,ename,sal,hiredate,comm,deptno
2fromemp
3*wheredeptno=10andjob=’CLERK’
(3)c[hange]
该命令用于修改sql缓冲区的内容。
如果在编写sql语句时写错了某个词,那么使用该命令可以进行修改,
以下是引用片段:
sql>selectenamefromtempwheredeptno=10;
SQL>c/temp/emp
1*selectenamefromempwheredeptno=10
(4)del
该命令用于删除sql缓冲区中内容,使用它可以删除某行,某几行或所有行,在默认情况下,当直接执行
del时,只删除当前行的内容,示例如下:
以下是引用片段:
SQL>l
1selectename
2fromemp
3*wheredeptno=20
sql>del
SQL>l
1selectename
2*fromemp
如果一次要删除多行,则指定起始行号和终止行号,例如”del35″
(5)i[nput]
该命令用于在sql缓冲区的当前行后新增加一行。
示例如下:
以下是引用片段:
SQL>l
1selectename
2*fromemp
sql>iwheredeptno=30
如果要在首行前增加内容,则使用”0文本”
以下是引用片段:
sql>0createtabletempas
SQL>l
1createtabletempas
2selectename
3fromemp
4*wheredeptno=30
(6)n
该数值用于定位sql缓冲区的当前行,示例如下:
(7)edi[t]
该命令用于编辑sql缓冲区的内容。
当运行该命令时,在windows平台中会自动启动”记事本”,以编辑sql缓冲区
(8)run和/
run的/命令都可以用于运行sql缓冲区中的sql语句。
注:
当使用run命令时,还会列出sql缓冲区内容,eg:
SQL>run
1*selectenamefromempwheredeptno=20
4.文件操纵命令
(1)save
该命令用于将当前sql缓冲区的内容保存到sql脚本中。
当执行该命令时,默认选项为create,即建立新文件。
eg:
SQL>savec:
\a.sqlcreate
已创建filec:
\a.sql
当执行命令之后,就会建立新脚本文件a.sql,并将sql缓冲区内容存放到该文件中。
如果sql已经存在,使用
replace选项可以替撚已存在的sql脚本,如果要给已存在的sql脚本追加内容,可以使用append选项。
(2)get
该命令与save命令作用恰好相反,用于将sql脚本中的所有内容装载到sql缓冲区中。
eg:
SQL>getc:
\a.sql
1*selectenamefromempwheredeptno=20
(3)start和@
start和@命令用于运行sql脚本文件。
注:
当运行sql脚本文件时,应该指定文件路径.eg:
SQL>@c:
\a.sql
ENAME
———-
SMITH
JONES
SCOTT
ADAMS
FORD
(4)@@
该命令与@命令类似,也可以运行脚本文件,但主要作用是在脚本文件中嵌套调用其它的脚本文件。
当使用该命令
嵌套脚本文件时,可在调用文件所在目录下查找相应文件名。
(5)ed[it]
该命令不仅可用于编辑sql缓冲区内容,也可以用于编辑sql脚本文件。
当运行该命令时,会启动默认的系统编辑
器来编辑sql脚本。
运行方法为:
sql>editc:
/a.sql
(6)spool
该命令用于将sql*plus屏幕内容存放到文本文件中。
执行该命令时,应首先建立假脱机文件,并将随后sql*plus
屏幕的所有内容全部存放到该文件中,最后使用spooloff命令关闭假脱机文件。
eg:
sql>spoolc:
\a.sql
5.格式命令
sql*plus不仅可以用于执行sql语句、pl/sql块,而且还可以根据select结果生成报表。
使用sql*plus的格式命令
可以控制报表的显示格式,例如使用column命令可以控制列的显示格式,使用ttitle命令可以指定页标题;使用
btitle命令可以指定页脚注。
(1)col[umn]
该命令用于控制列的显示格式。
column命令包含有四个选项,其中clear选项用于清除已定义列的显示格式:
heading选项用于指定列的显示标题;justify选项用于指定列标题的对齐格式(left,center,right);format选项用于
指定列的显示格式,其中格式模型包含以下一些元素。
An:
设置char,varchar2类型列的显示宽度;
9:
在number类型列上禁止显示前导0;
0:
在number类型列上强制显示前导0;
$:
在number类型列前显示美元符号;
L:
在number类型列前显示本地货币符号;
.:
指定number类型列的小数点位置;
:
指定number类型列的千分隔符;
eg1:
使用column设置列显示格式
sql>colenameheading‘name’formata10
sql>colsalheading’sal’formatL99999.99
sql>selectename,sal,hiredatefromemp
sql>whereempno=7788;
namesalHIREDATE
———-——————-——————-
SCOTT¥3000.0004/19/198700:
00:
00
sql>colenameclear
sql>colsalclear
sql>selectename,sal,hiredatefromemp
sql>whereempno=7788;
(2)title
该命令用于指定页标题,页标题会自动显示在页的中央。
如果页标题由多个词组成,则用单引号引住。
如果要将页
标题分布在多行显示,则用”|”分开不同单词。
如果不希望显示页标题,则使用”ttitleoff”命令,禁止显示,eg:
SQL>setlinesize40
SQL>ttitle‘employeereport’
SQL>selectename,sal,hiredatefromempwhereempno=7788;星期二5月20第1
employeereport
ENAMESAL
———-———-
HIREDATE
——————-
SCOTT3000
04/19/198700:
00:
00
(3)btitle
该命令用于指定页脚注,页脚注会自动显示在页的中央。
如果页脚注由多个词组成,则用单引号引注。
如果要将页脚注
分布在多行显示,则用”|”分开不同单词。
如果不希望显示页脚注,则使用”btitleoff”命令,禁止显示。
eg:
SQL>btitle‘pageend’
SQL>selectename,sal,hiredatefromempwhereempno=7788
ENAMESAL
———-———-
HIREDATE
——————-
SCOTT3000
04/19/198700:
00:
00
pageend
(4)break
该命令用于禁止显示重复行,并将显示结果分隔为几个部分,以表现更友好的显示结果,通常应该在orderby的排序列上
使用该命令。
eg:
SQL>setpagesize40
SQL>breakondeptnoskip1
SQL>selectdeptno,ename,salfromemporderbydeptno
2;
DEPTNOENAMESAL
———-———-———-
10CLARK2450
KING5000
MILLER1300
20JONES2975
FORD3000
ADAMS1100
SMITH800
SCOTT3000
30WARD1250
TURNER1500
ALLEN1600
JAMES950
BLAKE2850
MARTIN1250
6.交互式命令
如果经常要执行某些sql语句和sql*plus命令,可以将这些语句和命令存放到sql脚本中。
通过使用sql脚本,
一方面可以降低命令输入量,另一方面可以避免用户的输入错误。
为了使得sql脚本可以根据不同输入获得
不同结果,需要在sql脚本中包含交互式命令。
通过使用交互式命令,可以在sql*plus中定义变量,并且在运行
sql脚本时可以为这些变量动态输入数据。
下面介绍sql*plus的交互命令,以及引用变量所使用的标号。
(1)&
引用替代变量(substitutionvariable)时,必须要带有该标号。
如果替代变量已经定义,则会直接使用其数据,
如果替代变量没有定义,则会临时定义替代变量(该替代变量只在当前语句中起作用),并需要为其输入数据。
注:
如果替代变量为数字列则提供数据,则可以直接引用;如果替代变量为字符类型列或日期类型列提供数据,
则必须要用单引号引注。
eg:
SQL>selectename,salfromempwheredeptno=&noandjob=’&job’;
输入no的值:
20
输入job的值:
CLERK
原值1:
selectename,salfromempwheredeptno=&noandjob=’&job’
新值1:
selectename,salfromempwheredeptno=20andjob=’CLERK’
(2)&&
该标号类似于单个&标号。
但需要注意,&标号所定义的替代变量只在当前语句中起作用;而&&标号所定义的变量
会在当前sql*plus环境中一直生效。
eg:
SQL>selectename,salfromempwheredeptno=&&noandjob=’&&job’–定义了no变量
输入no的值:
20
输入job的值:
CLERK
原值1:
selectename,salfromempwheredeptno=&&noandjob=’&&job’
新值1:
selectename,salfromempwheredeptno=20andjob=’CLERK’
SQL>selectename,salfromempwheredeptno=&no;
原值1:
selectename,salfromempwheredeptno=&no–直接引用no变量
新值1:
selectename,salfromempwheredeptno=20
ENAMESAL
———-———-
SMITH800
JONES2975
SCOTT3000
ADAMS1100
FORD3000
如例所示,当第一次引用no变量时,使用&&标号需要为其输入数据;当第二次引用no变量时,
使用&标号直接引用其原有值,而不需要输入数据。
(3)define
该命令用于定义类型为char的替代变量,而且该命令的定义的替代变量只在当前sql*plus环境中起作用。
当使用该命令定义变量时,如果变量值包含空格或区分大小写,则用引号引注。
另外,使用”define变量名”可以检查变量
是否已经定义。
eg:
sql>setverifyoff
sql>definetitle=CLERK
sql>selectename,salfromwherejob=’&title’;
(4)accept
该命令可以用于定义char,number和date类型的替代变量。
与define命令相比,accept命令更加灵活。
当使用该命令定义替代
变量时,还可以指定变量输入提示、变量输入格式、隐藏输入内容。
eg1:
指定变量输入提示
SQL>accepttitleprompt‘请输入岗位:
’
请输入岗位:
CLERK
SQL>selectename,salfromempwherejob=’&title’;
原值1:
selectename,salfromempwherejob=’&title’
新值1:
selectename,salfromempwherejob=’CLERK’ENAMESAL
———-———-
SMITH800
ADAMS1100
JAMES950
MILLER1300
eg2:
隐藏用户输入
sql>acceptpwdhide
(5)undefine
该命令用于清除替代变量的定义。
eg:
sql>undefinepwd
SQL>disc
从OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OLAPandDataMiningoptions断开
SQL>connscott/&pwd
输入pwd的值:
yhai1981
已连接
(6)prompt的pause
prompt命令用于输出提示信息,而pause命令则用于暂停脚本执行。
在sql脚本中结合使用这两条命令,可以控制sql脚本
的暂停的执行。
假定在a.sql脚本中包含以下命令:
prompt‘按
pause
当运行该sql脚本时,会暂停执行,eg:
sql>@c:
\a.sql
‘按
(7)variable
该命令用于在sql*plus中定义绑定变量。
当在sql语句或pl/sql块中引用绑定变量时,必须要在绑定变量前加冒号(;
当直接给绑定变量赋值时,需要使用execute命令(类似于调用存储过程).示例如下:
sql>varnonumber
sql>exec:
no:
=7788
sql>selectenamefromempwhereempno=:
no;
ename
——————
scott
(8)print
该命令用于输出绑定变量结果,eg:
SQL>printno
NO
———-
7788
7.显示和设置环境变量
使用sql*plus的环境变量可以控制其运行环境,例如设置行显示宽度,设置每页显示的行数、
设置自动提交标记、设置自动跟踪等等。
使用show命令可以显示当前sql*plus的环境变量设置
:
使用set命令可以修改当前sql*plus的环境变量设置。
下面介绍常用的sql*plus环境变量。
(1)显示所有环境变量
为了显示sql*plus的所有环境变量,必须要使用showall命令。
示例如下:
SQL>showall
appinfo为OFF并且已设置为“SQL*Plus”
arraysize15
autocommitOFF
autoprintOFF
autorecoveryOFF
autotraceOFF
blockterminator“.”(hex2e)
btitleOFF为下一条SELECT语句的前几个字符
cmdsepOFF
colsep””
compatibilityversionNATIVE
concat“.”(hex2e)
copycommit0
COPYTYPECHECK为ON
define“&”(hex26)
describeDEPTH1LINENUMOFFINDENTON
echoOFF
editfile“afiedt.buf”
embeddedOFF
escapeOFF
用于6或更多行的FEEDBACKON
以下是引用片段:
flaggerOFF
flushON
headingON
headsep“|”(hex7c)
instance“local”
linesize80
lno4
loboffset1
logsource“”
long80
longchunksize80
SPOOLOFFENTMAPONPREFORMATOFF
newpage1
null“”
numformat“”
numwidth10
pagesize14
PAUSE为OFF
pno1
recsepWRAP
recsepchar””(hex20)
release1002000100
repfooterOFF为NULL
repheaderOFF为NULL
serveroutputOFF
shiftinoutINVISIBLE
showmodeOFF
spoolON
sqlblanklinesOFF
sqlcaseMIXED
sqlcode0
sqlcontinue“>”
sqlnumberON
sqlpluscompatibility10.2.0
sqlprefix“#”(hex23)
sqlprompt“SQL>”
sqlterminator“;”(hex3b)
suffix“sql”
tabON
termoutON
timingOFF
trimoutON
trimspoolOFF
ttitleOFF为下一条SELECT语句的前几个字符
underline“-”(hex2d)
USER为“SCOTT”
verifyON
wrap:
将换至下一行
SQL>spooloff
(2)arraysize
该环境变量用于指定数组提取尺寸,其默认值为15.该值越大,网络开销将会越低,但占用内存会增加。
假定使用默认值,
如果查询返回行数为50行,则需要通过网络传送4将数据;如果设置为25,则网络传送次数只有两次。
eg:
SQL>showarraysize
arraysize15
SQL>setarraysize25
(3)autocommit
该环境变量用于设置是否自动提交dml语句,其默认值为off(表示禁止自动提交)。
当设置为ON时,每次执行DML
语句都会自动提交。
eg:
以下是引用片段:
SQL>showautocommit
autocommitOFF
SQL>setautocommiton
SQL>showautocommit
autocommitIMMEDIATE
(4)colsep
该环境变量用于设置列之间的分隔符,默认分隔符为空格。
如果要使用其它分隔符,则使用set命令进行设置。
eg:
sql>setcolsep|
SQL>selectename,salfromempwhereempno=7788
ENAME|SAL
———-|———-
SCOTT|3000
(5)feedback
该环境变量用于指定显示反馈行数信息的最低行数,其默认值为6。
如果要禁止显示行数反馈信息,则将feedback
设置为off。
假设只要有查询结果就返回行数,那么可以将该环境变量设置为1.eg:
sql>setfeedback1
sql>selectename,salfromempwhereempno=7788;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLPLUS 使用 技巧