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

编写和运行查询

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

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

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

选择 Save(保存),将查询保存到 Queries(查询)文件夹。

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

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

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

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

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

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

  • 如果选择了行,则选择 Export selected rows(导出选定的行)和 JSONCSV,以将选定的行下载到文件中。

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

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

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

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

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

    • 输入查询。

    • 粘贴您复制的查询。

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

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

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

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

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

  3. 选择 Run(运行)。

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

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

  2. 启用 Explase(解释)。

    默认情况下,Explain graph(解释图)也将启动。

  3. 选择 运行

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

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

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

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

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

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

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

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

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

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

SQL 编辑器支持以下功能:

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

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

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

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

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

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

查询示例

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

许多此类查询中使用的数据来自 tickit 示例架构。有关 tickit 数据的更多信息,请参阅加载示例数据

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

示例:设置会话变量

以下命令将 search_path 服务器配置参数设置为会话的 public(公有)参数。有关更多信息,请参阅《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 会显示 Run query form(运行查询表)窗口来收集 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 ...

示例:创建一个临时表

通过 sales(销售)和 event(事件)表,以下语句创建临时表 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 ...

查询注意事项

请考虑下列有关使用查询编辑器时处理查询的事项:

  • 最大查询结果大小为 5MB 或 100,000 行中的较小者。

  • 您可以运行最长为 300,000 个字符的查询。

  • 您可以保存最长为 30,000 个字符的查询。

  • 不能在查询编辑器中使用事务。有关事务的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 BEGIN