SQL SELECT

摘要:在本教學中,您將學習如何使用 SQL SELECT 語句從單一表格查詢資料。

SQL SELECT 語句簡介

SQL SELECT 語句從一個或多個表格中選取資料。以下顯示從單一表格選取資料的 SELECT 語句基本語法。

SELECT 
    select_list
FROM
    table_name;Code language: SQL (Structured Query Language) (sql)

在此語法中

  • 首先,在 SELECT 子句中指定表格中以逗號分隔的欄位列表。
  • 然後,在 FROM 子句中指定表格名稱。

當評估 SELECT 語句時,資料庫系統會先評估 FROM 子句,然後再評估 SELECT 子句。就像是從一個表格中,選擇這些欄位的資料。

分號 (;) 不是查詢的一部分。資料庫伺服器使用它來分隔兩個 SQL 語句。

例如,如果您執行兩個 SQL SELECT 語句,您需要使用分號 (;) 來分隔它們。請查看 SQL 語法 以獲取更多資訊。

如果您想查詢表格中所有欄位的資料,您可以使用星號 (*) 運算子,而無需指定所有欄位名稱。

SELECT * FROM table_name;

SQL 不區分大小寫。因此,SELECTselect 關鍵字具有相同的含義。

按照慣例,我們將使用大寫字母表示 SQL 關鍵字,例如 SELECT 和 FROM,並使用小寫字母表示識別符,例如表格和欄位名稱。這種慣例使 SQL 語句更易讀。

SQL SELECT 語句範例

我們將使用 範例資料庫 中的 employees 表格進行示範。

employees_table

1) SQL SELECT – 從所有欄位選取資料的範例

以下範例使用 SQL SELECT 語句從 employees 表格中取得所有列和欄位的資料。

SELECT * FROM employees;Code language: SQL (Structured Query Language) (sql)

試試看

以下顯示資料庫伺服器傳回的結果集。它就像一個包含帶有標題的列和欄的試算表。

+-------------+-------------+-------------+-----------------------------------+--------------+------------+--------+----------+------------+---------------+
| employee_id | first_name  | last_name   | email                             | phone_number | hire_date  | job_id | salary   | manager_id | department_id |
+-------------+-------------+-------------+-----------------------------------+--------------+------------+--------+----------+------------+---------------+
|         100 | Steven      | King        | [email protected]       | 515.123.4567 | 1987-06-17 |      4 | 24000.00 |       NULL |             9 |
|         101 | Neena       | Kochhar     | [email protected]     | 515.123.4568 | 1989-09-21 |      5 | 17000.00 |        100 |             9 |
|         102 | Lex         | De Haan     | lex.de [email protected]       | 515.123.4569 | 1993-01-13 |      5 | 17000.00 |        100 |             9 |
|         103 | Alexander   | Hunold      | [email protected]  | 590.423.4567 | 1990-01-03 |      9 |  9000.00 |        102 |             6 |
|         104 | Bruce       | Ernst       | [email protected]       | 590.423.4568 | 1991-05-21 |      9 |  6000.00 |        103 |             6 |
|         105 | David       | Austin      | [email protected]      | 590.423.4569 | 1997-06-25 |      9 |  4800.00 |        103 |             6 |
|         106 | Valli       | Pataballa   | [email protected]   | 590.423.4560 | 1998-02-05 |      9 |  4800.00 |        103 |             6 |
|         107 | Diana       | Lorentz     | [email protected]     | 590.423.5567 | 1999-02-07 |      9 |  4200.00 |        103 |             6 |
|         108 | Nancy       | Greenberg   | [email protected]   | 515.124.4569 | 1994-08-17 |      7 | 12000.00 |        101 |            10 |
...Code language: plaintext (plaintext)

SELECT * 被讀作 select star。select star 僅適用於臨時查詢。

對於應用程式開發,您應避免使用 select star,原因如下。

select * 會從表格的所有欄位傳回資料。通常,應用程式不需要來自所有欄位的資料,只需要一個或幾個欄位的資料。

如果您使用 select *,資料庫需要更多時間從磁碟讀取資料並將其傳輸到應用程式。如果表格包含許多具有大量資料的欄位,通常會導致效能不佳。

