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) 从表的所有列中检索数据。
  • 列别名是查询中列的临时名称。
  •  

数据库 #

测验 #

本教程是否有帮助?
© .