SQL Runner
SQL Runner 针对所选数据库执行一条任意语句。它作为一个可折叠面板位于 数据 标签页中浏览器的下方 — 默认折叠,因此你可以先浏览,需要时再切入运行器。
运行一条语句需要在资源上拥有 Editor 角色,因为它可以改动数据。(浏览只需要 Viewer — 参见访问与审计。)
Pier 根据每条语句的首关键字(在剥离前导注释之后)对其进行分类:
- 读取 —
SELECT、WITH、VALUES、TABLE、SHOW、EXPLAIN、DESCRIBE/DESC。结果以 网格 形式返回。 - 写入 — 其他任何语句(
INSERT、UPDATE、DELETE、DDL、……)。结果是 受影响的行数。
分类是保守的:任何不明确属于读取的语句都会作为写入来运行。末尾的分号会被自动剥离,因此单条语句可以直接生效。
结果网格与限制
Section titled “结果网格与限制”- 行数上限。 一次读取最多返回 1,000 行。如果结果更大,网格会显示前 1,000 行并将结果标记为已截断 — 用
WHERE或LIMIT缩小范围以查看其余部分。 - 每一列都是文本。 结果会被转换为文本,因此任何列类型都能在网格中渲染。如果你的语句返回 未命名或重复 的列,请添加显式别名 — Pier 会要求你提供别名,而不是去猜测。
- 语句超时。 每个连接都会设置一个 15 秒 的语句超时(Postgres 上的
statement_timeout,MySQL 上的max_execution_time),因此一条失控的查询无法长时间占用数据库。 - 耗时。 每次运行都会报告所花费的时间。
- 使用 Database 选择器来定向到某个特定数据库;保持默认则使用该服务的主数据库。
- 对于大表,优先使用
LIMIT/OFFSET或WHERE子句,而不是滚动整个网格。 - 不返回结果集的语句(例如一条裸
SET)会被执行,并以受影响的行数形式报告。
每次运行器执行 — 无论成功或失败 — 都会写入 db_query_log 审计表:谁运行了它、数据库、SQL 文本、它是读取还是写入、状态、行数和耗时。完整情况参见访问与审计。
- MongoDB 与 Redis — 非 SQL 运行器。
- 访问与审计 — 角色和审计日志。