摘要:在本教程中,你将学习如何使用 PostgreSQL
的 SELECT
语句从表中检索数据。
SELECT 语句
要从表中查询数据,需使用 PostgreSQL
的 SELECT
语句。
以下是 SELECT
语句的基本语法:
SELECT column1, column2, ...
FROM table_name;
在这种语法中:
- 首先,在
SELECT
关键字后列出表的一个或多个列以检索数据。多个列之间用逗号分隔。 - 其次,在
FROM
关键字中指定表名。
执行 SELECT FROM
语句时,PostgreSQL
会先计算 FROM
子句,再计算 SELECT
子句。
在 SELECT
子句中,你可以从一个列中检索数据:
SELECT column1
FROM table_name;
或者你可以从多个列中查询数据:
SELECT column1, column2
FROM table_name;
如果你想从一个表的所有列中查询数据,假设 table_name
有三列,你可以列出所有列:
SELECT column1, column2, column3
FROM table_name;
或者你可以使用 SELECT *
来查询表中所有列的数据:
SELECT *
FROM table_name;
(*)
或星标是所有列的快捷方式。 SELECT *
通常被读作 SELECT star
。
从所有表列中选择数据
以下示例使用 SELECT
语句从 inventories
表的所有列中查询数据:
SELECT * FROM inventories;
输出:
name | brand | quantity | price
------------------+---------+----------+---------iPhone 14 Pro | Apple | 10 | 999.99Galaxy S23 Ultra | Samsung | 15 | 1199.99Pixel 7 Pro | Google | 8 | 899.99Xperia 1 IV | Sony | 7 | 1299.99
它在 inventories
表中返回四行数据。
从某些列中查询数据
以下示例使用 SELECT
语句从 name
和 price
列中查询数据:
SELECTname,price
FROMinventories;
输出:
name | price
------------------+---------iPhone 14 Pro | 999.99Galaxy S23 Ultra | 1199.99Pixel 7 Pro | 899.99Xperia 1 IV | 1299.99
SELECT
语句仅返回 name
和 price
列中的数据。
使用 PostgreSQL
的 SELECT
语句转换数据
到目前为止,你已经学习了如何使用 SELECT
语句从表中提取存储的数据。SELECT
语句还可以检索并转换表中的数据。
例如,您可以使用 SELECT
语句,通过将 inventories
表中每个产品的数量乘以价格来计算库存金额:
SELECTname,quantity * price
FROMinventories;
输出:
name | ?column?
------------------+----------iPhone 14 Pro | 9999.90Galaxy S23 Ultra | 17999.85Pixel 7 Pro | 7199.92Xperia 1 IV | 9099.93
在本语句中,我们从 inventories
表的 name
列中检索数据。此外,我们还从 quantity
列和 price
列中检索数据,并同时将它们相乘。
除了乘法运算符 (*)
,你还可以使用其他数学运算符,如加法 (+)
、减法 (-)
和除法 (/)
。
如果在 SELECT
语句中对列执行计算,该列通常被称为计算列。
列别名
请注意,计算列 (quantity * price)
的输出是 ?column?
。这是 PostgreSQL
为其分配的临时列名。然而,这个名称并没有实际意义。
要为计算列 (or a regular column)
指定有意义的列名,您可以使用列别名。
列别名是您在 SELECT
语句中为列分配的临时列名。
以下是定义列别名的语法:
column_name AS column_alias
在这种语法中,你需要在列名后指定 AS
关键字和列别名。
由于 AS
关键字是可选的,您可以像这样省略它:
column_name column_alias
例如,您可以按如下方式为计算列分配列别名:
SELECTname,quantity * price AS amount
FROMinventories;
输出:
name | amount
------------------+----------iPhone 14 Pro | 9999.90Galaxy S23 Ultra | 17999.85Pixel 7 Pro | 7199.92Xperia 1 IV | 9099.93
输出显示, ?column?
变为 amount
。
或者,你也可以不使用 AS
关键字来使用列别名:
SELECTname,quantity * price amount
FROMinventories;
它返回相同的输出。
需要注意的是,你可以为任何列指定列别名,而不仅限于计算列。
例如,以下语句将列别名 product_name
分配给 name
列:
SELECTname AS product_name,quantity * price AS amount
FROMinventories;
输出:
product_name | amount
------------------+----------iPhone 14 Pro | 9999.90Galaxy S23 Ultra | 17999.85Pixel 7 Pro | 7199.92Xperia 1 IV | 9099.93
总结
- 使用
PostgreSQL
的SELECT
语句从表的一个或多个列中查询数据。 - 使用
SELECT *
查询表中所有列的数据。 PostgreSQL
先计算FROM
子句,再计算SELECT
子句。- 使用列别名在
SELECT
语句中为列分配一个临时列