2) SQL SELECT – 從特定欄位選取資料

要從特定欄位選取資料,您可以在 SELECT 語句的 SELECT 子句後指定欄位列表。

例如,以下選取 employees 表格中所有列的員工 ID、名字、姓氏和雇用日期資料。

SELECT 
    employee_id, 
    first_name, 
    last_name, 
    hire_date
FROM
    employees;Code language: SQL (Structured Query Language) (sql)

試試看

現在,結果集僅包含 SELECT 子句中指定的四個欄位。

+-------------+-------------+-------------+------------+
| employee_id | first_name  | last_name   | hire_date  |
+-------------+-------------+-------------+------------+
|         100 | Steven      | King        | 1987-06-17 |
|         101 | Neena       | Kochhar     | 1989-09-21 |
|         102 | Lex         | De Haan     | 1993-01-13 |
|         103 | Alexander   | Hunold      | 1990-01-03 |
|         104 | Bruce       | Ernst       | 1991-05-21 |
|         105 | David       | Austin      | 1997-06-25 |
|         106 | Valli       | Pataballa   | 1998-02-05 |
|         107 | Diana       | Lorentz     | 1999-02-07 |
|         108 | Nancy       | Greenberg   | 1994-08-17 |
|         109 | Daniel      | Faviet      | 1994-08-16 |
|         110 | John        | Chen        | 1997-09-28 |
...Code language: plaintext (plaintext)

3) SQL SELECT – 執行簡單計算

以下範例使用 SELECT 語句來取得名字、姓氏、薪資和新薪資。

SELECT 
    first_name, 
    last_name, 
    salary, 
    salary * 1.05
FROM
    employees;Code language: SQL (Structured Query Language) (sql)

表達式 salary * 1.05 將每位員工的薪資增加 5%。預設情況下,SQL 使用該表達式作為欄位標題。

+-------------+-------------+----------+---------------+
| first_name  | last_name   | salary   | salary * 1.05 |
+-------------+-------------+----------+---------------+
| Steven      | King        | 24000.00 |    25200.0000 |
| Neena       | Kochhar     | 17000.00 |    17850.0000 |
| Lex         | De Haan     | 17000.00 |    17850.0000 |
| Alexander   | Hunold      |  9000.00 |     9450.0000 |
| Bruce       | Ernst       |  6000.00 |     6300.0000 |
| David       | Austin      |  4800.00 |     5040.0000 |
| Valli       | Pataballa   |  4800.00 |     5040.0000 |
| Diana       | Lorentz     |  4200.00 |     4410.0000 |
| Nancy       | Greenberg   | 12000.00 |    12600.0000 |
...Code language: plaintext (plaintext)

要為表達式或欄位指定別名,請指定 AS 關鍵字,後跟欄位別名,如下所示。

expression AS column_aliasCode language: SQL (Structured Query Language) (sql)

例如,以下 SELECT 語句使用 new_salary 作為 salary * 1.05 表達式的欄位別名。

SELECT 
    first_name, 
    last_name, 
    salary, 
    salary * 1.05 AS new_salary
FROM
    employees;Code language: SQL (Structured Query Language) (sql)

輸出

+-------------+-------------+----------+------------+
| first_name  | last_name   | salary   | new_salary |
+-------------+-------------+----------+------------+
| Steven      | King        | 24000.00 | 25200.0000 |
| Neena       | Kochhar     | 17000.00 | 17850.0000 |
| Lex         | De Haan     | 17000.00 | 17850.0000 |
| Alexander   | Hunold      |  9000.00 |  9450.0000 |
| Bruce       | Ernst       |  6000.00 |  6300.0000 |
| David       | Austin      |  4800.00 |  5040.0000 |
| Valli       | Pataballa   |  4800.00 |  5040.0000 |
| Diana       | Lorentz     |  4200.00 |  4410.0000 |
| Nancy       | Greenberg   | 12000.00 | 12600.0000 |

摘要

  • 使用 SQL SELECT 語句從表格中選取資料。
  • 要從表格中選取資料,請在 FROM 子句中指定表格名稱,並在 SELECT 子句中指定欄位列表。
  • SELECT *SELECT 表格中所有欄位的速記方式。
本教學對您有幫助嗎?