.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

时间:2022-08-30 17:45:02

1、Oracle 数据库管理工具概述

顾名思义,数据库管理工具就是用来管理数据库的,一般分为命令行工具和图形化工具两类。平常大家说的数据库管理工具一般是指图形化工具。常见的每种数据库都有很多管理工具,还有支持多种数据库管理的工具,可谓是五花八门。一般数据库厂商都会提供针对自家数据库的管理工具,譬如微软的 SQL Server Management Studio(SSMS),甲骨文的 SQL Developer、SQL*Plus(由于*不易写,下文将统一省略为 SQL Plus)、Enterprise Manager(EM) 等。

如果你用 SQL Server,那么 SSMS 将是你唯一明智的选择,因为 SSMS 是一个包罗万象的集成环境,几乎你需要的所有功能都能从中找到,而且它界面较为美观、操作也比较方便和流畅,第三方工具实在难以望其项背。但如果你用 Oracle,你会发现 SQL Plus 和 EM 根本用不顺手,可能 DBA 更喜欢这两个工具,而 SQL Developer 明显比较卡顿。所以程序员一般都不用 Oracle 官方的工具,反倒是用 PL/SQL Developer、Toad for Oracle 等三方工具的比较多。

我发现身边的同事基本上都是用 PL/SQL Developer,只有极少数在用 Toad for Oracle 或 SQL Developer;而且有经验的程序员一般都用过 SQL Plus,但普遍都是通过 cmd 来调用,说实话 SQL Plus 里有些命令的确很好用。下面将简述几个常见工具以供大家参考:

2、SQL Plus 实用命令参考

SQL Plus 支持的命令非常多,绝大部分我也没用过,但有些好用的命令偶尔也会用用。本节将按功能介绍一些我个人觉得还比较实用的命令。在具体介绍之前,我先做两点说明,第一,SQL Plus 总是会通过一个右尖括号“>”来提示输入下一行;第二,很多命令都有简写形式,本文会同时给出两种形式,为减少累赘叙述和增强排版美观,书写格式统一定为:完全命令/简写命令

2.1、连接/断开命令

连接命令:打开 cmd 输入sqlplus并按下回车(即打开 SQL Plus),结果如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

根据提示输入用户名并按下Enter,会进一步提示输入口令,然后输入密码并按下Enter,即可连上 Oracle,结果如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

这里有个需要注意的小细节就是密码不会回显,所以你得确保一次性输对,过程中不能按其它键,尽管按什么都看不见。

如果你内心是拒绝看不到输入的,那么还可以更简单一些,只要在提示输入用户名的时候一次性把用户名和密码都输入,然后回车也能连上 Oracle。具体写法有 4 种,语法示例:

username/password
username/password@tnsname
username/password@//host:port/instance_name
/ as sysdba

其中,第 1 种写法通过本地连接,不需要数据库服务器启动监听,只要数据库服务器处于可用状态即可。第 2 种写法通过网络连接,需要数据库服务器启动监听。第 3 种写法与第 2 种写法功能类似,而且不用配置监听名。第 4 种写法通过操作系统认证,不需要数据库服务器启动监听,也不需要数据库服务器处于可用状态。另外,如果要普通以管理员身份登录,则需要在最后加上as sysdba即可。

其实还有更简单的方式,一步就能连上 Oracle——打开 cmd 之后一次性输入sqlplus和上文 4 种用户名密码写法中的任何一种即可。示例如图(写法 1):

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

断开命令:连上数据库之后,如果想要回到 cmd,可以用exitquit,这两个命令的功能相同,都是终止 SQL Plus 并返回到操作系统。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

假如要向数据库提交修改并断开连接,但不想退出 SQL Plus,可以用disconnect/disc,示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

断开连接后如果想再连上数据库就得用connect/conn了,该命令之后可以跟上文 4 种用户名密码写法中的前 3 种。示例如图(写法 1):

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

2.2、执行 SQL 语句

可以在 SQL Plus 中执行任何 SQL 语句。有个/命令专门用于执行 SQL 语句或 PL/SQL 语句块,写完整个语句后回车,然后在下一行输入一个/再回车,即可执行上面的语句。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

我本人不太喜欢/命令,因为它的用法让我感觉到不适,尤其是得按多次回车,比较繁琐。后来我发现只要在 SQL 语句末尾加上;并回车也能执行,除有些多行 PL/SQL 语句块必须用/才能执行以外,其它情况都可以用;替代/。所以我平常是能用;就用;,实在不行再用/。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

可以通过在行的尾部输入一个连字符-并回车把较长的 SQL 语句分成多行输入,为了排版也可以在连字符的前面输入空格,甚至可以省略连字符。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

