Skip to content

SQL 编辑器与事务 ​

SQL 编辑器用于编写、保存、解释和执行语句。执行范围、当前数据库与事务模式会直接决定影响面;在生产环境运行任何写入前,应先确认连接名称、Schema 和选中 SQL。

数据库与查询工作区

新建、保存与整理查询 ​

从数据库工作区新建查询,选择当前数据库或 Schema 后输入 SQL。查询可以保存、重命名并重新打开;开启自动保存时,编辑内容会按设置持久化,但自动保存不等于执行,也不能替代版本控制或业务备份。

编辑器提供智能补全:函数签名提示、IN 列表与 INSERT 子句提示、通配符补全,以及跨数据库/跨 Schema 的限定名补全(惰性加载)。FROM 后按当前库提示可用表,选中数据库后可继续提示限定符元数据,作用域彼此隔离。补全建议来自当前连接元数据,不代表目标对象一定可访问。

使用格式化统一缩进和关键字样式,或使用压缩减少空白。格式化设置支持保留关键字大小写、调整缩进,并提供实时预览;模板掩码可避免示例代码/占位符被误格式化。格式化可能改变排版,不应被视为语义校验。复杂迁移脚本应先保留原始副本,并在测试库验证。

选择正确的执行范围 ​

编辑器支持执行选中 SQL、执行光标所在语句和执行全部内容。存在选区时优先确认选中的起止位置;没有选区时,将光标放入目标语句再执行。执行全部适合明确审阅过的多语句脚本;脚本中可使用 @set 变量在语句间传递值。执行全部不适合混有示例、临时 DELETE 或多个环境语句的草稿。

结果区会显示查询结果、受影响行数或错误。结果页签支持独立切换和稳定的视口滚动,长结果或多语句执行时不会把滚动条推离可视区域。设置中的最大行数用于限制返回规模,避免一次把超大结果集载入内存;需要完整数据时使用导出能力,而不是无限提高预览上限。

EXPLAIN 与性能分析 ​

对查询语句使用 EXPLAIN 查看执行计划,理解索引、连接顺序、扫描方式和预估成本。EXPLAIN 只适用于驱动支持的查询;不同数据库的语法和字段含义不同。某些带 ANALYZE 的变体会真实执行查询,应在确认副作用和负载后使用。

优化时先保存原 SQL 与基准,再比较执行计划和实际耗时。不要仅凭成本数字删除索引或重写生产查询,数据分布、缓存和并发都会影响结果。

自动事务与手动事务 ​

自动事务模式下,每次语句按驱动规则提交。需要把多条修改作为一个原子操作时切换到手动事务,执行后明确选择提交或回滚。手动事务期间,未提交修改可能持有锁并阻塞其他会话。

切换数据库、切换 Schema 或关闭编辑器前,Navop 会要求结束手动事务。确认“提交”会让修改永久生效,“回滚”会撤销当前事务中尚未提交的修改。连接中断后事务状态取决于服务器和驱动,不要假设所有修改都已自动回滚,应重新查询确认。

对象详情与 DDL ​

鼠标悬停弹详情默认关闭(可在设置中开启,开启后须停驻 600ms 才显示)。右键菜单「查看对象详情」打开独立弹窗,内容可选中复制;右键「复制 DDL」一键拷贝选中或光标处表的 CREATE TABLE/VIEW 语句,选中表名后右键也能解析。详情来自当前连接元数据,与服务器端真实定义可能存在延迟。

错误处理与安全习惯 ​

遇到语法、权限、约束或超时错误时,先阅读服务器返回信息并缩小到单条语句。执行错误会映射到准确源码位置,便于在多语句脚本中定位。不要在未知事务状态下反复点击执行。写入前可以先把 WHERE 条件改成 SELECT 验证目标行,再恢复 UPDATE 或 DELETE;高风险 DDL 和批量修改应使用备份、事务或变更窗口。

保存的查询可能包含表名、业务字段甚至敏感字面量。共享 SQL 文件或提交问题报告前删除密码、Token、个人信息和真实数据,并保留能够复现结构问题的最小示例。

一次安全查询的操作顺序 ​

  1. 从正确的数据库连接打开 SQL 编辑器。
  2. 查看编辑器顶部的数据库和 Schema 上下文。
  3. 先写 SELECT 或 EXPLAIN,不要从草稿中的 UPDATE、DELETE 开始。
  4. 将光标放到目标语句,或选中明确的 SQL 范围。
  5. 执行后检查结果集、返回行数、耗时和错误信息。
  6. 确认结果符合预期后,再考虑修改语句或进入手动事务。

执行范围对照 ​

操作适合场景主要风险
执行选中内容审阅过的单条或小段 SQL选区可能少选或多选
执行光标所在语句多条语句逐条验证光标位置不正确时执行其他语句
执行全部内容已审阅的迁移或脚本可能一次执行临时 DELETE 或错误环境语句

编辑器有选区时,不要凭肉眼估计起止范围。执行前先折叠或格式化 SQL,让语句边界更容易确认。

修改语句的预演方式 ​

把目标条件先改写成查询,确认影响范围后再恢复修改语句:

sql
SELECT id, status
FROM orders
WHERE status = 'pending';

确认结果后,再根据当前数据库的事务能力执行 UPDATE。如果没有可靠主键或明确的 WHERE 条件,不要直接提交批量修改。

手动事务的结束检查 ​

手动事务开始后,记录本次事务涉及的表和目标范围。提交或回滚前检查:

  • 当前连接没有被切换到其他数据库。
  • 结果集和受影响行数符合预期。
  • 没有其他终端或任务同时修改同一批数据。
  • 提交后可以重新查询验证,回滚后知道哪些锁会被释放。

连接中断、关闭标签或切换 Schema 后,不要假设服务器一定已经回滚;重新连接并查询实际状态。

Navop · AI 时代的开发和运维工作台