SQLPLUS使用技巧.docx

上传人:b****8 文档编号:23912575 上传时间:2023-05-22 格式:DOCX 页数:22 大小:22.84KB
下载 相关 举报
SQLPLUS使用技巧.docx_第1页
第1页 / 共22页
SQLPLUS使用技巧.docx_第2页
第2页 / 共22页
SQLPLUS使用技巧.docx_第3页
第3页 / 共22页
SQLPLUS使用技巧.docx_第4页
第4页 / 共22页
SQLPLUS使用技巧.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

SQLPLUS使用技巧.docx

《SQLPLUS使用技巧.docx》由会员分享,可在线阅读,更多相关《SQLPLUS使用技巧.docx(22页珍藏版)》请在冰豆网上搜索。

SQLPLUS使用技巧.docx

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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1