前言
写 SQL 这活儿,谁写谁知道。列名记不住,INSERT 敲到一半停下来翻表结构;上周写的脚本,这周就忘了存在哪;最刺激的还是在生产库上跑 UPDATE------光标悬在回车键上那两秒,心跳是真的会变快。

这些坑,怪不了别人,一半是手生,一半是工具不顺手。KSQL Developer 是电科金仓做的数据库开发管理工具,主要连金仓数据库,V8R3、V8R6、V9 都行,顺带也能管 Oracle、MySQL、SQL Server 的连接。我用得最多的是它那个 SQL 编辑器,补全、模板、事务、脚本管理全塞在一块儿了。
下面把编辑器挨个过一遍,中间夹点我自己的用法。搞开发的、做运维的都可以看看。
先说说怎么打开、长什么样
打开编辑器的路子有三条。
最顺手的:数据库导航器里找到连接,右键,点「SQL 编辑器」,新选项卡就出来了。想接着写以前的脚本,右键连接 → SQL 编辑器 → 近期 SQL 编辑器;主菜单「SQL 编辑器」下面也有个一样的入口。第三条从零开始:主菜单「SQL 编辑器」→「新建 SQL 编辑器」。

这里有个坑,我第一次就踩了:连接下的 SQL 编辑器,跟右键表或视图弹出来的「SQL 控制台」,不是一个东西。编辑器背后挂着 .sql 文件,关了再开还在;控制台是即用即抛的,关的时候手滑选了"不保存",东西就没了。正经脚本,别往控制台里写。
界面拆开看有六块------顶部的标签页、工具栏、左侧行号、编辑区、滚动条,还有底部的连接控制栏。前面几块各家工具都长得差不多,不多说。真正值得盯的是连接控制栏:当前语句跑在哪个连接上、事务什么状态,都在那行显示。测试库和生产库同时开着的时候,执行前看一眼。能救命,真事儿。
Alt+/ 补全,用一次就回不去
写 SQL 累在哪?我自己的感受是:不在想逻辑,在记名字。表名、列名、函数名,全靠脑子存,存不下的就得翻。
KSQL Developer 的补全叫内容助理,Alt+/ 唤出,右键菜单里那个「SQL 内容助理」也是它。你按名称或者描述搜对象,它去库里找;平时敲关键字,候选列表也会自己冒出来。

