文档工具
数据库
连接 PostgreSQL、MySQL、MariaDB 和 SQLite,借助补全编写 SQL,编辑 SELECT 结果,并通过审阅过的 SQL 修改表结构。
Kiln 在终端旁边提供数据库工具:连接浏览器、带补全的 SQL 控制台、可编辑的结果网格和表结构表单。在你确认应用之前,不会向数据库写入任何内容。

连接
在工作区检查器中选择数据库(数据库图标),或者从标题栏的工具菜单中选择数据库。添加连接后,即可打开表或 SQL 控制台。
Kiln 支持 PostgreSQL、MySQL、MariaDB 和 SQLite,每种数据库都使用各自的标识符引用规则和元数据查询。连接密钥保存在 Kiln 的凭据存储中。
打开数据库工具不会改变工作区根目录,也不会把代理移到其他仓库。
运行 SQL
| 操作 | 方法 |
|---|---|
| 运行光标所在的语句 | 执行或 ⌘Enter |
| 只运行选中的文本 | 选中后点击执行或按 ⌘Enter |
| 运行编辑器中的所有语句 | 全部执行或 ⌘⌥Enter |
分号归属于它前面的语句;字符串、注释或带引号的标识符中的分号不会拆分语句。选区为空或只含注释时,不会执行任何内容。
SQL 补全
输入标识符,或者输入别名再加一个点时,会出现建议。也可以用 ⌃Space、⌥Esc 或控制台的代码图标打开建议。macOS 把 ⌘Space 传给 Kiln 时,它同样可用。Kiln 不会覆盖 Spotlight。
提示 macOS 可能把
⌃Space用于切换输入法。代码图标和⌥Esc不需要改动 Mac 的快捷键就能用。
建议的内容取决于光标位置:
| 上下文 | 建议 |
|---|---|
FROM 或 JOIN 之后 |
表和 schema。插入表名时会带上 schema。 |
SELECT、WHERE、JOIN ... ON、UPDATE ... SET、INSERT 列列表 |
所引用表的列,包括在光标之后定义的别名 |
连接所用的方言还会提供常用的 SQL 关键字和函数名。插入函数时,光标会落在括号内。
用方向键或鼠标滚轮浏览,用 Tab 或 Enter 插入,按 Esc 关闭。把指针悬停在候选项上,可以查看完整名称和元数据。补全绝不会执行 SQL。
保持元数据最新
- 在当前控制台中执行的结构更改会自动刷新补全。
- 在其他地方做了更改后,请点击刷新图标。
- 元数据加载失败时,你的 SQL 保持原样,点击刷新图标重试即可。
元数据在后台加载,绝不会重新打开你已关闭的连接。
补全的盲区
补全读取的是数据库目录,与控制台会话互不相干,因此看不到 TEMP 对象、SQLite 的 ATTACH、MySQL 的 USE 或 PostgreSQL 的 search_path 变更。持久表请使用显式的 schema 名称。CTE 和派生表的列不会被推断,Kiln 会隐藏那些可能错误声称拥有这些列的表建议。关键字和函数列表覆盖常用语法,不包含所有服务器扩展。
SQL 补全绝不会把查询文本或表中的行发送给外部 AI 服务。
编辑查询结果
对于受支持的单表 SELECT,双击单元格,或按 Enter 或 F2,即可修改。选择应用更改之前,更改只保存在本地。撤销会丢弃这些更改。
较长的值请在值侧边栏中编辑。在选择其他单元格或运行其他查询之前,先用应用到单元格暂存文本,或者将其重置。复制选中的单元格时,会包含已暂存的值。
可编辑的结果
结果必须来自一张永久表,并直接使用该表的列。可以使用别名和筛选条件。结果中要包含主键的全部列,或某个非空唯一键的全部列。键不必叫 id。
以下情况保持只读,Kiln 会说明原因:
- 连接、聚合和计算列
- 同一个源列被选择了两次
- 视图和临时表
- 不包含完整行键的结果
- 生成列、二进制列和不受支持的列类型
结果编辑适用于 PostgreSQL、SQLite,以及使用事务型 InnoDB 表的 MySQL 或 MariaDB。它不能插入或删除行,这类操作请使用 SQL。
更改的应用方式
Kiln 在单独的事务中写入你的更改,依据的是行键和你看到的原始值。每个被修改的行都必须恰好匹配数据库中的一行。如果某行已被删除、被他人修改,或无法唯一确定,整个事务都会失败,本地更改会保留下来供你审阅。
写入之前,Kiln 会锁定该表,并重新核对表的标识以及列和键的定义。如果查询之后表结构有变化,请重新运行查询。应用更改不会提交你在控制台中显式执行的 BEGIN。
如果写入成功但刷新失败,Kiln 会告诉你写入已保存,并把过期的结果设为只读。它绝不会自动重新提交更改。
表、列和索引
在浏览器中右键点击表,可以选择打开表、编辑表… 和删除表…。编辑表… 会打开一个对话框,其中包含列、索引和 DDL,还可以重命名表。视图会以只读方式在同一个结构浏览器中打开。
打开表后,可以在其标签页中切换数据、列、索引和 DDL。DDL 支持刷新和复制。
列
每一列所在的行都提供编辑、重命名和删除操作。使用添加列设置名称、SQL 类型、是否可为空,以及可选的默认值。字符串默认值需要加 SQL 引号,例如 'guest';CURRENT_TIMESTAMP 则是表达式。生成列、标识列以及移除主键,都需要手动编写 DDL。
索引
索引按顺序列出键列,以及唯一性、方法和完整定义。要添加索引,选择列,设置它们的顺序和方向,还可以设为唯一索引。表达式索引、部分索引和引擎专用索引可以在 SQL 控制台中创建。主键索引和由约束拥有的索引无法在此表单中删除。
应用前审阅
每一项结构更改都按预览 SQL → 审阅 → 应用到数据库的流程进行。
- 打开表单或预览绝不会执行 DDL。
- 编辑任何字段都会清除预览及其确认。
- 删除表时,还需要输入该表的准确名称。
- 已打开的表中有待处理的行编辑时,无法更改结构。
- 操作失败时,你的输入会保留,方便修正。
PostgreSQL 在事务中应用更改。MySQL 和 MariaDB 执行单条 DDL 语句,不支持多语句回滚。对于 SQLite,属性编辑会在事务中重建表,保留值、索引、触发器和依赖视图,失败时回滚。依赖对象可能会导致无法删除列或表,Kiln 不会悄悄删除这些对象。
关闭与恢复
数据库写入仍在进行时,Kiln 不会关闭标签页、工作区或应用。写入完成后,限制随即解除,即使该标签页处于隐藏状态。
如果退出时选择保留工作,已暂存的值和未完成的文本会保存在本地。重启后,它们会出现在仅供审阅区域中,并附上原始查询和值,可以复制、导出或删除。不会重新执行或重新提交任何内容。请先重新运行查询并比较,再重新输入更改。
警告 本地恢复文件可能包含数据库中的值。如果写入过程中应用意外退出,请先确认数据库是否已经提交了这次写入,再重新应用。
Windows
数据库工具在 Windows 上的用法完全相同。与 macOS 一样,关闭窗口时会等待进行中的数据库写入完成。