SQLPLUS使用技巧

[tag light=”true”]your code here[/tag]

我把Oracle数据库安装在linux操作系统下,但是在日常的使用中,有一个问题,让我感到很囧。在linux系统终端里,如果我想再次输入以前输入过的一条命令,可以使用“上下”光标进行翻页,也可以使用history命令进行查找后,使用“叹号+命令编号”(如“!20”)运行对应编号的命令。可是,进入SQLPLUS程序后,上下翻页键失去了作用,那我如果在运行某条命令出错后想对其进行修改,就没有办法吗?只能重新输入一遍吗?我在初学的时候确实是这样做的,而且在心理安慰自己:多打一遍可以让自己更熟悉命令,而且这样也能养成自己细心地习惯。可这终究不是长久之计。今天,跟大家分享一些SQLPLUS的使用技巧,以帮助你最大化的节约时间,完成工作。

查看SQLPLUS参数

进入sqlplus后,可以运行show all命令,查看SQLPLUS的设置。

这里显示只是结果的一部分,从show all显示出的结果中,可以查找到经常使用的linesizepagesize等参数的设置。Show all其实显示的是SQLPLUS程序的参数。

SQLPLUS保存最后执行的一条SQL语句

SQLPLUS会将执行的最后一条命令保存在一个文件里,在Linux系统中,你可以在$ORACLE_BASE/afiedt.bufafiedt.buf的位置我认为默认为$ORACLE_BASE,但从网上没有查到相关文档)中看到这条命令。从afiedt.buf文件的后缀名我们可以看出,这是一个缓存文件。因为有了他,我们之后的命令才能顺利运行。

运行最后执行的那条SQL语句

SQLPLUS中执行

>run

>r

>/

查看最后执行的那条SQL语句

上图中,我是临时退出SQLPLUS(下面会说到),在Linux下用more命令查看了缓存中保存的最后一条SQL语句的内容,可不可以在SQLPLUS中直接查看呢?当然!

>list

>l               //小写L

上图中2后面有一个*,有*的行表示当前行

在最后一条语句后追加语句

有的时候要增加选择条件,可以在原有语句后添加新子句,而不用重写SQL语句

i命令是insert命令的缩写

>i order
by salary

上图中返回employee_id100105之内的员工信息,如果想按照员工last_name升序排序,可直接在语句后插入order by子句。显示如上

如果你想在指定行后插入某子句,需要先更改行号

>2              //表示在第二行之后插入子句

修改最后一条SQL语句

可用cchange的缩写)命令修改当前行子句

>c
/first_name/last_name

如上图,此语句在当前行中由左向右搜索第一个first_name,用last_name替代

如果想更改当前行,可用上一个部分中提到的命令

通过vi修改最后一条SQL语句

这个方法放在ci命令后说,因为你知道了这个后,可能再也不会用ci

Vi的使用方法在此不表,能够通过vi修改buffer中的命令自然很惬意,不过需要先进行一下设置。

>define_editor=vi                       //此命令设置默认编辑器为vi

>ed                                                 //ededit的缩写,输入ed,可以vi的方式查看并修改

//最后一条SQL语句

保存SQL语句

如果你有一条SQL语句经常使用,那肯定不能指望它保存在afiedt.buf里,那应如何保存呢?

>save
statementname             //statementname指的是新文件名

保存位置是你打开terminal时的位置,认真看下面两张图,你能从中获得启示

既然保存了,就得用啊

>get 1.sql                 //list命令差不多,提取文件内容,不执行

>@ 1.sql                     //执行1.sql

>start
1.sql                //执行1.sql

暂时退出SQLPLUS

这是一个非常帅,也是非常有用的命令(至少我是这么觉得)。如果你在SQLPLUS中工作,突然想到linux系统中找一个文件,怎么办?

开一个新terminal?当然可以,如果不想这么麻烦呢,在本终端中可以么?

当然,先exit(或是quit),退出SQLPLUS,查完文件后再输SQLPLUS,输入用户名和密码就是啦!

一次两次当然没问题,如果次数多了呢?这么做多烦人啊,想要偷懒?很简单——

SQLPLUS中输入“!“,可暂时退出SQLPLUS,如果想再从linux命令行转回到SQLPLUS,只需输入exitok了。见下图

SQLPLUS中执行linux系统命令

上面的命令可以允许你暂时退出SLQPLUS,执行系统命令。可是还有更懒的同学,连SQLPLUS都不想退出,想直接在里面执行系统命令,可以么?当然——

从上图中发现,系统中执行lsSQLPLUS中执行ls的显示结果有些差异。而且在SQLPLUS中无法执行通过别名设定的系统命令,如ll(ls -l)

保存SQLPLUS设置

每个人都有不同的“恶趣味”,所以在使用SQLPLUS时会对其进行部分设置,如linesize,pagesize等等,这些都可以通过show all看到。

但是每个用户都不想在每次登陆SQLPLUS后重新设置这些选项吧,如何对其进行保存呢?

>store set username                 //username为文件名

保存时只需输入文件名,就会自动添加sql后缀。文件的内容与show all一致,有兴趣的童鞋可以看看。qs.sql文件我用黄颜色标注了一下,那不是系统的颜色,注意!

说的比较详细,这都是实用的功能,希望能帮你节约一点时间,想偷懒的最好看一下。

如对内容有问题,请留言。如有说的不确切说是错误的地方,请指教!

 

普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress