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

新建、保存与整理查询
从数据库工作区新建查询,选择当前数据库或 Schema 后输入 SQL。查询可以保存、重命名并重新打开;开启自动保存时,编辑内容会按设置持久化,但自动保存不等于执行,也不能替代版本控制或业务备份。
使用格式化统一缩进和关键字样式,或使用压缩减少空白。格式化可能改变排版,不应被视为语义校验。复杂迁移脚本应先保留原始副本,并在测试库验证。
选择正确的执行范围
编辑器支持执行选中 SQL、执行光标所在语句和执行全部内容。存在选区时优先确认选中的起止位置;没有选区时,将光标放入目标语句再执行。执行全部适合明确审阅过的脚本,不适合混有示例、临时 DELETE 或多个环境语句的草稿。
结果区会显示查询结果、受影响行数或错误。设置中的最大行数用于限制返回规模,避免一次把超大结果集载入内存;需要完整数据时使用导出能力,而不是无限提高预览上限。
EXPLAIN 与性能分析
对查询语句使用 EXPLAIN 查看执行计划,理解索引、连接顺序、扫描方式和预估成本。EXPLAIN 只适用于驱动支持的查询;不同数据库的语法和字段含义不同。某些带 ANALYZE 的变体会真实执行查询,应在确认副作用和负载后使用。
优化时先保存原 SQL 与基准,再比较执行计划和实际耗时。不要仅凭成本数字删除索引或重写生产查询,数据分布、缓存和并发都会影响结果。
自动事务与手动事务
自动事务模式下,每次语句按驱动规则提交。需要把多条修改作为一个原子操作时切换到手动事务,执行后明确选择提交或回滚。手动事务期间,未提交修改可能持有锁并阻塞其他会话。
切换数据库、切换 Schema 或关闭编辑器前,Navop 会要求结束手动事务。确认“提交”会让修改永久生效,“回滚”会撤销当前事务中尚未提交的修改。连接中断后事务状态取决于服务器和驱动,不要假设所有修改都已自动回滚,应重新查询确认。
错误处理与安全习惯
遇到语法、权限、约束或超时错误时,先阅读服务器返回信息并缩小到单条语句。不要在未知事务状态下反复点击执行。写入前可以先把 WHERE 条件改成 SELECT 验证目标行,再恢复 UPDATE 或 DELETE;高风险 DDL 和批量修改应使用备份、事务或变更窗口。
保存的查询可能包含表名、业务字段甚至敏感字面量。共享 SQL 文件或提交问题报告前删除密码、Token、个人信息和真实数据,并保留能够复现结构问题的最小示例。
一次安全查询的操作顺序
- 从正确的数据库连接打开 SQL 编辑器。
- 查看编辑器顶部的数据库和 Schema 上下文。
- 先写
SELECT或EXPLAIN,不要从草稿中的UPDATE、DELETE开始。 - 将光标放到目标语句,或选中明确的 SQL 范围。
- 执行后检查结果集、返回行数、耗时和错误信息。
- 确认结果符合预期后,再考虑修改语句或进入手动事务。
执行范围对照
| 操作 | 适合场景 | 主要风险 |
|---|---|---|
| 执行选中内容 | 审阅过的单条或小段 SQL | 选区可能少选或多选 |
| 执行光标所在语句 | 多条语句逐条验证 | 光标位置不正确时执行其他语句 |
| 执行全部内容 | 已审阅的迁移或脚本 | 可能一次执行临时 DELETE 或错误环境语句 |
编辑器有选区时,不要凭肉眼估计起止范围。执行前先折叠或格式化 SQL,让语句边界更容易确认。
修改语句的预演方式
把目标条件先改写成查询,确认影响范围后再恢复修改语句:
SELECT id, status
FROM orders
WHERE status = 'pending';确认结果后,再根据当前数据库的事务能力执行 UPDATE。如果没有可靠主键或明确的 WHERE 条件,不要直接提交批量修改。
手动事务的结束检查
手动事务开始后,记录本次事务涉及的表和目标范围。提交或回滚前检查:
- 当前连接没有被切换到其他数据库。
- 结果集和受影响行数符合预期。
- 没有其他终端或任务同时修改同一批数据。
- 提交后可以重新查询验证,回滚后知道哪些锁会被释放。
连接中断、关闭标签或切换 Schema 后,不要假设服务器一定已经回滚;重新连接并查询实际状态。