使用sql*plus编辑sql文本(r4笔记第53天)

工作中可能会经常实用工具来编辑sql 文本,实用sql*plus来编辑的机会比较少,但是这些也是硬功夫,一旦有需要手工编辑,其实发现也是很容易的。 关于编辑使用的命令如下,其实看起来一大堆,主要的命令还是增(input)删(del)改(change)查(list),按照这个思路来看就会容易很多,有些命令也是选择性的使用。

Command

Abbreviation

Purpose

APPEND text

A text

adds text at the end of the current line

CHANGE/old/new

C/old/new

changes old to new in the current line

CHANGE/text

C/text

deletes text from the current line

CLEAR BUFFER

CL BUFF

deletes all lines

DEL

(none)

deletes the current line

DEL n

(none)

deletes line n

DEL *

(none)

deletes the current line

DEL n *

(none)

deletes line n through the current line

DEL LAST

(none)

deletes the last line

DEL m n

(none)

deletes a range of lines (m to n)

DEL * n

(none)

deletes the current line through line n

INPUT

I

adds one or more lines

INPUT text

I text

adds a line consisting of text

LIST

; or L

lists all lines in the SQL buffer

LIST n

L n or n

lists line n

LIST *

L *

lists the current line

LIST n *

L n *

lists line n through the current line

LIST LAST

L LAST

lists the last line

LIST m n

L m n

lists a range of lines (m to n)

LIST * n

L * n

lists the current line through line n

最后使用一个实例来说明一下,我们有下面的sql语句。 select c from (select * from (select 'oracle' cc, level no from dual connect by level <= length('oracle')) model return updated rows dimension by (no) measures (cc c, no n) rules ( c[any] = substr(c[cv()],n[cv()],1) )); 我们需要做的就是把它修改成为一个不可运行的结构,然后把它再改回去。 需要修改成如下的样子,标黄的部分是需要删除的。 select c from (select * from (select 'oracle' cc, level no from dual connect by level <= length('oracle')) model return updated rows dimension by (no) measures (cc c, no n) rules ( c[any] = substr(c[cv()],n[cv()],1) )); 可以使用下面的命令来完成。 SQL> select c from 2 (select * from 3 (select 'oracle' cc, level no from dual connect by level <= length('oracle')) 4 model return updated rows 5 dimension by (no) 6 measures (cc c, no n) 7 rules ( 8 c[any] = substr(c[cv()],n[cv()],1) 9 )); C ------ o r a c l e 6 rows selected. SQL> del 1 --删除第1行,第2行变成了第1行 SQL> c/(sel/sel --把第1行的(sel变成sel 1* select * from SQL> l --列出修改后的语句情况 1 select * from 2 (select 'oracle' cc, level no from dual connect by level <= length('oracle')) 3 model return updated rows 4 dimension by (no) 5 measures (cc c, no n) 6 rules ( 7 c[any] = substr(c[cv()],n[cv()],1) 8* )) SQL> del 3 --我们尝试删除第3行 SQL> l --列出修改后的语句情况 1 select * from 2 (select 'oracle' cc, level no from dual connect by level <= length('oracle')) 3 dimension by (no) 4 measures (cc c, no n) 5 rules ( 6 c[any] = substr(c[cv()],n[cv()],1) 7* )) SQL> l last --列出最后的一行语句 7* )) SQL> c/))/) --把))替换为) 7* ) SQL> l --列出修改后的sql情况 1 select * from 2 (select 'oracle' cc, level no from dual connect by level <= length('oracle')) 3 dimension by (no) 4 measures (cc c, no n) 5 rules ( 6 c[any] = substr(c[cv()],n[cv()],1) 7* ) SQL> / --这个时候运行,语句按照期望是不能运行的。 dimension by (no) * ERROR at line 3: ORA-00933: SQL command not properly ended 我们预期的结果达到了,然后我们需要把结果改回去,让它可运行。 SQL> 0 select c from --我们在第1行前增加一行 SQL> l --列出修改后的sql情况 1 select c from 2 select * from 3 (select 'oracle' cc, level no from dual connect by level <= length('oracle')) 4 dimension by (no) 5 measures (cc c, no n) 6 rules ( 7 c[any] = substr(c[cv()],n[cv()],1) 8* ) SQL> l 1 2 --列出第1-2行,然后定位在第2行 1 select c from 2* select * from SQL> c/sel/(sel --把第2行的sel修改为(sel 2* (select * from SQL> l --列出修改后的sql情况 1 select c from 2 (select * from 3 (select 'oracle' cc, level no from dual connect by level <= length('oracle')) 4 dimension by (no) 5 measures (cc c, no n) 6 rules ( 7 c[any] = substr(c[cv()],n[cv()],1) 8* ) SQL> c/)/)) --把最后1行的)修改为)) 8* )) SQL> l --把修改后的sql语句列出来 1 select c from 2 (select * from 3 (select 'oracle' cc, level no from dual connect by level <= length('oracle')) 4 dimension by (no) 5 measures (cc c, no n) 6 rules ( 7 c[any] = substr(c[cv()],n[cv()],1) 8* )) SQL> l 3 --列出第3行的sql 语句 3* (select 'oracle' cc, level no from dual connect by level <= length('oracle')) SQL> append model return updated rows --在第3行后追加一行内容 3* (select 'oracle' cc, level no from dual connect by level <= length('oracle'))model return updated rows SQL> l --列出修改后的sql语句情况 1 select c from 2 (select * from 3 (select 'oracle' cc, level no from dual connect by level <= length('oracle'))model return updated rows 4 dimension by (no) 5 measures (cc c, no n) 6 rules ( 7 c[any] = substr(c[cv()],n[cv()],1) 8* )) SQL> / --运行sql语句的结果 C ------ o r a c l e 6 rows selected. 使用sql*plus所做的修改就这样完成了,其实很多操作还是可控的,修改的过程是一个交互式的过程,和vi操作略有不同,但是还是比较实用的。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-02-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员历小冰

MySQL探秘(二):SQL语句执行过程详解

 昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构的了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化...

32330
来自专栏程序小工

MySQL数据库常见名词对比

MySQL 由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟,它也...

16330
来自专栏aoho求索

MySQL探秘(二):SQL语句执行过程详解

 昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构的了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化...

28610
来自专栏性能与架构

HBase 的表结构

HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的 关系型数据库的表结构 为了更...

495130
来自专栏PPV课数据科学社区

SQL Server优化50法

查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效...

45870
来自专栏自由而无用的灵魂的碎碎念

Oracle:创建db_link

global_name也就是数据库的全局数据库名,可已使用select * from global_name;查询:

9920
来自专栏存储技术

MySQL加锁范围分析

最近,遇到了一个关于mysql 加锁的问题,将当时的情形简化如下,有一个index_test表,表结构如下所示:

64260
来自专栏乐沙弥的世界

父游标、子游标及共享游标

        游标是数据库领域较为复杂的一个概念,因为游标包含了shared cursor和session cursor。两者有其不同的概念,也有不同的表现形...

8030
来自专栏python成长之路

mysql在ubuntu中的操作笔记(详)

17840
来自专栏人云亦云

Zookeeper动态扩容详细步骤

54750

扫码关注云+社区

领取腾讯云代金券