SQL 编辑器
每个查询 Tab 都有自己的编辑器缓冲区。编辑器通过 tree-sitter 高亮真正的 SQL,缩进为 2 个空格,并显示行号。
Tab
| 控件 | 作用 |
|---|---|
+ | 追加一个新的查询 Tab 并聚焦它 |
| 单击某个 Tab | 切换到该 Tab |
× | 关闭一个 Tab —— 只剩一个 Tab 时该按钮隐藏,因此最后一个 Tab 无法关闭 |
| 重命名(工具栏) | 打开对话框重命名当前 Tab;名称为空时回退为 查询 N |
Tab 只存在于内存中。其中的 SQL 不会被保存,因此退出后会丢失所有 Tab——只有一点例外:下次启动时会得到一个全新的 Tab。
运行 SQL
编辑器获得焦点时按 ⌘↵(Cmd+Enter),或使用 运行 按钮。
查询运行期间再次按下运行不会有任何效果:既不能取消,也没有超时。长查询会一直运行到 DuckDB 完成为止,其他数据库操作都排在它后面。如果界面看起来卡住了,原因就在这里——查看状态栏,或者退出并重启。
语句如何被处理取决于它的起始关键字。SELECT、WITH、SHOW、DESCRIBE、EXPLAIN、PRAGMA、SUMMARIZE、VALUES、FROM、TABLE、PIVOT 和 CALL 会产生结果集。其他语句(DDL、DML)不会给出结果表格,而是报告 Done · N rows affected · took …。判断时会跳过开头的 -- 注释;块注释则不会跳过。
错误
执行失败的语句会弹出一个标题为 查询失败 的提示框,其中原样显示 DuckDB 的报错信息。这条信息来自引擎,无论界面语言是什么,它始终是英文。结果表格中不会写入任何内容,但这次尝试仍会带着失败标记记录到查询历史中。
格式化
格式化 会用 sqlformat 处理缓冲区内容:缩进 2 个空格、关键字转为大写,然后替换整个缓冲区。缓冲区为空时不做任何操作。
EXPLAIN
EXPLAIN 会执行 EXPLAIN <your SQL>,以纯等宽文本展示查询计划并附上耗时,同时把结果面板切回结果 Tab。
自动补全
补全菜单能感知 catalog。候选项按以下顺序排列:
- schema 中的表和列(最多 35 项)
- DuckDB 函数名
- SQL 关键字
最多提供 50 个候选项。匹配方式是针对光标左侧紧邻标识符的大小写不敏感的前缀匹配,因此 sel 会补全为 SELECT,而 elect 补全不出任何结果。函数会插入名称和一个左括号;非普通标识符会以双引号形式插入。
关键字和函数列表是经过挑选的子集——并非每个 DuckDB 函数都会出现。
键盘快捷键
DuckLocal 自己定义了少数几个快捷键,其余都来自编辑器和表格组件,行为与任何 macOS 文本框中一致:
| 快捷键 | 操作 |
|---|---|
| ⌘↵ | 运行查询 |
| ⌘S | 在 dashboard 的源码视图中保存 |
| ⌘+ / ⌘− / ⌘0 | 放大 / 缩小 / 复原界面大小——见界面大小 |
| ⌘B | 收起或展开侧栏 |
| ⌘F / ⇧⌘F | 在编辑器中查找 / 替换 |
| ⌘Z / ⇧⌘Z | 撤销 / 重做 |
| ⌘A | 全选 |
| ⌘C / ⌘X / ⌘V | 复制 / 剪切 / 粘贴 |
| ⌥⌘↑ / ⌥⌘↓ | 在上方 / 下方添加光标 |
| ⌘← / ⌘→ / ⌥← / ⌥→ | 按行 / 按词移动 |
| ⌘↑ / ⌘↓ | 移动到文档开头 / 结尾 |
| ⌘⌫ / ⌥⌫ | 删除到行首 / 删除前一个词 |
没有菜单栏,也没有命令面板。其他所有操作都是按钮:编辑器上方的工具栏、Tab 栏、侧栏和标题栏中都有。
