Kiln 文档
下载

文档工具

数据库

连接 PostgreSQL、MySQL、MariaDB 和 SQLite,借助补全编写 SQL,编辑 SELECT 结果,并通过审阅过的 SQL 修改表结构。

Kiln 在终端旁边提供数据库工具:连接浏览器、带补全的 SQL 控制台、可编辑的结果网格和表结构表单。在你确认应用之前,不会向数据库写入任何内容。

运行演示工作区的 Kiln
运行演示工作区的 Kiln

连接

在工作区检查器中选择数据库(数据库图标),或者从标题栏的工具菜单中选择数据库。添加连接后,即可打开表或 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 一样,关闭窗口时会等待进行中的数据库写入完成。