专栏首页杨建荣的学习笔记使用sql*plus编辑sql文本(r4笔记第53天)

使用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),作者:r4笔记第53天

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入理解Oracle中的DBCA

    但凡是学习 过Oracle的同学,DBCA都是一个必备工具,有了这个工具,创建数据库成为可能。而DBCA本身有图形和静默两种方式。静默方式看起来高大上,可以轻松...

    jeanron100
  • 11g Active DataGuard初探(r5笔记第54天)

    原本dataguard中日志应用和数据库只读查询是一个互斥的关系,两者不能并存。如果需要应用日志,则数据库只能在Mount状态下 使用recover manag...

    jeanron100
  • 一条insert语句导致的性能问题分析(一)(r8笔记第40天)

    今天早上开发找我看一个问题,说他们通过程序连接去查一个表的数据的时候,只查到了8条记录,这个情况着实比较反常,因为从业务上的数据情况来说,不可能只有8条。 但是...

    jeanron100
  • 流动模式如何驱动疾病传播: 使用公共交通乘客卡旅行数据的案例研究(CS SI)

    传染病爆发对人类健康构成全球性威胁,并被视为一项重大的卫生保健挑战。 疾病迅速在空间传播的一个主要驱动因素是人类的活动能力。特别是个体的旅行模式在很大程度上决定...

    用户7095611
  • MYSQL多表查询与事务

    select * from emp,dept where emp.`dept_id` = dept.`id`;#设置过滤条件(隐式内连接)

    嘘、小点声
  • oracle--groupby分组学习

    eadela
  • 收集统计信息导致索引被监控

          对于索引的调整,我们可以通过Oracle提供的索引监控特性来跟踪索引是否被使用。尽管该特性并未提供索引使用的频度,但仍不失为我们参考的方式之一。然而...

    Leshami
  • 裂变锁(CS OS)

    经典的测试与测试(TS)互斥锁很简单,并且在轻度竞争或无竞争的情况下,具有高性能和低延迟的所有权转移。然而,它们并没有在激烈的竞争中优雅地扩大规模,也不提供任何...

    非过度曝光
  • SQL学习之高级数据过滤

    一、高级数据过滤之IN操作符 IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。代码如下: select...

    郑小超.
  • Bypass D盾_防火墙(新版)SQL注入防御

    『D盾_防火墙』专为IIS设计的一个主动防御的保护软件,以内外保护的方式防止网站和服务器给入侵。新版的D盾_防火墙,支持系统:win2003/win20...

    Bypass

扫码关注云+社区

领取腾讯云代金券