跳转到内容

DB

在 Blyck 里连接 DB(数据库),查看表的列表,编写并执行 SQL(发给数据库的命令语句),以表格形式查看结果、直接修改,并导出成文件。五种 DB 都用同一个界面、同一种方法操作。

分类功能费用
基本连接、已保存的连接、架构树、SQL 编辑器、执行·停止、结果网格、单元格编辑、新增行、导出、事务、修改表结构、历史、代码片段、切换连接免费
AISQL 编辑器 AI(Ctrl+I)、网格单元格 AIPro

PostgreSQL 连接窗口 — 服务器地址、账户、SSL、保存名称

  1. Host · Port · Database · User — 要连接的服务器和账户(端口默认 5432,数据库默认 postgres)
  2. 密码 — 只有填写“另存为”时才加密保存在这台电脑上,之后无需输入即可连接
  3. SSL — “禁用(默认)” / “启用 + 验证证书(生产环境推荐)” / “启用 + 允许自签名(仅开发/内部 — 有中间人攻击风险)”
DB命令面板名称快捷键默认端口必填项
SQLite打开 SQLite 数据库…Ctrl+Alt+D无(文件)文件
OracleOracle 连接…Ctrl+Alt+O1521Host · Service · User
PostgreSQLPostgreSQL 连接…Ctrl+Alt+P5432Host · User
MSSQLMSSQL 连接…Ctrl+Alt+M1433Server · User
MySQLMySQL 连接…Ctrl+Alt+Y3306Host · User

打开位置:新建标签菜单里的 DB 图标格(SQLite · Oracle · PostgreSQL · MSSQL · MySQL)、上面的快捷键(Mac 上是 Cmd+Option+字母)、命令面板,或 已保存的连接 列表。DB 总是在当前窗格里以新的子标签打开。

  • Enter = 连接,Esc = 取消。Port 留空时使用默认端口。
  • 填写 另存为 后再连接,就会加入 已保存的连接,密码也会用操作系统加密一起保存。下次点一下即可直接连接,不再弹出窗口。
  • MariaDB 请用 MySQL 连接… 连接。
DB注意事项
SQLite只能打开已有的文件(不能新建 DB)。打开过一次的文件会自动加入已保存的连接
Oracle先用无需安装的 Thin 方式连接,失败时自动改用电脑上 64 位 Oracle Instant Client 的 Thick 方式重试。Service 栏填写服务名或 SID(没有 TNS 名称栏)。树中只显示当前连接账户的对象
PostgreSQL树中只显示 Schema 栏里的那一个架构(默认 public)。SSL 可从三种中选择
MySQL必须填写 Database 才能看到架构树
MSSQL只支持 SQL Server 身份验证(用户名·密码)(不支持 Windows 集成身份验证)。单次查询超过 60 秒会失败。命名实例写成 host\SQLEXPRESS

模式树与 SQL 编辑器·结果表

  1. 模式树 — 点击顶部的数据库名(shop · PostgreSQL ▾)可切换到其他数据库(之前的不会关闭,留在后面)。展开表后,里面有“列”·“索引”·“触发器”分组,注释以浅色显示。搜索框旁可选搜索范围“名称”|“列”|“注释”
  2. SQL 编辑器 — 顶部一行:“运行”·当前查询 ▾(此窗格的查询列表)·“自动提交”·AI,最右边是执行用的数据库(shop · PostgreSQL ▾)。从树打开的表会重复使用同一个查询,不会越积越多
  3. 结果栏“10 行 · 0.01 秒”和“在结果中查找”— 下方是结果表格

连接后,这个 DB 的表·视图·序列·包·函数·存储过程·作业·调度程序·数据库链接会按类型分组显示。索引·触发器在所属的表里,该 DB 没有的类型不显示分组。

分组单击双击右键
表展开表内(列 · 索引 · 触发器)在 SQL 编辑器中直接执行前 200 行查询(预览查询 — 打开下一个表时重复使用它)修改表结构菜单
视图展开列查询前 200 行—
表内的 索引 · 触发器、包(Oracle) · 函数 · 存储过程只有包会展开其中的函数·存储过程在 SQL 编辑器中显示定义(CREATE 语句)(不执行)索引为 DROP INDEX…
  • 点击顶部左侧的 数据库名 ▾(例如 shop · PostgreSQL),会列出已打开的数据库和保存的数据库连接。选中后同一面板切换到该数据库的树,之前的数据库不会关闭,留在后面(在列表中再次选择即可回来,用该行的 × 关闭)。
  • 顶部的 新建查询 打开空白 SQL 编辑器,刷新图标重新读取列表,全部折叠图标回到初始状态(只展开表分组)。
  • 在搜索框右侧的 [名称 | 列 | 注释] 中选择搜索范围(可同时打开多个)。只有表内(列·索引·触发器)匹配时,该表会自动展开。
  • 把树中的名称拖到 SQL 编辑器里,名称会插入到放下的位置。
  • 主键(PK)列带有钥匙图标和 PK 标记,表·列的注释以浅色显示在名称旁。Oracle 中失效(INVALID)的对象显示红色 ⚠,点击顶部的 ⚠ 数字 只看失效的。

