摘要:在本教程中,你將學習如何使用 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
語句中為列分配一個臨時列