使用sql*plus编辑sql文本

简介: 工作中可能会经常实用工具来编辑sql 文本,实用sql*plus来编辑的机会比较少,但是这些也是硬功夫,一旦有需要手工编辑,其实发现也是很容易的。 关于编辑使用的命令如下,其实看起来一大堆,主要的命令还是增(input)删(del)改(change)查(list),按照这个思路来看就会容易很多,有些命令也是选择性的使用。
工作中可能会经常实用工具来编辑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 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 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   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   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   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   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   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   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   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 SQL> append model return updated rows  --在第3行后追加一行内容
  3* (select 'oracle' cc, level no from dual connect by level SQL> l                               --列出修改后的sql语句情况
  1  select c from
  2  (select * from
  3  (select 'oracle' cc, level no from dual connect by level   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操作略有不同,但是还是比较实用的。
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
|
6月前
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
95 0
|
7月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
170 3
|
9月前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的TTITLE和BTITLE命令:为你的数据报告加上精美的“画框”
【4月更文挑战第19天】`SQL*Plus`的`TTITLE`和`BTITLE`命令用于为数据报告添加吸引人的标题和边框。
|
9月前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的COLUMN命令:数据展示的“化妆师”
【4月更文挑战第19天】Oracle SQL*Plus的COLUMN命令是数据展示的利器,能美化和格式化输出。它可定制列标题、调整显示格式(如数字的小数位数和日期格式),添加前缀和后缀(如货币符号),以及控制列宽和是否折行,使得数据呈现更直观、专业。利用COLUMN命令,能将原始数据转化为易于理解和视觉吸引力强的展示形式。
|
9月前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的SPOOL命令:数据库世界的“录像机”
【4月更文挑战第19天】`SQL*Plus`的`SPOOL`命令是Oracle数据库中的“录像机”,能记录所有操作和输出。它在用户开始“SPOOL ON”时启动,记录SQL查询、输出、错误信息等。完成后,“SPOOL OFF”停止记录并生成日志文件,便于回顾和检查。日志文件可自定义保存位置和命名,支持多文件录制,方便分类管理。无论数据分析、SQL脚本编写还是日常维护,`SPOOL`都是强大的工具,值得一试!
|
9月前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的DESCRIBE命令:数据结构的“侦探”
【4月更文挑战第19天】`DESCRIBE`命令是Oracle SQL*Plus中的明星工具,用于快速揭示数据结构。它能显示表或视图的列名、数据类型、长度和空值限制,帮助用户理解数据库对象详情。此命令对数据库设计、查询优化和故障排除至关重要,且支持描述视图和同义词。通过有效利用DESCRIBE提供的信息,可以提升SQL查询效率,优化表结构,成为数据管理的得力助手。
|
9月前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的HELP命令:你的数据库“百事通”
【4月更文挑战第19天】`Oracle SQL*Plus` 的 `HELP` 命令是数据库查询的强大工具,犹如“百事通”。在遇到困惑时,`HELP` 可提供详细命令解释和用法示例,解答基础到高级的 SQL 和 PL/SQL 疑问。它还是“活字典”,揭示命令关联与区别,如 `SET` 和 `ALTER SESSION`。此外,`HELP` 解释数据库概念,如“事务”,并支持模糊查询。无论新手还是专家,`HELP` 都是数据库探索的得力助手。
|
9月前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的SET命令:你的数据库会话“调色板”
【4月更文挑战第19天】Oracle SQL*Plus的SET命令是数据库会话的“调色板”,用于设置输出格式、反馈信息和各种偏好。它能调整PAGESIZE和LINESIZE以优化显示,控制ECHO和FEEDBACK开关以定制反馈,以及统计命令执行时间(TIMING)和调试SQL(VERIFY)。更高级的选项如HEADING和COLSEP可改善输出的可读性。通过灵活运用SET命令,能提升工作效率和体验,是数据库管理员和开发者的必备工具。
|
9月前
|
SQL JSON 关系型数据库
【SQL编程】MySQL 5.7.28 版本使用 SQL 直接解析 JSON 字符串(判断是否是合法JSON类型+文本深度+文本长度+值类型+keys获取+值获取+不同深度数据获取)
【SQL编程】MySQL 5.7.28 版本使用 SQL 直接解析 JSON 字符串(判断是否是合法JSON类型+文本深度+文本长度+值类型+keys获取+值获取+不同深度数据获取)
153 0