表右键 — Excel · CSV 与修改表结构

Section titled “表右键 — Excel · CSV 与修改表结构”

在表上点右键(或点行末的 ⋯),最上面有 Excel · CSV 一组。Excel(.xlsx)和 CSV 都可以。视图只显示 下载数据…。

菜单作用
下载模板…与该表对应的空模板。第 1 行列名 · 第 2 行说明(类型 · 必填 · 键)· 第 3 行示例(一行实际值或生成的示例)。从第 4 行开始填写
下载数据…把整个表存成文件。表头选 与模板相同,改完可以直接再上传
上传数据…选好填好的文件后 写入前先预览 — 要跳过的说明·示例行、出错的行和原因(不是数字 · 必填为空 · 键已存在等)。写入方式:作为新行添加 · 有相同键则更新(有主键的表)· 清空表后重新写入。一次写入,数据库报错就 全部撤销
  • 上传无法在变更记录(ChangeSet)中撤销。大改之前,请先用 下载数据… 备份一份。

在表上点右键 → 添加列… · 修改列… · 重命名表… · 添加索引… · DROP TABLE…。填好输入窗口后会帮你生成 SQL。它不会直接执行,而是放进编辑器,请确认后自己执行。DROP 必须把名称一字不差地输入才会生成 SQL。SQLite 不支持 修改列…。

位置按钮作用
标题行▶ 运行 · ■运行(Ctrl+Enter) / 停止运行(■ 只在运行时显示)
当前查询名 ▾此面板的查询列表(按最近使用排序)· 最下方 新建查询。双击可重命名
● 自动提交点击切换为 ● 手动提交(事务)
提交 · 回滚只在手动提交时显示
AI修改 · 解释此 SQL(Ctrl+I)— 点一下直接弹出输入框 (Pro)
历史 · 片段图标执行过的 SQL / 命名保存的 SQL
格式化 · 导出图标整理 SQL(Ctrl+Shift+F) / CSV·Excel·剪贴板。面板较窄时四个图标收进 ⋯
最右边的数据库按钮(名称 · DB 类型 ▾)更换执行的数据库
  • 从树打开的表会以 预览查询(名称为斜体)打开,打开别的表时重复使用这个查询,浏览再多的表查询也不会越积越多。修改 SQL 后会作为普通查询保留。
  1. 编写 SQL。这个 DB 的表·视图名称会以强调色显示,在 FROM 后会自动补全表名,在 表名. 后会自动补全列名。
  2. 按 Ctrl+Enter 或 ▶ 运行。
    • 选中了文字就只执行选中的部分,否则执行整个编辑区。
    • 默认一次执行一条语句。有多条语句时,请只选中要执行的那条再执行。
  3. 查询会打开结果表,结果栏显示 N 行 · X 秒(例:5,000 行 · 0.44 秒),修改会显示 完成 — 变更 N 行。
  • 耗时很长的查询可以用 ■(停止)停下。界面会立即解除等待,同时也向服务器请求中止(SQLite 只解除界面等待)。
  • 在 SQL 编辑器里直接执行时,不弹确认窗口,立即执行。

结果表格 — 编辑单元格·查找·排序·导出

  1. 双击单元格修改后,编辑区末尾会加上 UPDATE 语句。不会自动执行,确认后按 Ctrl+Enter
  2. 结果栏中的 + 行·复制行(只查询一张表时)和“在结果中查找”— 在已取回的行中按文字筛选。“保存”·“取消”只在有新行时显示
  3. 点击列头即可排序 ▲/▼(仅在已取回的行中)。只查询一张表时,列旁会以浅色显示类型
  4. 导出图标 — CSV 文件 (.csv)·Excel 文件 (.xls)·剪贴板 (TSV — 粘贴)
想做的事方法
排序点击表头(▲/▼)。只在已取回的行里排序
筛选结果栏中的 在结果中查找 栏
取回更多一次最多 5,000 行。还有更多时,用结果栏的 下 5,000 行 ▾
复制拖动选中单元格后按 Ctrl+C(可直接粘贴到 Excel)
竖向查看一行点击最左侧的 # 列
查看完整的长值Shift+双击
用选中的行生成 INSERT/UPDATE 语句Ctrl+G(DML 生成器)
  1. 双击单元格,改好值后按 Enter。
  2. 编辑区末尾会追加 UPDATE … WHERE 主键 = 值;,并处于选中状态。
  3. 确认后用 Ctrl+Enter 执行。不会自动执行。

