編寫和執行查詢 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

編寫和執行查詢

您可以在編輯器中輸入查詢,或從查詢清單中選取已儲存的查詢,然後選擇執行

系統預設會設定限制 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 伺服器組態參數設定為「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 會顯示執行查詢表單視窗,以收集 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 ...