【网学网提醒】:网学会员为需要朋友们搜集整理了sqlplus使用技巧集锦(上)相关资料,希望对各位网友有所帮助!
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>select
enamefromtempwheredeptno=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/sq
l块,而且还可以根据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变量时,
使用&;标号直接引用其原有值,而不需要输入数据。