SQL*Plus是Oracle提供的一个工具程序。
1、启动SQL*Plus
Oracle不仅提供了命令行和图形界面的SQL*Plus,而且还可以在Web浏览器中运行。
● 在命令行运行SQL*Plus
使用sqlplus命令来完成,该命令适用于任何操作系统平台。
语法:sqlplus [username]/[password] [@server],username指定数据库用户名,password用于指定用户口令,server用于指定主机字符串(网络服务名),当连接到本地数据库时,不需要提供网络服务名,连接远程数据库必须要使用网络服务名。
● 在Windows环境中运行SQL*Plus
在Windows环境中安装了Oracle数据库产品,那么可以在窗口环境中运行SQL*Plus。
● iSQL*Plus
iSQL*Plus是Oracle 9i的新特性,它是SQl*Plus在浏览器中的实现方式。在Oracle 9i中为了在浏览器中运行iSQL*Plus,必须首先在Oracle Server端启动HTTP Server;而在Oracle 10g中,为了在浏览器中运行iSQL*Plus,必须首先在Oracle Server端使用“isqlplusctl start”命令启动iSQL*Plus应用服务器,然后才能在客户端使用浏览器连接到iSQL*Plus。以普通用户登陆到iSQL*Plus,在浏览器中输入“http://主机名:端口号/isqlplus“,Oracle 10g默认端口号为5560.
2、连接命令
在连接到数据库之后,使用CONNECT命令可以切换连接;使用DISCONNECT命令可以断开连接。
⑴ CONN[ECT]
该命令用于连接到数据库,使用该命令建立新会话时,会自动断开先前会话。
执行上述连接命令后,会以SYS用户建立新会话,其中orcl为网络服务名。当连接到远程数据库时,网络服务名是必须的。当以特权用户身份连接时,必须要带有AS SYSDBA或AS SYSOPER选项。
⑵ DISC[ONNECT]
该命令用于断开已存在的数据库连接,注意该命令只是断开连接会话,而不会退出SQL*Plus。
⑶ PASSW[ORD]
该命令用户修改用户的口令。任何用户都可以使用该命令修改其自身口令。但如果修改其它用户的口令,则必须以DBA身份(SYS和SYSTEM)登陆。以修改SCOTT用户口令为例:
⑷ EXIT
该命令用于退出SQL*Plus,也可以使用QUIT命令退出。注意,默认情况下,当执行该命令时会自动提交事务。
3、编辑命令
在SQL*Plus中执行SQL语句时,Oracle会将SQL语句暂时存放到SQL缓冲区。例如当执行“SELECT * FROM emp”时,该语句会暂时存放到SQL缓冲区,当执行新的SQL语句时,会自动清除先前SQL缓冲区的内容,并将新语句放到SQL缓冲区中。使用SQL*Plus所提供的编辑命令可以显示、编辑和修改SQL缓冲区的内容。
⑴ L[IST]
该命令用于列出缓冲区的内容。使用该命令可以列出SQL缓冲区某行、某几行或全部行的内容。在显示结果中,数字为具体的行号,而“*”则表示当前行。
⑵ A[PPEND]
该命令用于在SQL缓冲区的当前行尾部添加内容。也就是将内容追到到标记为“*”的行尾部。
⑶ C[HANGE]
该命令用于修改SQL缓冲区的内容。如果在编写SQL语句时写错了某个词可以使用此命令进行修改。
⑷ DEL
该命令用于删除SQL缓冲区中内容,使用它可以删除某行、某几行或所有行。默认情况下,当直接执行DEL时,只删除当前行的内容。
如要删除多行,指定起始和终止行号
⑸ I[NPUT]
该命令用于在SQL缓冲区的当前行后新增加一行。
如果要在首行前增加内容,则使用“0 文本”。
⑹ N
该数值用于定位SQL缓冲区的当前行。
⑺ ED[IT]
该命令用于编辑SQL缓冲区的内容。当运行该命令时,在Windows平台中会自动启动记事本,以编辑SQL缓冲区内容。
⑻ RUN和/
RUN和/命令都可以用于运行SQL缓冲区中的SQL语句,使用RUN命令时,还会列出SQL缓冲区内容。
4、文件操纵命令
对于需要经常使用键盘输入执行的某些命令,可以保存到一个SQL脚本文件中。通过使用脚本,一方面可以降低命令输入量,另一方面可以避免输入错误。有如下一些常用的操纵SQL脚本的命令:
⑴ SAVE
该命令用于将当前SQL缓冲区中的内容保存到SQL脚本中。执行该命令时,默认选项为CREATE,即建立新文件。
执行上述命令后就会在F盘下创建query.sql新脚本文件,并将SQL缓冲区内容放到该脚本文件中。如果SQL脚本文件已经存在,使用REPLACE选项替换存在的脚本文件。
如果不想覆盖已存在SQL脚本内容,而是在后面追加内容,则使用APPEND选项。
⑵ GET
与SAVE命令作用相反,用于将SQL脚本中的所有内容装载到SQL缓冲区中。
⑶ START和@
START和@命令用于运行SQL脚本文件。注意“/”。
⑸ SPOOL
该命令用于将SQL*Plus屏幕内容存放到SQL脚本中。
5、格式命令
⑴ COL[UMN]
该命令用于控制列的显示格式。该命令包含有四个选项:CLEAR选项用于清除已定义列的显示格式;HEADING选项用于指定列的显示标题;JUSTIFY选项用于知道列标题的对齐格式(LEFT、CENTER、RIGHT);FORMAT选项用于指定列的显示格式。格式模型包含一下一些元素:
● An:设置CHAR、VARCHAR2类型列的显示宽度
● 9:在NUMBER类型列上禁止显示前导0
● 0:在NUMBER类型列上强制显示前导0
● $:在NUMBER类型列前显示美元符号
● L:在NUMBER类型列前显示本地货币符合
● .:指定NUMBER类型列的小数点位置
● ,:指定NUMBER类型列的千分隔符
⑵ TTITLE
该命令用于知道页标题,页标题会自动显示在页的中央。如果页标题由多个词组成,则用单引号引住,否则不会以空格隔开。可以使用“TTITLE OFF”命令禁止显示页标题。
⑶ BTITLE
该命令用于指定页脚注,页脚注会自动显示在页的中央。如果页脚注由多个词组成,则用单引号引住,否则不会以空格隔开。可以使用“BTITLE OFF”命令禁止显示页脚注。
⑷ BREAK
该命令用于禁止显示重复行,并将显示结果分隔为几个部分,通常应该在ORDER BY的排序列上使用该命令。
skip n选项用于指定各个部分之间的分隔空行,n用于指定分隔的空行数目。
6、交互式命令 为了使得SQL脚本可以根据不同输入从而获得不同结果,需要在SQL脚本中包含交互式命令。使用交互式命令可以在SQL*Plus中定义变量,并且在运行SQL脚本时可以为这些变量动态输入数据。
⑴ &
引用替代变量时,必须要带有该标号。该替代变量只在当前语句中起作用。
⑵ &&
该标号类似于&标号,但是&&标号所定义的变量会在当前SQL*Plus环境中一直生效。
⑶ DEFINE
该命令用于定义类型为CHAR的替代变量。在当前SQL*Plus环境中起作用。使用该命令定义变量时,如果变量值包含空格或区分大小写,则用引号引住。另外,使用“DEFINE 变量名”可以检查变量是否已经定义。
set verify off用于关闭原值和新值的输出。
⑷ ACCEPT
该命令可以用于定义CHAR、NUMBER和DATE类型的替代变量。当使用该命令定义替代变量时,还可以指定变量输入提示、变量输入格式、隐藏输入内容。
示例一:指定变量输入提示
示例二:隐藏用户输入
首先定义替代变量pwd,然后输入pwd的值(此处为tiger),在连接的时候&pwd便替换为tiger。
⑹ PROMPT和PAUSE
PROMPT命令用于输出提示信息,PAUSE命令用于暂停脚本执行。
⑺ VARIABLE
该命令用于在SQL*Plus中定义绑定变量。当引用绑定变量时,必须要在绑定变量前加冒号(:),当直接给绑定变量赋值时,需要使用EXECUTE命令。
7、显示和设置环境变量
使用SQL*Plus的环境变量可以控制其运行环境。
⑴ SHOW ALL 显示所有环境变量
⑵ ARRAYSIZE
该环境变量用于指定数组提取尺寸,其默认值为15。该值越大网络开销将会越低,当占用内存会增加。
⑶ AUTOCOMMIT
该环境变量用于设置是否自动提交DML语句,默认值为OFF,当设置为ON时,每次执行DML语句会自动提交。
设置为自动提交
⑷ COLSEP
该环境变量用于设置列之间的分隔符,默认分隔符为空格。
⑸ FEEDBACK
该环境变量用于指定显示反馈行数信息的最低行数,其默认值为6,当你的查询结果选择的行数低于6行时,不会显示反馈行数信息。只要有查询结果就希望返回行数(也就是显示已选择几行),则可以把FEEDBACK设置为1。
⑹ HEADING
该环境变量用于设置是否显示列标题,其默认值为ON。如果不显示列标题则设置为OFF。
⑺ LINESIZE
该环境变量用于设置行宽度,默认值为80。默认情况下如果数据长度超过80个字符,那么在SQL*Plus中会折行显示数据。
⑻ LONG
该环境变量用于设置LONG和LOB类型列的显示长度。其默认值为80。也就是说当查询LONG或LOB列时,只会显示该列的前80个字符,要显示更多字符,应该设置更大的值。
⑼ PAGESIZE
该环境变量用于设置每页所显示的行数,其默认值为14。
⑽ SERVEROUTPUT
该环境变量用于控制服务器输出,其默认值为OFF。表示禁止服务器输出。默认情况下在调用DBMS_OUTPUT包时,不会在SQL*Plus屏幕上显示输出结果。为了显示输出结果必须要将SERVEROUTPUT设置为ON。
⑾ TERMOUT
该环境变量用于控制SQL脚本的输出,其默认值为ON,当使用默认值时,如果SQL脚本有输出结果,则会在屏幕上显示结果;如果设置为OFF,则不会显示。
⑿ TIME
该环境变量用于设置在SQL提示符前是否显示系统时间,默认值为OFF,禁止显示系统时间,如果设置为ON,则显示系统时间。
⒀ TIMING
该环境变量用于设置是否要显示SQL语句执行时间,默认为OFF,不会显示,如果设置为ON则会显示SQL语句执行时间。