你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

查询编辑器和 IntelliSense

适用于 Visual Studio Code 的 PostgreSQL 扩展提供了查询编辑器,支持 IntelliSense 智能补全、通过键盘执行查询、带导出选项的结果网格以及内置代码片段。 在标准 VS Code 编辑器选项卡中编写 SQL,并在不离开 IDE 的情况下针对任何连接的 PostgreSQL 服务器运行 SQL。

先决条件

打开查询编辑器

可以通过多种方式打开新的查询编辑器:

  • “连接 ”树中,右键单击数据库节点并选择“ 新建查询”。
  • 从命令面板(PGSQL: New Query)运行
  • 打开或创建扩展名为 .sql 的任何文件。

查询编辑器使用具有 SQL 语言模式的 VS Code 文本编辑器。 将编辑器连接到服务器时,扩展会激活 IntelliSense 并启用查询执行命令。

连接和断开连接

将查询编辑器与数据库连接相关联:

Action Windows/Linux macOS
连接 Ctrl+Shift+C Cmd+Shift+C
断开连接 Ctrl+Shift+D Cmd+Shift+D

你还可以通过命令面板运行 PGSQL: ConnectPGSQL: Disconnect

更改数据库上下文

用于查询执行的活动数据库显示在 VS Code 状态栏中。 切换到其他数据库:

  1. 在状态栏中选择数据库名称,或从命令面板运行 PGSQL: Change PostgreSQL Database
  2. 从选取器中选择目标数据库。

新的数据库上下文适用于该编辑器中的所有后续查询执行。

连接状态镜头

pgsql.showConnectionStatusLenstrue (默认值)时,编辑器会在显示当前连接状态的文件顶部显示代码镜头。 选择该镜头以连接或更改数据库。

IntelliSense

当你在查询编辑器中键入 SQL 时,IntelliSense 会提供根据上下文的自动补全。 该扩展分析连接的数据库架构,以建议表、列、函数和关键字。

键入时 IntelliSense 会自动激活,或者可以使用 Ctrl+Space (macOS 上的 Cmd+Space )手动触发它。 可用的完成类型如下:

完成类型 Description
关键 字 SQL 关键字,例如SELECTFROMWHERE
表/视图 当前数据库中的表和视图
查询中所引用表的列
功能 内置函数和用户定义的函数
Schema 数据库中的可用架构
添加建议 JOIN 基于外键关系的子句

在表引用后键入 JOIN 时,IntelliSense 会建议相关表,并根据外键关系填充联接条件。

设置 IntelliSense

使用 pgsql.intelliSense.enableIntelliSense 此设置启用或禁用 IntelliSense。 默认情况下,IntelliSense 处于启用状态。

刷新 IntelliSense 缓存

如果更改数据库架构(例如通过添加表或列),IntelliSense 不会反映这些更改,请刷新缓存:

  1. 打开命令面板 (Ctrl+Shift+P)
  2. 运行 PGSQL: Refresh IntelliSense Cache

在执行架构迁移、DDL 更改或在当前编辑器会话之外所做的更改之后,使用此命令。

运行查询

该扩展提供了多种针对已连接数据库运行 SQL 查询的方法。

执行查询

使用 执行 PostgreSQL 查询 在编辑器中运行 SQL。 如果选择特定文本,则仅运行所选文本。 如果未选择任何内容,编辑器的整个内容将运行。

Action Windows/Linux macOS
执行 PostgreSQL 查询 Ctrl+Shift+EShift+Enter Cmd+Shift+EShift+Enter
执行当前 PostgreSQL 语句 Ctrl+Shift+Enter Ctrl+Shift+Enter

执行 Current PostgreSQL 语句 仅在当前游标位置运行 SQL 语句。 在编辑器中有多个语句并且想要运行一个语句而不选择它时,请使用此命令。

取消查询

若要停止长时间运行的查询,请从命令面板运行 PGSQL: Cancel PostgreSQL Query 。 状态栏显示查询运行时的执行进度。

PostgreSQL 查询结果面板

运行查询后,结果将显示在编辑器下方的 PostgreSQL 查询结果 面板中。 面板最多包含三个选项卡,具体取决于查询类型。

“结果”选项卡

结果 ”选项卡显示结果网格。 当查询返回多个结果集时,每个集将显示在选项卡内自己的网格中。

结果网格提供用于浏览数据的这些功能:

  • 排序:右键单击列标题,然后选择 “升序排序 ”或“ 降序排序”。 选择 “清除排序 ”以删除排序。
  • 筛选器:右键单击列标题,然后选择“ 显示筛选器 ”以缩小显示的行范围。
  • 调整列大小:拖动列边框以调整宽度,或启用 pgsql.resultsGrid.autoSizeColumns (默认启用)以基于可见内容自动调整列大小。
  • 行编号:行号显示在网格左侧。
  • 搜索:使用结果工具栏中的搜索字段在网格中查找值。

联接的查询和更广泛的结果集使用相同的网格体验,因此可以在不离开编辑器的情况下对相关列进行排序、筛选和扫描。

复制数据

右键单击结果网格以访问复制选项:

选项 Description
全选 选择结果集中的所有行
Copy 将所选单元格复制到剪贴板
复制(含表头) 复制所选单元格及其列标题
复制标头 仅复制列标题

还可以使用这些结果窗格键盘快捷方式(可通过 pgsql.shortcuts 设置进行配置):

