.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)
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 里有些命令的确很好用。下面将简述几个常见工具以供大家参考:
Oracle SQL Plus:是与 Oracle 进行交互的客户端工具,可以运行 SQL Plus 命令和 SQL 语句。手册:SQL*Plus® User's Guide and Reference
Oracle SQL Developer:是一个免费的集成开发环境,为了方便 Oracle 数据库的开发和管理。主页:http://www.oracle.com/technetwork/cn/developer-tools/sql-developer/overview/index.html
PL/SQL Developer:是一个商业集成开发环境,专门用于开发 Oracle 数据库的存储程序单元,在易用性等方面做的比较好,也是目前市场上最流行的 PL/SQL 程序开发工具。主页:https://www.allroundautomations.com/plsqldev.html
Toad for Oracle:是一个功能强大、结构紧凑的专业化 PL/SQL 开发环境。社区:Toad for Oracle Community
Navicat for Oracle:号称以简化的工作环境,提高 Oracle 开发人员和管理员的效率及生产力。主页:https://www.navicat.com.cn/products/navicat-for-oracle
2、SQL Plus 实用命令参考
SQL Plus 支持的命令非常多,绝大部分我也没用过,但有些好用的命令偶尔也会用用。本节将按功能介绍一些我个人觉得还比较实用的命令。在具体介绍之前,我先做两点说明,第一,SQL Plus 总是会通过一个右尖括号“>”来提示输入下一行;第二,很多命令都有简写形式,本文会同时给出两种形式,为减少累赘叙述和增强排版美观,书写格式统一定为:完全命令/简写命令
。
2.1、连接/断开命令
连接命令:打开 cmd 输入sqlplus
并按下回车(即打开 SQL Plus),结果如图:
根据提示输入用户名并按下Enter
,会进一步提示输入口令,然后输入密码并按下Enter
,即可连上 Oracle,结果如图:
这里有个需要注意的小细节就是密码不会回显,所以你得确保一次性输对,过程中不能按其它键,尽管按什么都看不见。
如果你内心是拒绝看不到输入的,那么还可以更简单一些,只要在提示输入用户名的时候一次性把用户名和密码都输入,然后回车也能连上 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):
断开命令:连上数据库之后,如果想要回到 cmd,可以用exit
或quit
,这两个命令的功能相同,都是终止 SQL Plus 并返回到操作系统。示例如图:
假如要向数据库提交修改并断开连接,但不想退出 SQL Plus,可以用disconnect/disc
,示例如图:
断开连接后如果想再连上数据库就得用connect/conn
了,该命令之后可以跟上文 4 种用户名密码写法中的前 3 种。示例如图(写法 1):
2.2、执行 SQL 语句
可以在 SQL Plus 中执行任何 SQL 语句。有个/
命令专门用于执行 SQL 语句或 PL/SQL 语句块,写完整个语句后回车,然后在下一行输入一个/
再回车,即可执行上面的语句。示例如图:
我本人不太喜欢/
命令,因为它的用法让我感觉到不适,尤其是得按多次回车,比较繁琐。后来我发现只要在 SQL 语句末尾加上;
并回车也能执行,除有些多行 PL/SQL 语句块必须用/
才能执行以外,其它情况都可以用;
替代/
。所以我平常是能用;
就用;
,实在不行再用/
。示例如图:
可以通过在行的尾部输入一个连字符-
并回车把较长的 SQL 语句分成多行输入,为了排版也可以在连字符的前面输入空格,甚至可以省略连字符。示例如图:
2.3、执行 PL/SQL 语句
也可以在 SQL Plus 中执行 PL/SQL 命令或块。譬如你可以通过show
命令来查看当前登录用户的用户名,示例如图:
show
用于显示 SQL Plus 系统变量或 SQL Plus 环境的值。与之相对的set
用于设置系统变量的值以改变当前会话的 SQL Plus 环境。如果查询结果集的列数或行数较多的话,SQL Plus 的显示结果可能会很乱,这时候就可以通过set
来改变linesize
或pagesize
的值,从而使得显示结果更为美观。示例如图:
另外,show
命令还有几个与linesize
用法完全相同的参数,如release/rel
用于显示版本,sga
用于显示 SGA,all
用于显示所有系统参数的当前值,具体写法可参考上例。set
命令有一对类似开关的参数分别是time on
和time off
,前者用于在窗口每一行前显示当前系统时间部分,而后者则用于关闭时间显示,也就是默认的效果,有兴趣的读者可自行试试set time on
的效果。
有个非常好用的命令describe/desc
,官方释义为:列出指定的表、视图或同义词的列定义,或者列出指定函数或过程的规范。示例如图:
2.4、文件操作命令
有时候好不容易写了一条比较长的语句,而且往后可能还会用到,这就需要保存下来备用了,或者你想执行某个脚本文件中的脚本,又或者你只是想看看某个脚本文件,甚至你还想直接打开脚本文件编辑它……很显然,如果没有相关命令的支持,在 cmd 窗口里是很不方便完成这类文件操作的,好在 SQL Plus 已经提供了相关命令。命令说明如下:
save
:把缓冲区中的内容保存到一个操作系统文件中(我试过后缀用 sql 或 txt 都行)。start\@
:执行指定脚本中的 SQL Plus 语句。可调用本地文件系统或 Web 服务器中的脚本。@@
:执行脚本。这个命令与@
命令类似。所不同的是在执行嵌套的脚本时,它会在与调用它的脚本相同的路径中查找要执行的脚本。简单的说就是它可以在一个脚本中调用另一个脚本。get
:把操作系统文件中的内容读取到缓冲区中。edit
:调用操作系统的一个文本编辑器来编辑指定文件或缓冲区中的内容。spool\spo
:把查询结果保存到操作系统文件中,也可以发送到打印机。
前 5 个命令用法是一样的,只需要在命令后面跟脚本文件全路径回车即可。也可以只写文件名,即默认脚本文件在当前用户目录中(格式:“C:\Users\用户名\脚本文件名”,我只在 Windows 7 中测试过)。这 5 个命令相对来说比较简单,结果也显而易见,就不再提供示例了。
spo
命令相对复杂,我感觉它就相当于一个文件操作开关,它可以把打开后到关闭前所有查询语句及查询结果都保存到指定的文件中。示例如图:
结果如图:
2.5、修改用户密码
password\passw
:修改指定用户的密码,省略参数默认修改当前用户的密码。注意密码不在输入设备上回显。示例如图:
2.6、执行存储过程
execute\exec
:执行 PL/SQL 语句。尤其是执行带存储过程的语句,比普通的 PL/SQL 语法要简洁很多,尤其是执行不带参数的存储过程,直接在exec
后跟存储过程名字并回车即可。variable\var
:声明可在 PL/SQL 中引用的绑定变量。print
:显示绑定变量的当前值。
普通 PL/SQL 语法调用带输出参数的存储过程,示例如图:
利用exec
调用带输出参数的存储过程,示例如图:
2.7、其它命令
help
:访问 SQL Plus 帮助系统。这应该是非常有用的一个命令,可以在这个命令之后跟其它命令来查看其它命令的帮助说明。host
:在不退出 SQL Plus 的情况下执行操作系统命令。譬如正在用 SQL Plus 的时候,急需看一下本机能不能访问百度,示例如图:
startup
:启动 Oracle 实例,并可装载和打开数据库。shutdown
:关闭正在运行的 Oracle 实例。
3、总结
本文主要对常见 Oracle 数据库管理工具做了个概括,并着重对 SQL Plus 中的实用命令做了个总结。可能大多数开发人员都觉得 SQL Plus 使用不方便,但我个人觉得某些特殊时候用一下 SQL Plus 反而能更方便快捷的解决问题。譬如你突然忘记了某个急需登录的用户的密码,比起先打开其它数据库管理工具,然后以管理员身份登录,进而找到对应用户,最后再来更改密码而言,显然是通过 SQL Plus 操作更为简单快速,示例如图:
本文链接:http://www.cnblogs.com/hanzongze/p/oracle-sqlplus.html
版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!本人初写博客,水平有限,若有不当之处,敬请批评指正,谢谢!
.Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus)的更多相关文章
- .Net程序员学用Oracle系列(1):导航目录
本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...
- 系列文章----.Net程序员学用Oracle系列
.Net程序员学用Oracle系列(18):PLSQL Developer 攻略 .Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus) .Net程序员学用Oracle系列(1 ...
- .Net程序员学用Oracle系列(9):系统函数(上)
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.字符函数 1.1.字符函数简介 1.2.语法说明及案例 2.数字函数 2.1.数字函数简介 2.2.语法说明及案例 3.日期 ...
- .Net程序员学用Oracle系列(10):系统函数(下)
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.近似值函数 2. ...
- .Net程序员学用Oracle系列(2):准备测试环境
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...
- .Net程序员学用Oracle系列(6):表、字段、注释、约束、索引
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.表 1.1.创建表 1.2.修改表 & 删除表 2.字段 2.1.添加字段 2.2.修改字段 & 删除字段 ...
- .Net程序员学用Oracle系列(7):视图、函数、过程、包
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...
- .Net程序员学用Oracle系列(8):触发器、任务、序列、连接
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ...
- .Net程序员学用Oracle系列(11):系统函数(下)
1.聚合函数 1.1.COUNT 函数 1.2.SUM 函数 1.3.MAX 函数 1.4.MIN 函数 1.5.AVG 函数 2.ROWNUM 函数 2.1.ROWNUM 函数简介 2.2.利用 R ...
随机推荐
- STM32+NRF24L01无线(转)
源:STM32+NRF24L01无线 硬件SPI和模拟SPI源码: nrf24发送(模拟SPI)BHS-STM32.rar nrf24接收(模拟SPI)BHS-STM32.rar nrf24发送(硬件 ...
- Online Schema Change for MySQL
It is great to be able to build small utilities on top of an excellent RDBMS. Thank you MySQL. This ...
- iOS开发——生成条形码,二维码
- (void)viewDidLoad { [super viewDidLoad]; self.imageView.image = [self generateBarCode:@"15248 ...
- BMP085气压传感器驱动
BMP085是新一代的小封装气压传感器,主要用于气压温度检测,在四轴飞行器上可以用作定高检测,该传感器属于IIC总线接口,依然沿用标准IIC驱动程序 使用该传感器需要注意的是我们不能直接读出转换好的二 ...
- VS2010环境下用ANSI C创建DLL和使用方法(转)
源:VS2010环境下用ANSI C创建DLL和使用方法 . 创建DLL工程 1.2 创建一个dll工程. 操作:a.文件->新建->项目->Win32控制台应用程序. b.输入工程 ...
- IOS开发-ObjC-NSDictionary
OC中Foundation框架中有字典类,字典分不可变字典(NSDictionary)和可变字典(NSMutableDictionary),它们的使用如下: 不可变字典: //------------ ...
- Linq左关联 右关联 内关联
1.左连接: var LeftJoin = from emp in ListOfEmployees join dept in ListOfDepartment on emp.DeptID equals ...
- iOS 之 微信开发流程
第1阶段 注册开放平台帐号 注册成为微信开放平台开发者 立即注册 认证开发者资质 开发者资质认证通过后才可申请微信支付,申请审核服务费:300元/次 立即认证 创建APP并提交审核 提交你的APP基本 ...
- 查看Eclipse版本号,及各个版本区别
查看Eclipse版本号,及各个版本区别 参考:http://blog.csdn.net/gaojinshan/article/details/38903043 查看Eclipse版本号的方法:1.找 ...
- #最小生成树# #kruskal# ----- OpenJudge丛林中的路
最小生成树 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法 ...