简介:在本教程中,您将学习如何使用基本的PostgreSQL SELECT语句从表中查询数据。
请注意,如果您不知道如何使用psql命令行工具或pgAdmin GUI工具对PostgreSQL数据库执行查询,则可以在连接到PostgreSQL数据库教程中进行检查。
使用数据库时,最常见的任务之一是使用SELECT语句从表中查询数据。
SELECT语句是PostgreSQL中最复杂的语句之一。它具有许多子句,可用于形成灵活的查询。
由于它的复杂性,我们将其分解为许多简短且易于理解的教程,以便您可以更快地了解每个子句。
SELECT语句具有以下子句:
- 使用
DISTINCT运算符选择不同的行。 - 使用
ORDER BY子句对行进行排序。 - 使用
WHERE子句过滤行。 - 使用
LIMITor FETCH子句从表中选择行的子集。 - 使用
GROUP BY子句将行分组。 - 使用
HAVING子句过滤组。 - 使用其他表加入加入,如
INNER JOIN,LEFT JOIN,FULL OUTER JOIN,CROSS JOIN条款。 - 执行使用集合运算
UNION,INTERSECT和EXCEPT。
在本教程中,您将专注于 SELECTand FROM 子句。
PostgreSQL SELECT语句语法
让我们SELECT从从单个表检索数据的语句的基本形式开始。
下面说明了该SELECT语句的语法:
SELECT
select_list
FROM
table_name;
让我们SELECT更详细地检查该语句:
-
首先,指定一个选择列表,该列表可以是您要从中检索数据的一列或表中的列列表。如果指定列列表,则需要
,在两列之间放置逗号()以将它们分开。如果要从表的所有列中选择数据,则可以使用星号(*)的缩写形式来代替指定所有列名。选择列表可能还包含表达式或文字值。 -
其次,在
FROM关键字之后指定要从中查询数据的表的名称。
该FROM子句是可选的。如果您不从任何表查询数据,则可以省略该FROM语句中的子句SELECT。
PostgreSQL 在语句中的FROM子句之前评估该子句:SELECTSELECT

请注意,SQL关键字不区分大小写。这意味着
SELECT等于select或Select。按照惯例,我们将使用所有大写的SQL关键字来使查询更易于阅读。
PostgreSQL SELECT范例
让我们看一些使用PostgreSQL SELECT语句的示例。
我们将customer在示例数据库中使用下表进行演示。

1)使用PostgreSQL SELECT语句从一列示例中查询数据
本示例使用该SELECT语句从customer表中查找所有客户的名字:
SELECT first_name FROM customer;
这是部分输出:

PostgreSQL选择-选择单个列
注意,我们在SELECT语句末尾添加了分号(;)。分号不是SQL语句的一部分。它用于向PostgreSQL发出SQL语句结束的信号。分号还用于分隔两个SQL语句。
2)使用PostgreSQL SELECT语句从多个列查询数据的示例
假设您只想知道客户的名字,姓氏和电子邮件,则可以在SELECT子句中指定这些列名,如以下查询所示:
SELECT
first_name,
last_name,
email
FROM
customer;

3)使用PostgreSQL SELECT语句从表示例的所有列中查询数据
以下查询使用该SELECT语句从表的所有列中选择数据customer:
SELECT * FROM customer;

在此示例中,我们在SELECT子句中使用了星号(*),它是所有列的简写形式。除了列出SELECT子句中的所有列之外,我们仅使用星号(*)保存一些键入内容。
但是,由于以下原因,在将SQL语句嵌入到应用程序代码(如Python,Java,Node.js或PHP*)中SELECT时,在语句中使用星号(*)不是一个好习惯:
- 数据库性能。假设您有一个包含许多列和大量数据的SELECT表,带有星号(*)速记的语句将从表的所有列中选择数据,这对于应用程序可能不是必需的。
- 应用程序性能。从数据库检索不必要的数据会增加数据库服务器和应用程序服务器之间的流量。因此,您的应用程序响应速度可能较慢,可伸缩性也较差。
由于这些原因,一个好的做法是SELECT在可能的情况下在子句中显式指定列名,以仅从数据库中获取必要的数据。
而且,对于检查数据库中数据的临时查询,只应使用星号(*)速记。
4)使用SELECT带有表达式示例的PostgreSQL 语句
以下示例使用该SELECT语句返回所有客户的全名和电子邮件:
SELECT
first_name || ' ' || last_name,
email
FROM
customer;
输出:

在此示例中,我们使用了串联运算符 ||来串联每个客户的名字,空格和姓氏。
在下一教程中,您将学习如何使用Column Alias为表达式分配更有意义的名称。
5)SELECT在表达式中使用PostgreSQL 语句示例
以下示例将SELECT语句与表达式一起使用。它忽略了以下FROM子句:
SELECT 5 * 3;
这是输出:

在本教程中,您学习了如何使用PostgreSQL SELECT语句的基本形式来查询单个表中的数据。




