跳转到内容

查询与 SQL 视图

您的数据表是真正的 PostgreSQL 数据表,界面使用它们的真实名称通过 SQL 查询它们。数据库的每位成员都可以编写查询,并将其保存在数据表下方——仅供自己使用、供整个数据库使用或供部分用户组使用——而数据库的管理者还可以将查询变为 SQL 视图:一个真正的 PostgreSQL 视图,与数据表并列,psql 和您的工具同样可以读取。

一个从“查询”分组中打开的已保存查询;上方是两个与数据表并列的 SQL 视图

标签栏中的 +,或数据库的 ⋯ 菜单 → SQL 查询,会打开一个 SQL 标签页:带语法高亮和自动补全的编辑器,按 Ctrl+Enter 执行,结果显示在与数据表相同的网格中。查询能读取什么,取决于由谁运行:

  • 拥有数据库的可管理级别时,可访问整个数据库,包括写入;
  • 拥有可查看或可编辑级别时,查询以只读方式、按您自己的权限执行。对您不开放的数据表对查询来说并不存在;对您隐藏的字段会从 SELECT * 中消失,如果您显式指定它,即使加上数据表限定也会被拒绝;写入会被拒绝。结果上会显示您的权限标签。

“您的权限”标签:查询只能看到对该用户开放的数据表和字段

这并不是由界面来过滤:而是 PostgreSQL 本身在一个专属于您的角色上,逐列应用您的权限。因此,查询不可能向您展示网格、API 或 MCP 服务器不会向您展示的任何内容。

标签页工具栏中的保存会将查询放在数据库数据表下方的查询分组中。点击即可重新打开;⋯ → 另存为… 会创建一个副本;名称与共享…(位于标签页中,或侧边栏中该查询的菜单里)可重命名查询、更改谁可以看到它,或将其删除——删除同样在其菜单中,可通过右键点击使用。曾经显示它的标签页会保留其文本。

保存查询:名称、显示内容以及谁可以看到

范围谁可以看到谁可以创建和修改
个人——带锁形图标仅您自己任何能看到该数据库的人,供自己使用
整个数据库任何能看到该数据库的人拥有数据库可管理级别的人
指定用户组所选用户组的成员拥有数据库可管理级别的人

共享查询共享的是其文本,绝不会共享其作者能读取的内容。 每个人都以自己的权限执行它:同一个查询由两个人打开,会向每个人展示其有权看到的内容——或者告诉对方某一列对其并不存在。

从侧边栏打开的查询会立即以只读方式执行:您无需做任何决定即可看到结果。执行会按原样重新运行它。名称旁的圆点表示您在保存后修改过其文本;如果您有权修改,保存会将修改存入该查询,否则会建议另存为新查询。

SQL 视图是数据库模式(schema)中一个真正的 PostgreSQL 视图。它与数据表并列,像数据表一样有颜色和图标,右侧还有一个小小的眼睛图标,表明它是一个视图。点击即可在标签页中打开:它的行显示在网格中,刷新可重新读取。

从侧边栏打开的“Factures à encaisser”视图

可以通过数据库的 ⋯ 菜单 → 新建 SQL 视图… 创建,也可以在 SQL 标签页中通过 ⋯ → 创建 SQL 视图… 创建,此时标签页中的查询会成为它的定义。对话框会要求填写:

  • 显示名称和外观——颜色、图标或图片,选择方式与数据表相同;
  • 技术名称,如未填写则由显示名称生成——即写在 FROM 之后的名称;
  • 查询:一条 SELECT 语句,基于数据库中的数据表和其他视图。PostgreSQL 拒绝的内容会被拒绝,编辑器会指出出错的位置。

SQL 视图对话框:显示名称与外观、技术名称、查询、描述

之后即可按名称读取该视图,无论是在界面中,还是在 psql 或您的 BI 工具中:

SELECT * FROM b_t4z56fq_demo_atelier_lumen.factures_a_encaisser;

视图永远不会展示读者看不到的字段。 每个人都以自己的权限读取它,权限作用于它读取的每张数据表和每一列;侧边栏只会向能读取其全部来源的人列出它。它只能读取自己所在的数据库:读取另一个数据库或 basedb 的目录会在创建时就被拒绝。创建、修改或删除 SQL 视图需要数据库的可管理级别。删除位于侧边栏中的菜单里,会将其从所有人的界面中移除,脚本和工具也不例外;它读取的数据表不受影响。

  • 重命名数据表或字段不会破坏视图:PostgreSQL 会随之更新。
  • 更改视图所读取的某个计算字段的公式时,视图会被暂时移除,然后基于新列重新创建。如果视图不再成立,它会保持待修复状态——侧边栏中以三角形标示——并保留其定义:选择编辑视图…,修正后保存即可。
  • 只要有视图读取某张数据表,该数据表就不会被清除;只要有其他视图读取某个视图,该视图就不能被删除:拒绝信息会指明相关视图。
是什么位于何处用途
已保存的查询一段 SQL 文本数据表下方的“查询”分组找回查询,以文本形式共享
SQL 视图一个真正的 PostgreSQL 视图与数据表并列为一种读取方式命名,供界面以及 psql、您的脚本和工具使用
问题用鼠标或 SQL 构建的读取及其可视化在仪表盘中在筛选条件下展示数字、图表、交叉表
  • 网格最多显示屏幕底部所选的每页行数;超出时会显示“已截断”。查询在 15 秒后会被终止。
  • SQL 视图可在 SQL 和界面中读取;REST API 和 MCP 服务器不会公开它。
  • SQL 视图只存在于创建它的环境中:创建环境、比较结构或保存模板时暂不会带上它。

basedb 是 AI 原生软件工作室 Eodia 出品的自由软件。