SQL SELECT

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

SQL SELECT 語句簡介 #

SELECT 語句允許您從一個或多個表中檢索資料。

以下是從單個表中檢索資料的 SELECT 語句的基本語法:

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

在此語法中:

  • 首先,在 SELECT 子句中指定要檢索資料的表中列的逗號分隔列表。
  • 然後,在 FROM 子句中提供表名。

在執行 SELECT 語句時,資料庫系統首先執行 FROM 子句,然後執行 SELECT 子句。

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

例如,如果您執行兩個 SELECT 語句,您需要使用分號 (;) 將它們分開。檢視 SQL 語法 以獲取更多資訊。

如果您想從表的所有列中檢索資料,可以在 SELECT 子句中列出所有列,如下所示:

SELECT
  column1,
  column2,
  column3
FROM
  table_name;Code language: SQL (Structured Query Language) (sql)

或者,您可以使用星號 (*) 運算子作為所有列的簡寫:

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

由於 SQL 不區分大小寫,您可以用大寫、小寫、駝峰式等方式編寫 SQL 關鍵字,如 SELECTFROM。例如:

select * from table_name;Code language: SQL (Structured Query Language) (sql)

按照慣例,我們將使用大寫來編寫 SQL 關鍵字,使用小寫來編寫表名等識別符號。這種做法使 SQL 語句更易於閱讀。

SQL SELECT 語句示例 #

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

employees_table

從所有列中選擇資料示例 #

以下示例使用 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
...
Code language: plaintext (plaintext)

SELECT 語句的結果稱為結果集

SELECT * 讀作“select star”。“select star”僅對即席查詢(ad-hoc queries)有用。對於應用程式開發,您應該避免使用“select star”,原因如下:

  • “select *”返回表中所有列的資料。應用程式通常只需要一列或幾列的資料,而不是全部。
  • 如果您使用“select *”,資料庫系統需要更多時間從磁碟讀取資料並將其傳輸到應用程式。如果表包含許多列且資料量很大,這通常會導致效能不佳。

從特定列中選擇資料 #

要從表的特定列中檢索資料,您可以在 SELECT 子句中指定列列表。

例如,以下語句從 employees 表中檢索 employee_idfirst_namelast_namehire_date 列的資料:

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

試一試

結果集僅包括四個指定的列:

 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
...Code language: plaintext (plaintext)

執行計算 #

以下示例使用 SELECT 語句檢索 first_namelast_namesalary 和新薪水。

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

試一試

表示式 salary * 1.05 為每個員工的薪水增加了 5%

當您有一個涉及表列的表示式時,您就建立了一個計算列。

資料庫系統可能會為計算列分配一個臨時名稱。例如,MySQL 將表示式本身作為列名,而 PostgreSQL 則使用 ?column? 作為計算列的列名。

以下是 PostgreSQL 的輸出:

 first_name  |  last_name  |  salary  |  ?column?
-------------+-------------+----------+------------
 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
...Code language: plaintext (plaintext)

列別名 #

列別名是您在查詢執行期間為列分配的臨時名稱。

以下是使用列別名的語法:

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

在此語法中,AS 關鍵字是可選的。因此,您可以省略它以使查詢更簡潔:

expression 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
...

摘要 #

  • 使用 SELECT 語句從表中檢索資料。
  • 使用 SELECT * (select star) 從表的所有列中檢索資料。
  • 列別名是查詢中列的臨時名稱。
  •  

資料庫 #

測驗 #

本教程是否有幫助?
© .