在適用於PostgreSQL的 Azure 資料庫中查詢關係型數據
PostgreSQL 提供許多工具,可讓您用來連線至 PostgreSQL 資料庫並執行查詢。 這些工具包括 pgAdmin 圖形化使用者介面,以及 psql 命令列公用程式。 此外,也有大量的協力廠商公用程式可供您使用。
在這個單元中,你會看到如何用 psql 從命令列連接到 Azure Database for PostgreSQL 中運行的 PostgreSQL 資料庫。
取出適用於 PostgreSQL 的 Azure 資料庫的連線資訊
若要連線至 PostgreSQL 資料庫,您需要伺服器的名稱,以及擁有伺服器連線權限之帳戶的認證。 您可以在 Azure 入口網站中適用於 PostgreSQL 的 Azure 資料庫執行個體的 [概觀] 頁面上,找到伺服器名稱及預設系統管理員帳戶的名稱。 請連絡您的系統管理員以取得密碼。
和 Azure SQL Database 相同,您必須開啟 PostgreSQL 防火牆,來使用戶端應用程式能夠連線至該服務。 如需詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫中的防火牆規則 - 單一伺服器 \(部分機器翻譯\)
使用 psql 來查詢資料庫
psql 公用程式是在 Azure Cloud Shell 中提供使用。 您也可以從桌上型電腦上的命令提示字元加以執行,但您必須下載並安裝 psql 用戶端。 您可以在 postgresql.org \(英文\) 網站上找到 psql 用戶端。
若要使用 psql 連線至適用於 PostgreSQL 的 Azure 資料庫,請執行下列作業:
執行下列命令。 請務必使用來自 Azure 入口網站的值取代伺服器名稱和系統管理員名稱。
psql --host=<server-name>.postgres.database.azure.com --username=<admin-user>@<server-name> --dbname=postgres在系統提示時,輸入您的密碼。
備註
postgres 是隨 Azure Database for PostgreSQL 建立的預設管理資料庫。 您可以從 psql 使用 CREATE DATABASE 命令建立其他資料庫。
如果您的連線成功,將會看到
postgres=>的提示。您可以使用下列 SQL 命令建立新的資料庫:
CREATE DATABASE "Adventureworks";備註
您可以跨數行輸入命令。 分號字元會作為命令結束字元。
在 psql 內,您可以執行
\c Adventureworks命令以連線至資料庫。您可以使用 CREATE 和 INSERT 命令來建立資料表及插入資料,如下列範例所示:
CREATE TABLE PEOPLE(NAME TEXT NOT NULL, AGE INT NOT NULL); INSERT INTO PEOPLE(NAME, AGE) VALUES ('Bob', 35); INSERT INTO PEOPLE(NAME, AGE) VALUES ('Sarah', 28); CREATE TABLE LOCATIONS(CITY TEXT NOT NULL, STATE TEXT NOT NULL); INSERT INTO LOCATIONS(CITY, STATE) VALUES ('New York', 'NY'); INSERT INTO LOCATIONS(CITY, STATE) VALUES ('Flint', 'MI');您可以使用下列 SQL 命令來取出您剛剛新增的資料:
SELECT * FROM PEOPLE; SELECT * FROM LOCATIONS;其他 psql 命令包括:
- 使用
\l列出資料庫。 - 使用
\dt列出目前資料庫中的資料表。
- 使用
您可以使用
\q命令來結束 psql。
下列範例會將新的資料表新增至資料庫並插入四個資料列。
-- Create a new table called 'customers'
CREATE TABLE customers(
customer_id SERIAL PRIMARY KEY,
name VARCHAR (50) NOT NULL,
location VARCHAR (50) NOT NULL,
email VARCHAR (50) NOT NULL
);
-- Insert rows into table 'customers'
INSERT INTO customers
(customer_id, name, location, email)
VALUES
( 1, 'Orlando', 'Australia', ''),
( 2, 'Keith', 'India', 'keith0@adventure-works.com'),
( 3, 'Donna', 'Germany', 'donna0@adventure-works.com'),
( 4, 'Janet', 'United States','janet1@adventure-works.com');
要查詢資料,請輸入 SELECT 陳述句:
-- Select rows from table 'customers'
SELECT * FROM customers;