Action 默认快捷方式
复制选择 Ctrl+C
全选 Ctrl+A
切换结果窗格 Ctrl+Alt+R
切换消息窗格 Ctrl+Alt+Y
焦点结果网格 Ctrl+Alt+G
上一个结果网格 Ctrl+Up
下一个结果网格 Ctrl+Down

Tip

pgsql.copyIncludeHeaders 设置为 true,以便在每次复制时包含列标题。 将 pgsql.copyRemoveNewLine 设置为 false,以保留复制的单元格中的换行符。

保存结果

通过在结果工具栏中选择保存按钮导出查询结果:

Button Format
另存为 CSV 逗号分隔值 (.csv)
另存为 JSON JavaScript 对象表示法 (.json)
另存为Excel Microsoft Excel工作簿(.xlsx)

使用以下设置自定义 CSV 导出行为:

设置 Description 违约
pgsql.saveAsCsv.delimiter 列分隔字符 ,
pgsql.saveAsCsv.lineSeparator 行分隔符 系统默认
pgsql.saveAsCsv.textIdentifier 用于封闭文本字段的字符 "
pgsql.saveAsCsv.encoding 文件编码 utf-8
pgsql.saveAsCsv.includeHeaders 包含列标题 true

在单独的选项卡中打开结果

对于大型结果集,请在专用编辑器选项卡中打开结果以获取更多空间。 在结果工具栏中选择“在新建选项卡中打开”,或在设置中设置为pgsql.openQueryResultsInTabByDefaulttrue始终在单独的选项卡中打开结果。

“消息”选项卡

消息 ”选项卡显示查询执行信息,包括状态消息、行计数和执行时间。 每条消息都包含时间戳。

默认情况下,消息窗格与结果网格一起打开。 若要更改此行为,请设置为 pgsql.messagesDefaultOpenfalse.

Tip

pgsql.showBatchTime 设置为 true 以显示各个批次的执行时间。

“查询计划”选项卡

当您运行 EXPLAINEXPLAIN ANALYZE 查询时,会在 结果消息 旁显示 查询计划 选项卡。 选择此选项卡可打开内置执行计划可视化工具,或选择 PostgreSQL 查询结果面板中的 “可视化查询计划 ”按钮。

还可以从命令面板运行 可视化查询计划(PostgreSQL), 以可视化当前查询的计划。

有关执行计划可视化工具的详细信息,请参阅 查询计划可视化工具

Apache AGE 查询的图形视图

当查询从 Apache AGE 返回面向图形的结果时,扩展会检测 cypher() 函数调用和 Apache AGE 模式(agtypeag_catalog)并在图形视图中打开结果批处理,而不是标准网格。

  • 切换视图:在结果工具栏中选择“ 切换到图形 ”,以便从网格切换到图形视图,或 切换到表 以返回到网格。
  • 检查元素:选择图形中的节点或边缘,在 “属性” 面板中查看其标签和属性。
  • 导航:使用图形工具栏按钮: 放大缩小缩放以适应重置
  • 导出:在图形工具栏中选择“ 另存为 PNG ”以将图形导出为图像。

Note

如果查询不返回可绘制的数据,扩展将保留标准网格视图。

代码片段

该扩展包含内置 PostgreSQL 代码片段,可帮助搭建常见 SQL 模式的基架。 在编辑器中键入代码段前缀,然后按 Tab 展开代码片段。 在展开的代码片段中,按 Tab 键在各个占位符之间切换并填写相应的值。

可用代码片段

前缀 Description
pgCreateTable 使用主键创建基本表
pgDropDatabase 删除现有的 PostgreSQL 数据库
pgDropTable 删除表格
pgInsertData 在表中插入一行
pgSelectAll 简单 SELECT *查询
pgUpdateRows 更新表中的数据
pgDeleteRows 从表中删除数据
pgCreateIndex 在指定列上创建索引
pgCreateUser 创建新角色或用户
pgGrantPrivileges 向用户授予对表的权限
pgCTE Common Table Expression (CTE) 示例
pgLeftJoin LEFT JOIN 查询示例
pgExplainAnalyze EXPLAIN ANALYZE 查询性能详细信息
pgListTables 列出特定架构中的所有表

Tip

在编辑器中键入 pg,然后浏览 IntelliSense 建议,以查看所有可用的代码片段。

查询历史记录

PostgreSQL 活动栏面板中的 “查询历史记录 ”视图会自动捕获运行的查询,以便以后可以重新访问和重复使用它们。

管理查询历史记录

Action 操作说明
打开查询 “查询历史记录 ”视图中选择一个条目,将其加载到新的编辑器中
运行查询 右键单击某个条目并选择“ 运行查询”
复制查询 右键单击某个条目并选择“ 复制查询”
删除条目 右键单击某个条目并选择“ 删除”
全部清除 在视图工具栏中选择“ 清除所有查询历史记录 ”按钮
在命令面板中浏览 PGSQL: Open Query History in Command Palette运行

控件历史记录采集

使用 “查询历史记录 ”视图工具栏启动或暂停捕获:

  • 启动查询历史记录捕获:恢复记录执行的查询。
  • 暂停查询历史记录采集:停止记录。

使用以下设置配置历史记录行为:

设置 Description 违约
pgsql.enableQueryHistoryFeature 启用查询历史记录功能 true
pgsql.enableQueryHistoryCapture 自动捕获已执行的查询 true
pgsql.queryHistoryLimit 存储历史记录条目的最大数目 20