摘要:在本教程中,您將學習如何使用 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 關鍵字,如 SELECT 和 FROM。例如:
select * from table_name;Code language: SQL (Structured Query Language) (sql)按照慣例,我們將使用大寫來編寫 SQL 關鍵字,使用小寫來編寫表名等識別符號。這種做法使 SQL 語句更易於閱讀。
SQL SELECT 語句示例 #
我們將使用示例資料庫中的 employees 表進行演示。

從所有列中選擇資料示例 #
以下示例使用 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_id、first_name、last_name 和 hire_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_name、last_name、salary 和新薪水。
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) 從表的所有列中檢索資料。 - 列別名是查詢中列的臨時名稱。
資料庫 #
- PostgreSQL SELECT 語句
- Oracle SELECT 語句
- SQL Server SELECT 語句
- MySQL SELECT 語句
- SQLite SELECT 語句
- Db2 SELECT 語句
- MariaDB SELECT 語句