博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Oracle 的 Sql*Plus 常用命令介绍【转】

Posted on 2012-09-13 11:21  徐正柱-  阅读(414)  评论(0编辑  收藏  举报

估计用 Oracle 的几乎一开始都是使用 Sql*Plus 吧,

毕竟这个工具可以运行在任何的 Oracle 运行的平台上,

这个工具呢,您可以在客户端实现安装,也可以在服务端安装,

在客户端的安装呢,主要是通过安装 Oracle 提供的客户端软件安装,

而在服务端的话,则是通过安装 Oracle 时自动安装的,

Sql*Plus 呢,其是一个基于 C/S 的 Sql 开发工具,包括客户层和服务层,

其可以实现执行 Sql 语句或者是执行含有 Sql 语句的文件,

同时,其也能够执行 PL/Sql 语句,所以说是非常的方便啊,

这一篇博文呢,我将会介绍一些关于 Sql*Plus 常用的命令,

注意是常用的命令,而非那些并不是很常用的又比较钻牛角尖的命令!!!

其中有一些命令也还是很实用的!!!

1. 连接 Oracle 命令

您可以在 DOS 窗口下运行 SqlPlus 命令或者是 SqlPlus/nolog 等等诸如的命令,

但是需要明白的是,这里呢,您要想直接在 DOS 下运行上面的命令,还必须设置好环境变量,

因为实质上,您运行的这条命令所在路径是

D:\app\XiaoZhen\product\11.1.0\db_1\BIN 下的 SqlPlus.exe

(该路径可能随机器的安装路径不同而不同)

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb.png" width=555 height=131 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb.png">

2. 登陆 Oracle 命令

使用 connect 用户名/密码,或者是直接运行 connect (connect 命令是可以缩写为 conn 的),

如果是直接使用 connect 命令的话,则会在后续的运行中提示输入用户名和密码,

直接运行 connect 命令呢,有一大好处,就是您输入的密码会自动隐藏,不让用户看见,

比如下面的例子中口令行就被隐藏了

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_1.png" width=221 height=124 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_1.png">

3. “ /“命令

这里需要提及一个东西,就是当运行 Sql*Plus 时, Oracle 会在在缓冲区中保留最后的执行命令,

而针对这个缓冲区中的保存的命令,可以使用符号 “/”来快速访问,

即可以使用 “/”命令来再次运行您最后执行的命令

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_2.png" width=349 height=189 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_2.png">

4. Sql*Plus 行编辑之 List 命令

这里呢,也还是需要提一下,就是 Sql*Plus 呢提供了一个行编辑的功能,

这个功能呢主要是针对快速修改 Sql 缓冲区中的 Sql 语句,并且再次用来执行。

需要注意的是,由于缓冲区中只保存了您执行的最后一条 Sql 语句,

而行编辑就是针对这一条语句来说的,因为这一条 Sql 语句可能有 n 行,

List 命令呢,总共有三种形式,及 List --列出缓冲区中所有的行,

List n --列出缓冲区中的第 n 行,List * --列出当前行,

然后呢,您需要注意的是哪一行才是当前行,当前行呢,在使用 List 列出后,

会在其前面有一个 * 标志,当前行会随着您的选择而变化。

下面的例子中 Sql 语句总共有三行,您可以注意 * 的变化

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_3.png" width=239 height=407 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_3.png">

5. Sql*Plus 行编辑之 Del 命令

这个 Del 命令呢,就是用来删除缓冲区中储存的 Sql 语句的指定的行的。

形式呢,也可想而知,有三种,

即 Del --删除所有行,Del n --删除指定行,Del * --删除当前行

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_4.png" width=254 height=512 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_4.png">

6. Sql*Plus 行编辑之 Input 命令

前面呢,介绍了行编辑的查看和删除,那么这里就要介绍如何往缓冲区中的行里头添加新的行,

这里就是使用 Input 命令来实现的,详细的请看下面的演示过程

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_5.png" width=208 height=448 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_5.png">

7. Sql*Plus 行编辑之 Change 命令

这个 Change 命令的作用就是将 Sql 缓冲区中的某行进行修改

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_7.png" width=270 height=443 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_7.png">

8. 清空 Sql 缓冲区命令

Clear Buffer,作用的话自然是将 Sql 缓冲区中的所有行进行删除,即清除缓冲区

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_8.png" width=411 height=265 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_8.png">

9. 定义 Sql 编辑器命令

define_editor

各位呢,估计也是体会到了在 Sql*Plus 这个黑框框中输入 Sql 语句时的麻烦,

但是呢,下面介绍的是您自己可以自定义一个编辑器来编辑 Sql 语句,

下面的例子是先定义您的编辑器,我定义的是记事本程序(您也可以定义成其他的编辑器),

然后我在缓冲区中留下一条 Sql 语句(就是执行一条 Sql 语句而已),

再调用 ed(edit 的缩写),这样就可以调出一个记事本的窗口,并且,

会自动将 Sql 缓冲区中的内容写入到这个记事本编辑器中,

您呢,可以通过在记事本中编辑您的 Sql 语句,这些内容会自动保存到缓冲区中,

然后再在 Sql*Plus 中运行 “/”来调用 Sql 缓冲区中的内容(即在记事本中定义的内容),

其妙用呢,还请看下面的演示

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_9.png" width=470 height=193 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_9.png">

然后我再在上面的记事本中将 Sql 语句修改为 select max(empno) from emp;

然后保存记事本中的内容,重新调用 “/”,

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_10.png" width=357 height=163 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_10.png">

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_11.png" width=310 height=221 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_11.png">

10. Save 命令

Save 命令呢,是将 Sql 缓冲区中的内容来保存到指定路径的文件中(默认是 . sql 的后缀名)。

如果这个文件已经存在的话,将会写入失败,当然,如果您想覆盖掉这个文件的话,

您可以在后面加 Replace 命令,比如 save d:\test replace

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_12.png" width=311 height=232 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_12.png">

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_13.png" width=331 height=298 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_13.png">

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_14.png" width=325 height=132 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_14.png">

11. 使用注释命令

在 Sql*Plus 中,您可以使用三种方法实现注释,

一是使用 Remark 命令来实现单行注释,且是用于命令文件中(即 . sql 中)

二是使用来实现多行注释,

三是使用 -- 来实现单行注释

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_17.png" width=391 height=273 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_17.png">

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_18.png" width=289 height=282 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_18.png">

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_16.png" width=252 height=357 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_16.png">

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_15.png" width=232 height=421 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_15.png">

12. Run 命令

首先是 run(缩写是 r)命令,这条命令的作用是列出当前缓冲区中的 Sql 语句,

同时执行这条语句,其可以和“/”来对比,“/”这个命令呢,只是执行缓冲区中的语句,

而并不会显示出缓冲区中的 Sql 语句

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_19.png" width=334 height=192 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_19.png">

13. @ 命令

这个命令呢,是用来运行指定路径的文件中定义的 Sql (当然也包括PL/SQL)语句的。

这个命令既可以在会话层使用,也可以在命令层使用,何为会话层呢,

就是当用户登录了 Oracle 时,就会自动建立一个会话,在这个层面上就是会话层,

而何为命令层呢,自然就是没有用户登录的情况下,而只是使用 SqlPlus 命令连接到了 Oracle ,

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_21.png" width=257 height=388 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_21.png">

14. Start 命令

这个命令呢,和 “@”命令功能很类似,但是呢,这个命令却并没有 “@”命令那么强大,

其只能运行在会话层,而不能工作在命令层。

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_20.png" width=252 height=406 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_20.png">

15. Get 命令

Get 命令呢就是将指定路径下的 .sql 文件中的内容读取出来,但是并不执行这些内容。

的 Sql*Plus 常用命令介绍【转】" border=0 alt=image src="https://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_22.png" width=385 height=58 XXXXX="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" real_src="http://images.cnblogs.com/cnblogs_com/QinBaoBei/WindowsLiveWriter/OracleSqlPlus_11C6F/image_thumb_22.png">

在 Sql*Plus 中呢,其实还有很多的命令,诸如格式化列啊,

设置每一页显示的记录条数啊,设置每一行的宽度啊,

设置指定名称列的宽度啊,

这些呢,我就只稍微写点范例了,因为这些都太常见,几乎每次都要使用,

估计大家也都很熟悉了,所以便不作介绍了

col ename for a50

set pagesize 100

set linesize 200