分享到

簡介

SELECT 是最適合用於查詢和返回 MySQL 表中資訊的 SQL 命令。顧名思義,它用於指定從資料庫中選擇匹配記錄的條件。這是一個廣泛有用的角色,不僅適用於讀取資料,也適用於定位更新和其他操作。

在本文中,我們將介紹 SELECT 命令的基本形式,並演示如何使用它返回資料。雖然 SELECT 支援許多高階用例,但我們將堅持一些更簡單的形式來演示基本的命令結構。

SELECT 命令的通用語法

`SELECT` 命令的基本格式如下:

SELECT <column_names> FROM <table_name> <additional_conditions_and_formatting>;

此語句由幾個不同的部分組成:

  • SELECTSELECT 命令本身。此 SQL 命令表示我們希望查詢檢視以獲取其包含的資料。圍繞它的引數和子句決定了返回輸出的內容和格式。
  • <column_names>SELECT 語句可以返回整個行(如果使用 * 萬用字元指定)或可用列的子集。如果您只想輸出特定列,請提供您想要顯示的列名,並用逗號分隔。
  • FROM <table_name>FROM 關鍵字用於指示應查詢的表或檢視。在大多數簡單查詢中,這由一個包含您感興趣資料的單一表組成。
  • <additional_conditions_and_formatting>:大量的過濾器、輸出修飾符和條件可以作為 SELECT 命令的附加項進行指定。您可以使用它們來幫助精確定位具有特定屬性的資料、修改輸出格式或進一步處理結果。

使用 SELECT 指定要顯示的列

`SELECT` 命令的列規範部分要求您命名要顯示查詢資料的列。

對於即席查詢和資料探索,最有用的選項之一是使用星號來指示您要顯示所有可用列的值

SELECT * FROM my_table;

這將顯示 my_table 中的所有記錄,因為我們沒有提供任何篩選來縮小結果範圍。每條記錄的所有列將按照它們在表中定義的順序顯示。

如果您正在查詢一個包含許多列的表,您可能希望使用的一種修改是使用 \G 而不是分號 ; 來結束您的語句

SELECT * FROM my_table\G

\G’ 語句終止符告訴 MySQL 垂直而不是水平顯示結果,這可以提高包含許多列或長值的表的讀取性。您可以將 ‘\G’ 用於終止任何語句,而不僅僅是與 ‘SELECT’ 一起使用。

您還可以透過指定列名來選擇檢視可用列的子集。列名用逗號分隔,並按給定順序顯示

SELECT column2, column1 FROM my_table;

這將顯示 my_table 中的所有記錄,但只按 column2column1 的順序顯示這兩列。

使用 AS 定義列別名以修改結果表

您可以選擇設定列別名來修改輸出中列的名稱。

SELECT column1 AS "first column" FROM my_table;

這將顯示 my_tablecolumn1 的每個值。但是,輸出中的列將被標記為 first column 而不是 column1

如果輸出結合了可能共享名稱的多個表的列名,或者包含尚無名稱的計算列,則此功能特別有用。

使用 ORDER BY 定義排序順序

ORDER BY 子句可用於根據給定條件對結果行進行排序。通用語法如下:

SELECT * FROM my_table ORDER BY <sort_expression>;

這將顯示 my_table 中所有記錄的所有列的值。結果將按照佔位符 <sort_expression> 所表示的表示式進行排序。

例如,假設我們有一個 customer 表,其中包含 first_namelast_nameaddressphone_number 列。如果我們要按 last_name 的字母順序顯示結果,可以使用以下命令

SELECT * FROM customer ORDER BY last_name;
顯示結果

結果按 last_name 列的升序字母順序排序。

要反轉排序,我們可以在 ORDER BY 子句的末尾新增 DESC 修飾符

SELECT * FROM customer ORDER BY last_name DESC;
顯示結果

您還可以按多列排序。在這裡,我們首先按 last_name 排序,然後對於具有相同 last_name 值的任何列,按 first_name 排序。兩種排序都是升序。

SELECT * FROM customer ORDER BY last_name, first_name;
顯示結果

獲取去重結果

如果您想在 MySQL 中查詢某一列的值範圍,可以使用 SELECT DISTINCT 變體。這將為列的每個不同值顯示一行。

基本語法如下:

SELECT DISTINCT column1 FROM my_table;

這將為 column1 中的每個唯一值顯示一行。

例如,要顯示 shirt 表中 color 的所有不同值,您可以輸入

SELECT DISTINCT color FROM shirt;
+--------+
color |
+--------+
blue |
green |
orange |
red |
yellow |
+--------+
5 rows in set (0.00 sec)

要顯示多列的唯一性,您可以新增用逗號分隔的其他列。

例如,這將顯示 shirt 表中 colorshirt_size 的所有不同組合

SELECT DISTINCT color,shirt_size FROM shirt;
+--------+------------+
color | shirt_size |
+--------+------------+
blue | M |
blue | S |
green | M |
green | L |
green | S |
orange | L |
orange | M |
red | M |
yellow | S |
+--------+------------+
9 rows in set (0.00 sec)

這將顯示錶中 colorshirt_size 的每個唯一組合。

總結

在本文中,我們介紹了 SELECT 命令的一些基本元素,以演示如何從 MySQL 表中返回資料。還有更多可選子句可以修改命令的行為,允許您縮小所需結果的範圍、指定要返回的行數等等。在後續文章中,我們將探討這些修飾符以增強 SELECT 的實用性。

關於作者
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以來一直撰寫有關資料庫、Linux、基礎設施和開發者工具的文章。他目前與妻子和兩隻兔子居住在柏林。他通常不必以第三人稱寫作,這對所有相關方來說都是一種解脫。
© . This site is unofficial and not affiliated with Prisma Data, Inc.