2.3、执行 PL/SQL 语句

也可以在 SQL Plus 中执行 PL/SQL 命令或块。譬如你可以通过show命令来查看当前登录用户的用户名,示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

show用于显示 SQL Plus 系统变量或 SQL Plus 环境的值。与之相对的set用于设置系统变量的值以改变当前会话的 SQL Plus 环境。如果查询结果集的列数或行数较多的话,SQL Plus 的显示结果可能会很乱,这时候就可以通过set来改变linesizepagesize的值,从而使得显示结果更为美观。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

另外,show命令还有几个与linesize用法完全相同的参数,如release/rel用于显示版本,sga用于显示 SGA,all用于显示所有系统参数的当前值,具体写法可参考上例。set命令有一对类似开关的参数分别是time ontime off,前者用于在窗口每一行前显示当前系统时间部分,而后者则用于关闭时间显示,也就是默认的效果,有兴趣的读者可自行试试set time on的效果。

有个非常好用的命令describe/desc,官方释义为:列出指定的表、视图或同义词的列定义,或者列出指定函数或过程的规范。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

2.4、文件操作命令

有时候好不容易写了一条比较长的语句,而且往后可能还会用到,这就需要保存下来备用了,或者你想执行某个脚本文件中的脚本,又或者你只是想看看某个脚本文件,甚至你还想直接打开脚本文件编辑它……很显然,如果没有相关命令的支持,在 cmd 窗口里是很不方便完成这类文件操作的,好在 SQL Plus 已经提供了相关命令。命令说明如下:

  • save:把缓冲区中的内容保存到一个操作系统文件中(我试过后缀用 sql 或 txt 都行)。
  • start\@:执行指定脚本中的 SQL Plus 语句。可调用本地文件系统或 Web 服务器中的脚本。
  • @@:执行脚本。这个命令与@命令类似。所不同的是在执行嵌套的脚本时,它会在与调用它的脚本相同的路径中查找要执行的脚本。简单的说就是它可以在一个脚本中调用另一个脚本。
  • get:把操作系统文件中的内容读取到缓冲区中。
  • edit:调用操作系统的一个文本编辑器来编辑指定文件或缓冲区中的内容。
  • spool\spo:把查询结果保存到操作系统文件中,也可以发送到打印机。

前 5 个命令用法是一样的,只需要在命令后面跟脚本文件全路径回车即可。也可以只写文件名,即默认脚本文件在当前用户目录中(格式:“C:\Users\用户名\脚本文件名”,我只在 Windows 7 中测试过)。这 5 个命令相对来说比较简单,结果也显而易见,就不再提供示例了。

spo命令相对复杂,我感觉它就相当于一个文件操作开关,它可以把打开后到关闭前所有查询语句及查询结果都保存到指定的文件中。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

结果如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

2.5、修改用户密码

password\passw:修改指定用户的密码,省略参数默认修改当前用户的密码。注意密码不在输入设备上回显。示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

2.6、执行存储过程

  • execute\exec:执行 PL/SQL 语句。尤其是执行带存储过程的语句,比普通的 PL/SQL 语法要简洁很多,尤其是执行不带参数的存储过程,直接在exec后跟存储过程名字并回车即可。
  • variable\var:声明可在 PL/SQL 中引用的绑定变量。
  • print:显示绑定变量的当前值。

普通 PL/SQL 语法调用带输出参数的存储过程,示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

利用exec调用带输出参数的存储过程,示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

2.7、其它命令

  • help:访问 SQL Plus 帮助系统。这应该是非常有用的一个命令,可以在这个命令之后跟其它命令来查看其它命令的帮助说明。
  • host:在不退出 SQL Plus 的情况下执行操作系统命令。譬如正在用 SQL Plus 的时候,急需看一下本机能不能访问百度,示例如图:

    .Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)
  • startup:启动 Oracle 实例,并可装载和打开数据库。
  • shutdown:关闭正在运行的 Oracle 实例。

3、总结

本文主要对常见 Oracle 数据库管理工具做了个概括,并着重对 SQL Plus 中的实用命令做了个总结。可能大多数开发人员都觉得 SQL Plus 使用不方便,但我个人觉得某些特殊时候用一下 SQL Plus 反而能更方便快捷的解决问题。譬如你突然忘记了某个急需登录的用户的密码,比起先打开其它数据库管理工具,然后以管理员身份登录,进而找到对应用户,最后再来更改密码而言,显然是通过 SQL Plus 操作更为简单快速,示例如图:

.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)

本文链接http://www.cnblogs.com/hanzongze/p/oracle-sqlplus.html

版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!本人初写博客,水平有限,若有不当之处,敬请批评指正,谢谢!