只有查询单个表、并且结果中包含主键时才能修改(JOIN·GROUP BY·UNION·DISTINCT·视图都不行)。

新增行 · 复制行 · 粘贴 Excel → INSERT

Section titled “新增行 · 复制行 · 粘贴 Excel → INSERT”

只查询单个表的结果,结果栏中会出现 + 行 · 复制行 图标,有待保存行时会出现 保存 · 取消。

  1. 用 + 行 或 复制行 生成待保存的行,然后填写各栏(空白为 NULL)。
  2. 要从 Excel 粘贴,先点待保存行的 # 列把它设为起点,再按 Ctrl+V。行不够时会自动增加。
  3. 点 保存。这时会自动关闭自动提交,请查看结果后选择 提交 或 回滚。失败的行会留下来,改好后可以再次保存。

导出图标 → CSV 文件(.csv) · Excel 文件(.xls) · 剪贴板(TSV — 粘贴)。

  • 导出到文件时,不是导出网格里的 5,000 行,而是重新执行原来的 SQL 并保存全部结果。所以网格里的筛选·排序不会反映到文件中。
  • CSV 为 UTF-8(带 BOM)。Excel 把所有单元格都保存为文本格式,最多 1,048,575 行。
  • 复制到剪贴板时会反映网格里的筛选·排序。

决定修改数据后是立即确定(自动提交,默认),还是确认之后再确定(手动提交)。

  1. 点击标题行的 ● 自动提交,切换为 ● 手动提交。会出现 提交 · 回滚 按钮。
  2. 执行 UPDATE·INSERT·DELETE 后会显示 ● 未提交。
  3. 没问题就 提交,否则 回滚。
  • 事务以连接为单位。 同一个连接的各个 SQL 标签共用未提交的更改,在一个标签里提交,就会全部确定。
  • CREATE·ALTER·DROP 这类结构变更,根据 DB 不同可能会立即确定、无法回滚(Oracle 的 DDL 不能回滚)。

在 SQL 编辑器里由人直接执行时没有确认窗口。由 AI 执行,或在代码编辑器里用 ▶ 执行时,会像下面这样询问。

危险程度对应的 SQL
不确认SELECT 等只读 SQL
确认带 WHERE 的 UPDATE·DELETE、INSERT、MERGE、CREATE 等
强确认DROP、TRUNCATE、ALTER、不带 WHERE 的 UPDATE·DELETE

AI 执行 UPDATE·DELETE 时,会事先统计并显示受影响的行数。

修改了 DB 的执行(无论是人还是 AI)都会记录到变更历史中,简单的 UPDATE·DELETE 在执行前会先做一份用于撤销的备份。

DB备份方式
SQLite把将被修改的行保存到 Blyck 历史文件中(最多 1,000 行,UPDATE 需要主键)
Oracle · PostgreSQL · MSSQL · MySQL在 DB 里创建 blyck_bak_… 备份表并复制(仅限自动提交时)
  • 撤销方法:Ctrl+Shift+H → DB 记录行 → [撤销数据库更改]。需要处于已连接该 DB 的状态。
  • 服务器 DB 中生成的 blyck_bak_… 表,可以用 ChangeSet 窗口的 [清理备份表] 删除。
  • JOIN·子查询之类的复杂语句、INSERT、DROP·TRUNCATE 无法撤销。

数据库撤销确认窗口 — 先显示要执行的 SQL 和连接

  1. “连接:” — 要撤销的数据库。必须正在连接该数据库
  2. 要执行的撤销 SQL — 服务器数据库会从更改前建好的 blyck_bak_… 备份表恢复
  3. “⚠ 生产数据将被实际更改。”确认后点 [执行撤销]
  • 切换连接:SQL 保持不变,只把执行的目标 DB 换成另一个连接(标题行最右边的数据库按钮 ▾)。适合把同一条查询依次在开发 → 验证 → 生产 DB 上运行。列表中会同时列出已打开的数据库和保存的数据库连接。选择保存的连接时,会连接并在树面板后面打开该数据库的树(当前看的树保持不变)。
  • 历史:最近 300 条执行成功的 SQL。所有连接共用一个列表。
  • 代码片段:给常用的 SQL 起个名字保存(最多 500 个)。
  • 重新启动时:会重新打开之前开着的 DB 窗格和 SQL 编辑器内容。没有保存密码的连接会弹出密码窗口。

