Day 17 開始使用 psql 操作 PostgreSQL,並陸續建立 Database、Table,以及使用 SQL 新增、查詢、修改和刪除資料。
雖然使用終端機操作很方便,但資料一多之後,只靠指令查看資料可能會比較不直覺。
今天要使用 pgAdmin。
pgAdmin 是 PostgreSQL 常見的圖形化管理工具,可以透過介面查看:
Server
↓
Database
↓
Schema
↓
Table
↓
資料
除了查看資料之外,也可以直接使用 Query Tool 執行 SQL。
首先確認 Docker 中的 PostgreSQL Container 是否正在執行:
docker ps
如果 my-postgres 沒有啟動,可以使用:
docker start my-postgres
之前建立 Container 時有設定:
-p 5432:5432
因此 pgAdmin 可以透過電腦的 5432 Port 連線到 PostgreSQL。
開啟 pgAdmin 後,在左側的 Servers 上按右鍵:
Register
↓
Server
接著輸入連線資訊。
Name 可以自己設定,例如:
Docker PostgreSQL
接著填入:
Host name/address:localhost
Port:5432
Maintenance database:postgres
Username:postgres
Password:123456
如果前面有自訂 POSTGRES_USER,Username 就要改成自己設定的帳號。
完成後按下 Save。
目前架構是:
pgAdmin
│
↓
localhost:5432
│
↓
Docker Port Mapping
│
↓
PostgreSQL Container
因為 pgAdmin 是從自己的電腦連線,而 PostgreSQL Container 已經將 5432 Port 對應到主機,所以可以使用:
localhost
找到 PostgreSQL。
這也把 Day 7 學過的 Port Mapping 實際應用到了資料庫連線。
連線成功後,可以從左側慢慢展開:
Servers
└── Docker PostgreSQL
└── Databases
└── schedule_db
└── Schemas
└── public
└── Tables
└── employees
這裡就可以找到 Day 18 建立的 employees Table。
使用圖形化介面後,Database、Schema 和 Table 之間的關係也變得更加清楚。
pgAdmin 也可以直接執行 SQL。
選擇 schedule_db 後開啟 Query Tool,輸入:
SELECT * FROM employees;
按下執行後,就可以直接在下方看到查詢結果。
也可以執行之前學過的:
INSERT INTO employees (name, position, hire_date)
VALUES ('小雨', '兼職', '2026-09-19');
接著再次查詢:
SELECT * FROM employees;
就可以看到剛新增的資料。
兩者都可以操作 PostgreSQL,只是操作方式不同。
| 工具 | 操作方式 | 特點 |
|---|---|---|
| psql | 命令列 | 快速、直接 |
| pgAdmin | 圖形化介面 | 資料結構比較直覺 |
所以並不是用了 pgAdmin 就不需要學 SQL。
pgAdmin 只是提供比較方便的操作介面,真正對資料庫進行查詢時,SQL 依然非常重要。
docker ps 確認 PostgreSQL 是否執行employees → ✅ 確認目前查看的是 schedule_db
localhost 仍無法連線 → ✅ 確認 PostgreSQL Container 有設定 -p 5432:5432
schedule_db
employees TableSELECT
今天第一次使用 pgAdmin 連線到 Docker 裡面的 PostgreSQL。之前都是透過 psql 在終端機操作,雖然可以完成所有基本功能,但使用 pgAdmin 後,Database 和 Table 的結構看起來更加直覺。
連線的過程也讓我再次複習了之前學過的 Port Mapping。因為 PostgreSQL Container 有設定 5432:5432,所以 pgAdmin 才能透過 localhost:5432 連進資料庫。
目前已經可以透過 psql 和 pgAdmin 兩種方式操作 PostgreSQL。接下來要開始學習 Docker Compose,把原本很長的 docker run 設定整理到一個檔案中,讓 Docker 環境建立起來更方便。