在適用於PostgreSQL的 Azure 資料庫中查詢關係型數據

已完成

PostgreSQL 提供許多工具,可讓您用來連線至 PostgreSQL 資料庫並執行查詢。 這些工具包括 pgAdmin 圖形化使用者介面,以及 psql 命令列公用程式。 此外,也有大量的協力廠商公用程式可供您使用。

在這個單元中,你會看到如何用 psql 從命令列連接到 Azure Database for PostgreSQL 中運行的 PostgreSQL 資料庫。

取出適用於 PostgreSQL 的 Azure 資料庫的連線資訊

若要連線至 PostgreSQL 資料庫,您需要伺服器的名稱,以及擁有伺服器連線權限之帳戶的認證。 您可以在 Azure 入口網站中適用於 PostgreSQL 的 Azure 資料庫執行個體的 [概觀] 頁面上,找到伺服器名稱及預設系統管理員帳戶的名稱。 請連絡您的系統管理員以取得密碼。

Azure 入口網站中 Azure Database for PostgreSQL 執行個體的概觀頁面

和 Azure SQL Database 相同,您必須開啟 PostgreSQL 防火牆,來使用戶端應用程式能夠連線至該服務。 如需詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫中的防火牆規則 - 單一伺服器 \(部分機器翻譯\)

使用 psql 來查詢資料庫

psql 公用程式是在 Azure Cloud Shell 中提供使用。 您也可以從桌上型電腦上的命令提示字元加以執行,但您必須下載並安裝 psql 用戶端。 您可以在 postgresql.org \(英文\) 網站上找到 psql 用戶端。

若要使用 psql 連線至適用於 PostgreSQL 的 Azure 資料庫,請執行下列作業:

  1. 執行下列命令。 請務必使用來自 Azure 入口網站的值取代伺服器名稱和系統管理員名稱。

    psql --host=<server-name>.postgres.database.azure.com --username=<admin-user>@<server-name> --dbname=postgres
    

    在系統提示時,輸入您的密碼。

    備註

    postgres 是隨 Azure Database for PostgreSQL 建立的預設管理資料庫。 您可以從 psql 使用 CREATE DATABASE 命令建立其他資料庫。

  2. 如果您的連線成功,將會看到 postgres=> 的提示。

  3. 您可以使用下列 SQL 命令建立新的資料庫:

    CREATE DATABASE "Adventureworks";
    

    備註

    您可以跨數行輸入命令。 分號字元會作為命令結束字元。

  4. 在 psql 內,您可以執行 \c Adventureworks 命令以連線至資料庫。

  5. 您可以使用 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');
    
  6. 您可以使用下列 SQL 命令來取出您剛剛新增的資料:

    SELECT * FROM PEOPLE;
    SELECT * FROM LOCATIONS;
    
  7. 其他 psql 命令包括:

    • 使用 \l 列出資料庫。
    • 使用 \dt 列出目前資料庫中的資料表。
  8. 您可以使用 \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;