摘要:在本教程中,您将学习如何使用 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 不区分大小写。因此,SELECT
和 select
关键字具有相同的含义。
按照惯例,我们将 SQL 关键字(如 SELECT
和 FROM
)使用大写字母,而将标识符(如表和列名称)使用小写字母。此惯例使 SQL 语句更具可读性。
SQL SELECT 语句示例
我们将出于演示目的使用 示例数据库 中的 employees
表。

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 *
被读作选择星号。选择星号仅对临时查询有用。
对于应用程序开发,您应该避免使用选择星号,原因如下。
选择星号返回表中所有列的数据。通常,应用程序不需要所有列的数据,而只需要一列或几列。
如果您使用选择星号,则数据库需要更多时间从磁盘读取数据并将其传输到应用程序。如果表包含许多列和大量数据,则经常会导致性能不佳。
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_alias
Code 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
所有列的速记。