编写和运行查询 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

编写和运行查询

您可以在编辑器中输入查询,也可以从查询中列出并选择运行以选择已保存的查询。

默认情况下,设置限制 100,将结果限制为 100 行。您可以禁用此选项来返回较大的结果集。禁用此选项时,如要避免非常大型结果集,则可以在 SQL 语句中包含 LIMIT 选项。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 ORDER BY 子句

要在结果区域中显示查询计划,请打开解释。对结果开启解释图,也可显示解释计划的图形表示。

选择保存,将查询保存到查询文件夹。

查询成功,将显示成功消息。如果查询返回信息,则结果将显示在结果部分。如果结果数超过显示区域,则数字将显示在结果区域的顶部。您可以选择数字来显示连续的结果页面。

您可以筛选和排序每一列的结果。如要在结果列标题中输入筛选条件,请将鼠标悬停在该列上便可查看筛选条件菜单( Filter menu ),您可以在此处输入筛选列的条件。

如果查询包含错误,则查询编辑器 v2 将在结果区域中显示错误消息。此消息提供有关如何更正查询的信息。

您可以使用结果区域中的上下文(右键单击)菜单导出或复制查询结果,如下所示:

  • 选择导出结果集JSONCSV,以将整组行结果下载到文件中。结果集中的行数可能受到查询中限制选项或 SQL limit 子句限制。下载结果集的最大大小为 5 MB。

  • 如果没有选择行,则选择导出当前页面JSONCSV,以将当前页面中的行下载到文件中。

  • 如果选择了行,则选择导出选定的行JSONCSV,以将选定的行下载到文件中。

  • 如果选择了行,则选择复制行将选定行复制到剪贴板。

  • 如果选择了行,则选择复制带标题的行,以将带有列标题的选定行复制到剪贴板。

也可以使用快捷方式(Windows 上的 Ctrl+C 或 macOS 上的 Cmd+C)将数据从当前结果页面复制到剪贴板。如果未选择任何行,则具有焦点的单元格将复制到剪贴板。如果选择了行,则选定的行将复制到剪贴板。

要添加新的查询选项卡,请选择 New query tab 图标,然后选择编辑器,此编辑器将显示在查询选项卡所在行中。查询选项卡可以使用,也可以不使用 Isolated session。对于隔离会话,SQL 命令的结果(例如,在一个编辑器选项卡中创建临时表)在另一个编辑器选项卡中不可见。在查询编辑器 v2 中打开编辑器选项卡时,默认为隔离会话。

运行查询
  1. 在查询区域中,执行以下任一操作:

    • 输入查询。

    • 粘贴您复制的查询。

    • 选择查询文件夹中,打开上下文菜单(右键单击)中的保存查询,然后选择打开查询

  2. 确认您为计划运行的 SQL 选择了正确的集群工作组以及数据库值。

    最初,您可以在树视图中选择您的集群工作组。还可以在树视图中选择您的数据库

    您可以使用位于每个编辑器选项卡的隔离会话标题附近的下拉控件,来更改每个编辑器选项卡中的集群工作组以及数据库

    对于每个编辑器选项卡,您可以选择是否以隔离会话运行 SQL。隔离会话与数据库有自己的连接。使用它来运行与其他查询编辑器会话隔离的 SQL。有关连接的更多信息,请参阅打开查询编辑器 v2

  3. 选择运行

    将打开结果区域并显示查询结果。

显示查询的解释计划
  1. 选择查询。

  2. 启用解释

    默认情况下,解释图也将启动。

  3. 选择运行

    运行查询,并在查询的结果区域中显示解释计划。

查询编辑器 v2 支持以下功能。

  • 您可以在一个查询选项卡中使用多个 SQL 语句创作查询。这些查询将连续运行,并为每个查询打开多个结果选项卡。

  • 您可以使用会话变量和临时表创作查询。

  • 您可以使用由 ${parameter} 指定的可替换参数创作查询。您可以使用多个可替换参数创作 SQL 查询,并在 SQL 语句的多个位置使用相同的参数。

    当查询运行时,会显示一个用来输入参数值的窗口。每次运行查询时,都会显示窗口以输入参数值。

    有关示例,请参阅示例:销售额大于特定参数

  • 自动对查询进行版本控制。您可以选择要运行的查询的早期版本。

  • 在继续工作流程之前,您无需等待查询完成。即使关闭查询编辑器,查询仍会继续运行。

  • 创作查询时,支持自动完成架构、表和列名称。

SQL 编辑器支持以下功能:

  • SQL 中使用的左方括号和右方括号具有匹配的颜色。编辑器中显示垂直线以帮助您匹配方括号。

  • 您可以折叠和展开 SQL 的各个部分。

  • 您可以在 SQL 中搜索和替换文本。

  • 您可以使用快捷键执行多个常见编辑任务。

  • SQL 错误会在编辑器中突出显示,以便于找到问题领域。

有关编辑器功能的演示,请观看以下视频。

查询示例

在下方您可以找到可以运行的各种查询类型的描述。

许多此类查询中使用的数据来自 tickit 示例架构。有关加载示例 tickit 数据的更多信息,请参阅加载示例数据。有关 tickit 示例数据的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的示例数据库

运行这些示例查询时,请确认在编辑器中选择了正确的数据库,例如 sample_data_dev

示例:设置会话变量

以下命令将 search_path 服务器配置参数设置为会话的公有参数。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 SETsearch_path

set search_path to public;

示例:按总销售额排列的顶事件

以下查询查找销售额最多的事件。

select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname order by 3;

以下是结果的部分清单。

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Beach Boys 58 30383 Linda Ronstadt 56 35043 Rascal Flatts 76 38214 Billy Idol 67 40101 Stephenie Meyer 72 41509 Indigo Girls 57 45399 ...

示例:销售额大于特定参数

以下查询查找销售数量大于 ${numberoforders} 指定参数的销售额。当参数值为 7 时,结果是 60 行。运行查询时,查询编辑器 v2 会显示运行查询表窗口来收集 SQL 语句中参数值。

select salesid, qtysold from sales where qtysold > ${numberoforders} order by 2;

以下是结果的部分清单。

salesid qtysold 20005 8 21279 8 130232 8 42737 8 74681 8 67103 8 105533 8 91620 8 121552 8 ...

示例:创建一个临时表

通过销售事件表,以下语句创建临时表 eventsalestemp

create temporary table eventsalestemp as select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname;

示例:从临时表中选择

按总订单排序,以下语句从临时表 eventsalestemp 中选择事件、订单总数和总销售额。

select eventname, totalorders, totalsales from eventsalestemp order by 2;

以下是部分结果列表。

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Martina McBride 50 52932 Linda Ronstadt 56 35043 Indigo Girls 57 45399 Beach Boys 58 30383 ...