SQL 编辑器 AI(Ctrl+I)— 上:输入框(表信息和刚才的错误以标签一起发送)· 下:修改结果(改动行正下方的小卡片,只检查语法、不执行)

  1. “AI”按钮或 Ctrl+I — 在光标处打开输入框。上面一行是 ✦ 输入栏 · ↑ · ×。有选中内容时只处理选中部分,否则是整段 SQL(Pro)
  2. 下面一行的标签 — SQL 中出现的表的列(orders 6 = 6 列,鼠标悬停看详情)和刚才的错误(ORA-00904,用 × 去掉)。点右端的模型名可以选模型
  3. 修改结果 — 改动行正下方的小卡片:一行修改原因 · +1 −1 ·“语法已检查 — 未执行”·“在聊天中继续”·“放弃 Esc”·“应用 Tab”

让 AI 修改编辑区里的 SQL,或者解释它。

  1. 点标题行的 AI 按钮或按 Ctrl+I,光标处会直接弹出一个框。有选中内容就只处理那部分,否则是整个 SQL。
  2. 输入框上面一行是 ✦ 输入栏 · ↑(发送)· ×,下面一行是一起发送的 标签:SQL 中出现的表(例:orders 6 = 6 列,鼠标悬停看详情)和刚才的错误(例:ORA-00904)。这些表的列名 · 类型 · 键 · 说明会一起发送,AI 不会去猜列名。错误可以用 × 去掉。点右端的模型名可以选模型。
  3. 写下要求,按 Enter。例如:修复这个错误 · 改成按用户合计 · 解释一下
  4. 改好的 SQL 不执行,只检查语法(数据库报错时 AI 会再改,最多 2 次)。改动的行在原处用红·绿显示,并附上一行修改理由和 语法已检查 — 未执行。应用 Tab · 放弃 Esc · 在聊天中继续
  • 发送时输入框里会显示步骤(表信息 → AI 正在修改 → 语法检查)。按 ↑ 位置上的 ■ 停止 会中止,但输入框会保留,可以改一改再发送。
  • 请它解释时,SQL 保持不变,用同样样式的卡片回答。有 复制回答、下方的 继续提问… 栏(把前面的问题和回答一起发送再问)以及 在聊天中继续。在聊天中继续 会把请求 · 原 SQL · 修改后的 SQL · 原因 · 语法检查 · 一起发送的表信息和错误全部放进聊天输入栏(发送由你来按)。
  • 新查询 请直接用文字告诉 AI 聊天。聊天会查看表结构、试运行 SQL 后给出代码块;点代码块上的 ⤓ 插入编辑器,SQL 就会放到该数据库 SQL 编辑器的光标下方。执行由你来。
  • 网格单元格 AI:在结果表中选中单元格,然后在网格里按 Ctrl+I → 像“分析这些值的异常点”这样提问。选中的行超过 200 行时,只发送前 200 行。

在 AI 聊天里也可以查看打开的 DB、检查结构或执行 SQL(写入操作需要审批卡片)。请参阅 AI 聊天。

Q. Oracle 报 NJS-116 错误。 这是 Thin 方式不支持的密码验证方式。请勾选 强制 Thick,并在 客户端路径 中指定 64 位 Instant Client 文件夹。

Q. Oracle 报 NJS-118 错误。 已经用 Thin 方式连接过,无法再切换到 Thick。请重启应用后用 强制 Thick 连接。

Q. Oracle 报 ORA-12514 / ORA-12505。 服务名或 SID 不对。请检查 Service 栏的值。

Q. MySQL 树里显示“请指定一个数据库(模式)”。 Database 栏是空的。请在已保存的连接的 ✎ 或连接窗口中填写 Database。

Q. 结果停在 5,000 行。 一次只取回 5,000 行。请使用结果栏的 下 5,000 行 ▾ 或导出图标。

Q. 改了单元格,但 DB 里没有变化。 只是生成了 UPDATE 语句。请用 Ctrl+Enter 执行编辑区末尾的 UPDATE(如果是手动提交,还要点 提交)。

Q. 导出的文件里筛选没有生效。 导出到文件会重新执行完整的原始 SQL。请在 SQL 里加上 WHERE,或者使用复制到剪贴板。

Q. 用 Excel 打开 CSV,中文变成乱码。 请在 Excel 的“获取数据”中指定 UTF-8,或者用剪贴板(TSV)粘贴。

Q. DB 里多了 blyck_bak_… 表。 这是用于撤销的备份。请用 ChangeSet 窗口的 [清理备份表] 删除。

Q. AI 改好的 SQL 没有执行。 改好的 SQL 故意不执行,只检查语法。请用 应用 Tab 放入后按 Ctrl+Enter 执行。

Q. 重新启动后 DB 窗格是空的。 这是没有保存密码的连接。请在弹出的窗口中输入密码,以后连接时记得填写 另存为。