再讲个小技巧,星号展开。往一张几十列的表里插数据,先写个骨架:
sql
INSERT INTO employee (*)
括号必须有------圆的方的花的都认。光标放到 (* 后面,Alt+/:
sql
INSERT INTO employee (id, emp_name, dept_id, salary, hire_date, status)
星号没了,整表的列名全出来了,不要的删掉就行。几十列的表,这么搞比翻结构手敲稳得多,至少不会漏字段。
模板:老句子就别重写了
每个团队都有几句写到吐的 SQL:分页查询的固定开头、带审计字段的 UPDATE、建表骨架。回回手敲,费时间,还容易敲出个走样的版本。

模板功能就是给这个准备的。编辑器里右键 → 「SQL 模板」,列表里是现成的;也可以在脚本里直接敲模板名,按 Tab 插入;或者进列表双击。模板本身能增删改,位置在「窗口 → 首选项 → KSQL Developer → 编辑器 → SQL 编辑器 → 模板」。
我们组的做法是把最常用的几个句子登记进去,新人来了一份模板列表甩过去,写出来的东西至少格式上长得一样。比口头说"你照着某某的写"管用多了。
格式化和注释,纯快捷键的事
选中一段 SQL,右键 → 「格式」,整段转大写或转小写。关键字大小写统一了,别人 review 的时候眼睛能舒服点。
注释两组键天天用:Ctrl+/,当前行注释加上,再按一下去掉;Ctrl+Shift+/ 管块注释,选中一段,按下加、再按去。调脚本的时候来回开关某段逻辑,比手敲 -- 利索太多了。
哦对,还有个冷门但好用的:「变换为带分隔符的列表」。选中文本,右键「格式」进去,弹个框让你设列分隔、结果分隔。我常拿它把一摞值拼成逗号分隔的串,填进 IN 条件里------手动加逗号这活儿,干过的人都懂。
常用的键凑了一张表,懒得背的存着备查:
| 想干什么 | 按什么 | 说明 |
|---|---|---|
| 跑当前这条 | Ctrl+Enter | 光标所在语句,或选中的那段 |
| 跑当前这条,结果单开一页 | Ctrl+\ | 新结果放新选项卡 |
| 整个脚本一起跑 | Alt+X | 按分号切开,一条条连着执行 |
| 唤出补全 | Alt+/ | 内容助理 |
| 行注释 | Ctrl+/ | 按一下加,再按一下去 |
| 块注释 | Ctrl+Shift+/ | 选中的一段整体加/去 |
| 存脚本 | Ctrl+S | 进当前项目的 Scripts 文件夹 |
| 导脚本进来 | Ctrl+Alt+Shift+O | 从文件系统加载 .sql 文件 |
| 脚本改名 | Ctrl+F2 | 改当前脚本名 |
| 关结果页 | Ctrl+Shift+\ | 关当前这个结果选项卡 |
执行 SQL 的三种跑法
"执行"这个动作,其实分三档。
改完一条语句想验证下,Ctrl+Enter,只跑光标所在的语句,或者你选中的那段,整个脚本不用陪着跑。
Ctrl+\ 也是执行当前语句,区别是结果会新开一个选项卡。前一次的结果留着,新的放旁边,对比着看。调 SQL 的时候特别香。
第三档是 Alt+X,整个脚本一起跑。工具按语句分隔符(默认分号)把脚本切开,一条条解析、连着执行。像这种初始化脚本,一键完事:
sql
-- init_orders.sql
CREATE TABLE orders (
id bigint PRIMARY KEY,
cust_name varchar(100) NOT NULL,
amount numeric(12,2),
status varchar(20) DEFAULT 'OPEN',
created_at timestamp DEFAULT now()
);
INSERT INTO orders (id, cust_name, amount)
VALUES (1001, '张三', 3800.00), (1002, '李四', 1250.50);
UPDATE orders SET status = 'PAID' WHERE id = 1001;
分隔符这些执行行为,在「窗口 → 首选项 → KSQL Developer → SQL 编辑器 → SQL 处理」里能改。
事务:生产库上,别用自动提交
这节多说两句。
KSQL Developer 有两种提交模式。自动提交,语句一跑完立刻写库,泼出去的水;手动提交,改动先攒着,点工具栏「提交」才落地,点「回滚」就当无事发生。

两个模式在工具栏上切。切到自动,「提交」「回滚」俩按钮就灰了;切回手动,它们才活过来。
本地开发库,自动提交挺好,省心。生产环境呢?用手动。工具自己也是这么想的------生产类型的连接,默认就是手动提交。拿一条 UPDATE 举例:
sql
UPDATE employee SET salary = salary * 1.1 WHERE dept_id = 3;
自动提交下,回车即生效。等你发现 WHERE 少写了个条件,就只能翻备份了。手动提交留了扇后悔门:先看影响行数对不对,不对,回滚,就当没来过。
两种模式的差别,列个表:
| 自动提交 | 手动提交 | |
|---|---|---|
| 啥时候生效 | 语句一跑完就写库 | 点了「提交」才写 |
| 手滑了咋办 | 基本没救 | 点「回滚」,一笔勾销 |
| 提交/回滚按钮 | 灰的,按不了 | 能用 |
| 适合哪 | 本地开发、测试库 | 生产连接(默认就它) |
顺带讲两个配套的窗口,都在工具栏「事务日志」按钮那一带。
事务日志,记的是这个会话里所有事务性操作,INSERT、DELETE、UPDATE 之类。看颜色就行:绿的提交成功,橙的回滚了,红的出错,没色的是还在跑或者待定。勾上「显示之前的事务记录」能往前翻;勾上「显示所有查询」,连查询类的语句也一起显示。
另一个叫待处理事务,入口在「事务日志」按钮旁边的小箭头。没提交的事务是占锁的,堆多了库就堵,这窗口就是盯着它们用的。上面那张表列谁家有未提交事务,下面的表显示选中连接的明细,而且能直接在这儿点「提交」或「回滚」。操作成功按钮会变灰,失败给报错。
结果面板和动态参数
一条查询可能吐出多个结果集,编辑器拿选项卡分开装,名字叫 Results A (B):A 是第几条查询,B 是这条查询的第几个结果集。选项卡能拖着排顺序,右键「绑定标签页」可以钉住。钉住的页堆在左边,后面再执行也不会盖掉它,想关得先解绑。调数据的时候,把基准结果钉一个,新结果随便跑,两边不打架。

关选项卡:Ctrl+Shift+\ 关当前的;右键菜单里还有「关闭除此之外的所有结果选项卡」「关闭所有结果选项卡」,攒了一堆的时候批量清。
有时候只是想知道一条查询会出多少行------比如跑大查询前心里没底------不用真执行。选中语句,菜单栏「SQL 编辑器」→「选择行计数」,只数行数,不拉数据。
动态参数也好用。SQL 里写 :参数名,执行时弹框让你填值:
sql
SELECT e.emp_name, d.dept_name, e.salary
FROM employee e
JOIN department d ON d.id = e.dept_id
WHERE e.dept_id = :dept_id
AND e.hire_date >= :start_date;
一段 SQL 换几个参数反复跑,不用来回改字面量了。匿名参数 ? 也行,得先去「首选项 → 编辑器 → SQL 编辑器 → SQL 处理」里把它启用。
脚本管理,顺便聊聊查询管理器
先说存。Ctrl+S,存进当前项目的 Scripts 文件夹,项目视图里能看到。想存到文件系统随便哪个位置,走主菜单「SQL 编辑器 → 保存 SQL 脚本」。没保存的修改,标题上会挂个星号,编辑区左边还有彩色高亮------哪几行没落盘,扫一眼就知道。
往回导按 Ctrl+Alt+Shift+O,或者「SQL 编辑器 → 导入 SQL 脚本」。改名 Ctrl+F2。要是把脚本改得一团糟想从头来,右键 → 「文件 → 还原」,直接回到磁盘上那份。默认目录是工作区里项目的 Scripts 文件夹,项目视图点「配置」能换。
前面提过的 SQL 控制台再啰嗦一句:看表数据时"在 SQL 控制台中读取数据"、从 DDL 编辑器开过程或函数的源码,走的就是它。它不挂文件,适合看过就扔的临时查询。你懂我的意思,正经东西别写那儿。
查询管理器在「事务日志」按钮旁的下拉里,本会话跑过的查询全在:几点执行的、耗时多少、影响几行、结果如何。吵着"我这条到底跑没跑"的时候,翻它,别翻记忆。工具栏「过滤」能按对象类型、查询类型筛,每页条数能调,日志还能落到文件里存着。
最后聊两句
要我只挑一条说,那就是:生产连接,手动提交,事务日志常开。回滚按钮就是给手滑的人留的,包括我。
模板这东西,攒起来是团队的。规范写在文档里没人看,长在使用习惯里才真的管用。
快捷键不用全背,Ctrl+Enter 执行、Alt+/ 补全、Ctrl+/ 注释,这三个用熟了,剩下的用到再查上面的表。
编辑器说到底就是个写语句的地方。可补全省下的全是记性,事务那一下回滚,兜住的说不定就是你的年终奖------夸张吗?不夸张。用顺了,每天少生点闲气,这总不假。