
前言写 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 内容助理」也是它。你按名称或者描述搜对象它去库里找平时敲关键字候选列表也会自己冒出来。再讲个小技巧星号展开。往一张几十列的表里插数据先写个骨架INSERTINTOemployee(*)括号必须有——圆的方的花的都认。光标放到(*后面Alt/INSERTINTOemployee(id,emp_name,dept_id,salary,hire_date,status)星号没了整表的列名全出来了不要的删掉就行。几十列的表这么搞比翻结构手敲稳得多至少不会漏字段。模板老句子就别重写了每个团队都有几句写到吐的 SQL分页查询的固定开头、带审计字段的 UPDATE、建表骨架。回回手敲费时间还容易敲出个走样的版本。模板功能就是给这个准备的。编辑器里右键 → 「SQL 模板」列表里是现成的也可以在脚本里直接敲模板名按 Tab 插入或者进列表双击。模板本身能增删改位置在「窗口 → 首选项 → KSQL Developer → 编辑器 → SQL 编辑器 → 模板」。我们组的做法是把最常用的几个句子登记进去新人来了一份模板列表甩过去写出来的东西至少格式上长得一样。比口头说你照着某某的写管用多了。格式化和注释纯快捷键的事选中一段 SQL右键 → 「格式」整段转大写或转小写。关键字大小写统一了别人 review 的时候眼睛能舒服点。注释两组键天天用Ctrl/当前行注释加上再按一下去掉CtrlShift/ 管块注释选中一段按下加、再按去。调脚本的时候来回开关某段逻辑比手敲--利索太多了。哦对还有个冷门但好用的「变换为带分隔符的列表」。选中文本右键「格式」进去弹个框让你设列分隔、结果分隔。我常拿它把一摞值拼成逗号分隔的串填进 IN 条件里——手动加逗号这活儿干过的人都懂。常用的键凑了一张表懒得背的存着备查想干什么按什么说明跑当前这条CtrlEnter光标所在语句或选中的那段跑当前这条结果单开一页Ctrl\新结果放新选项卡整个脚本一起跑AltX按分号切开一条条连着执行唤出补全Alt/内容助理行注释Ctrl/按一下加再按一下去块注释CtrlShift/选中的一段整体加/去存脚本CtrlS进当前项目的 Scripts 文件夹导脚本进来CtrlAltShiftO从文件系统加载 .sql 文件脚本改名CtrlF2改当前脚本名关结果页CtrlShift\关当前这个结果选项卡执行 SQL 的三种跑法执行这个动作其实分三档。改完一条语句想验证下CtrlEnter只跑光标所在的语句或者你选中的那段整个脚本不用陪着跑。Ctrl\ 也是执行当前语句区别是结果会新开一个选项卡。前一次的结果留着新的放旁边对比着看。调 SQL 的时候特别香。第三档是 AltX整个脚本一起跑。工具按语句分隔符默认分号把脚本切开一条条解析、连着执行。像这种初始化脚本一键完事-- init_orders.sqlCREATETABLEorders(idbigintPRIMARYKEY,cust_namevarchar(100)NOTNULL,amountnumeric(12,2),statusvarchar(20)DEFAULTOPEN,created_attimestampDEFAULTnow());INSERTINTOorders(id,cust_name,amount)VALUES(1001,张三,3800.00),(1002,李四,1250.50);UPDATEordersSETstatusPAIDWHEREid1001;分隔符这些执行行为在「窗口 → 首选项 → KSQL Developer → SQL 编辑器 → SQL 处理」里能改。事务生产库上别用自动提交这节多说两句。KSQL Developer 有两种提交模式。自动提交语句一跑完立刻写库泼出去的水手动提交改动先攒着点工具栏「提交」才落地点「回滚」就当无事发生。两个模式在工具栏上切。切到自动「提交」「回滚」俩按钮就灰了切回手动它们才活过来。本地开发库自动提交挺好省心。生产环境呢用手动。工具自己也是这么想的——生产类型的连接默认就是手动提交。拿一条 UPDATE 举例UPDATEemployeeSETsalarysalary*1.1WHEREdept_id3;自动提交下回车即生效。等你发现 WHERE 少写了个条件就只能翻备份了。手动提交留了扇后悔门先看影响行数对不对不对回滚就当没来过。两种模式的差别列个表自动提交手动提交啥时候生效语句一跑完就写库点了「提交」才写手滑了咋办基本没救点「回滚」一笔勾销提交/回滚按钮灰的按不了能用适合哪本地开发、测试库生产连接默认就它顺带讲两个配套的窗口都在工具栏「事务日志」按钮那一带。事务日志记的是这个会话里所有事务性操作INSERT、DELETE、UPDATE 之类。看颜色就行绿的提交成功橙的回滚了红的出错没色的是还在跑或者待定。勾上「显示之前的事务记录」能往前翻勾上「显示所有查询」连查询类的语句也一起显示。另一个叫待处理事务入口在「事务日志」按钮旁边的小箭头。没提交的事务是占锁的堆多了库就堵这窗口就是盯着它们用的。上面那张表列谁家有未提交事务下面的表显示选中连接的明细而且能直接在这儿点「提交」或「回滚」。操作成功按钮会变灰失败给报错。结果面板和动态参数一条查询可能吐出多个结果集编辑器拿选项卡分开装名字叫 Results A (B)A 是第几条查询B 是这条查询的第几个结果集。选项卡能拖着排顺序右键「绑定标签页」可以钉住。钉住的页堆在左边后面再执行也不会盖掉它想关得先解绑。调数据的时候把基准结果钉一个新结果随便跑两边不打架。关选项卡CtrlShift\ 关当前的右键菜单里还有「关闭除此之外的所有结果选项卡」「关闭所有结果选项卡」攒了一堆的时候批量清。有时候只是想知道一条查询会出多少行——比如跑大查询前心里没底——不用真执行。选中语句菜单栏「SQL 编辑器」→「选择行计数」只数行数不拉数据。动态参数也好用。SQL 里写:参数名执行时弹框让你填值SELECTe.emp_name,d.dept_name,e.salaryFROMemployee eJOINdepartment dONd.ide.dept_idWHEREe.dept_id:dept_idANDe.hire_date:start_date;一段 SQL 换几个参数反复跑不用来回改字面量了。匿名参数?也行得先去「首选项 → 编辑器 → SQL 编辑器 → SQL 处理」里把它启用。脚本管理顺便聊聊查询管理器先说存。CtrlS存进当前项目的 Scripts 文件夹项目视图里能看到。想存到文件系统随便哪个位置走主菜单「SQL 编辑器 → 保存 SQL 脚本」。没保存的修改标题上会挂个星号编辑区左边还有彩色高亮——哪几行没落盘扫一眼就知道。往回导按 CtrlAltShiftO或者「SQL 编辑器 → 导入 SQL 脚本」。改名 CtrlF2。要是把脚本改得一团糟想从头来右键 → 「文件 → 还原」直接回到磁盘上那份。默认目录是工作区里项目的 Scripts 文件夹项目视图点「配置」能换。前面提过的 SQL 控制台再啰嗦一句看表数据时在 SQL 控制台中读取数据、从 DDL 编辑器开过程或函数的源码走的就是它。它不挂文件适合看过就扔的临时查询。你懂我的意思正经东西别写那儿。查询管理器在「事务日志」按钮旁的下拉里本会话跑过的查询全在几点执行的、耗时多少、影响几行、结果如何。吵着我这条到底跑没跑的时候翻它别翻记忆。工具栏「过滤」能按对象类型、查询类型筛每页条数能调日志还能落到文件里存着。最后聊两句要我只挑一条说那就是生产连接手动提交事务日志常开。回滚按钮就是给手滑的人留的包括我。模板这东西攒起来是团队的。规范写在文档里没人看长在使用习惯里才真的管用。快捷键不用全背CtrlEnter 执行、Alt/ 补全、Ctrl/ 注释这三个用熟了剩下的用到再查上面的表。编辑器说到底就是个写语句的地方。可补全省下的全是记性事务那一下回滚兜住的说不定就是你的年终奖——夸张吗不夸张。用顺了每天少生点闲气这总不假。