PostgreSQL 教學

前端工程師邁向後端之路 3 – PostgreSQL 教學:架設 database server

PostgreSQL 教學

在上一篇介紹完 SQL 和 noSQL 的差別之後,接下來就要進到實作的部分了,架設一個 database server ,這篇以 PostgreSQL 為例。

PostgreSQL ( 發音:Post-Gres-Q-L ) 是一個免費且完整開放原始碼的資料庫系統,不僅是最常用的幾個 RDBMS 之一,還有針對大量數據處理推出 JSONB 的格式,算是有針對 noSQL 優化的 RDBMS。

1. database 架構

在架設 PostgreSQL server 之前先來複習一下 database 的架構圖吧!

PostgreSQL 教學

一般來說,database client 會透過 CLI ( terminal ) 或是 GUI 來對 database server 下 SQL 指令,接收到 SQL 指令的 database server 確認該 SQL 指令是有效的話則會執行,並對存在硬碟的資料做 CRUD,如果單純讀取資料的話則會將資料回傳給 database client。

2. 架設 PostgreSQL server – pg-sql.com

嚴格來說這個方法不算自己架設,但因為還是可以練習 client 的行為所以把他列入其中一個方法。

pg-sql.com 是一個 PostgreSQL server 的網站,他的網頁扮演的就是 database client 的角色,當你在網頁上輸入 SQL 指令就可以對 PostgreSQL server 裡的資料做 CRUD 的操作。

接著就用 SQL 來測試一下是否真的成功和 PostgreSQL server 溝通:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR,
  age INTEGER,
  height INTEGER,
  weight INTEGER
);
PostgreSQL 教學

執行後會在下方顯示執行的結果,右方則是會列出執行過的 SQL 指令。

接著試著在剛剛 create 的 table 新增資料:

INSERT INTO users (username, age, height, weight)
VALUES ('Jimmy', 18, 180, 75);

取得 users 的所有資料:

SELECT * FROM users;
PostgreSQL 教學

可以看到成功取得資料!不過這個方法主要是用來練習 SQL 指令居多,沒辦法真實的用在 web appplication 上。

3. 架設 PostgreSQL server – Postgres.app

Postgres.app 是一個可以快速在本機上架設 PostgreSQL server 的 app 。

3.1 安裝 Postgres.app

到該網站下載並安裝 Postgres.app。

PostgreSQL 教學

3.2 init PostgreSQL server

安裝完後打開 Postgres.app ,右上角有個 initialize , Postgres.app 會自動幫你架設 PostgreSQL server。

PostgreSQL 教學

initialize 後會發現 Postgres.app 幫我們架設好 database server 並且新增了 database。

PostgreSQL 教學

要注意的是這三個 database 其實都是在同一個叫做 localhost 的 database server 上,點擊 Server Settings 可以看到關於 PostgreSQL 設定檔及資料的檔案路徑。

3.3 透過 CLI 操作 database

如果你常用的 CLI 不是內建的 terminal ,那可以先在 Preferences 的地方做設定:

PostgreSQL 教學

接著點擊兩下想要操作的 database ,Postgres.app 就會自動幫你進到該 database 的 SQL shell:

PostgreSQL 教學

可以直接在這個 SQL shell 下 SQL 指令來操作 database,那就跟剛剛一樣直接寫 SQL 來測試吧!

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR,
  age INTEGER,
  height INTEGER,
  weight INTEGER
);

INSERT INTO users (username, age, height, weight)
VALUES ('Jimmy', 18, 180, 75);

SELECT * FROM users;

可以看到最後成功得到結果,代表成功對 PostgreSQL server 下 SQL 指令:

jimmy=# SELECT * FROM users;
 id | username | age | height | weight
----+----------+-----+--------+--------
  1 | Jimmy    |  18 |    180 |     75
(1 row)

3.4 透過 GUI 操作 database

雖然使用 CLI 就可以和 database 溝通了,但在開發的時候如果資料量十分巨大或是 table 的 column 很多的話,在 termianl 上並不好看 data,因此通常開發的時候會利用 GUI 來輔助開發 database 相關的功能。

pgAdmin 是 PostgreSQL 的 GUI ,接著就來實作怎麼將 pgAdmin 和 PostgreSQL server 連線並且操作吧。

3.4.1 安裝 pgAdmin

首先到 pgAdmin 的官網選擇自己的作業系統並點擊最新版本的 pgAdmin:

PostgreSQL 教學

點擊 .dmg 檔下載:

PostgreSQL 教學

接著打開安裝完成的 pgAdmin 第一次打開會需要設定密碼,以後每次打開 pgAdmin 都會根據第一次設定的密碼來驗證。

PostgreSQL 教學

3.4.2 與 PostgreSQL server 連線

在開始設定連線之前要先確保你的 Postgres.app 是打開的狀態,因為如果你的 PostgreSQL server 並不是運作的狀態,當然也就沒辦法透過連線來操作裡面的 database。

在 Servers 點擊右鍵並且 create Server:

PostgreSQL 教學

在 General 的 Name 填上 localhost ,在 Connection 的 Username 填上目前電腦的使用者名稱 ( 如果不知道的話可以在 terminal 執行 whoami 的指令 ),password 因為 Postgres.app 預設是沒有 password ,所以不用填,之後點擊 database 雖然仍會跳出輸入密碼的框框,但直接按 enter 即可登入:

PostgreSQL 教學
PostgreSQL 教學

按下 Save 後就會看到成功和 localhost 的 PostgreSQL server 連上了:

PostgreSQL 教學

3.4.3 在 pgAdmin 下 SQL 指令

接著先點擊想操作的 database ,再點擊 SQL 的圖案如下:

PostgreSQL 教學

pgAdmin 就會打開 Query Editor 讓你對 database 下 SQL 指令。和剛剛一樣測試一下是否可以操作 database ,不過因為剛剛已經在 jimmy 的 database 新增了 users 的 table ,所以如果要再新增一次的話記得要先 drop table:

PostgreSQL 教學

一樣可以拿到結果代表成功操作 database 了!

3.4.4 在 pgAdmin 檢視所有 table

展開 Database -> 點擊要檢視的 database -> Schemas -> public -> Tables 就可以看到目前所有的 tables 了:

PostgreSQL 教學

接著再要檢視的 table 點擊右鍵 -> View/Edit Data -> All Rows 就可以看到這個 table 所有的 data 了:

PostgreSQL 教學

以上就是 pgAdmin 一些基本的操作啦~

3.5 解除安裝 Postgres.app

接下來簡單記錄一下如果要解除安裝 Postgres.app 的步驟。

刪除位於以下路徑的資料夾:` ~/Library/Application Support/Postgres`

接著執行以下指令:

$ defaults delete com.postgresapp.Postgres2
$ sudo rm /etc/paths.d/postgresapp

4. 架設 PostgreSQL server – postgresql

我們可以直接安裝 postgresql 在 localhost 上來架設 PostgreSQL server ,而真正部署 PostgreSQL server 時,這也是最常見的一種方式 ( 另一種是 docker )

4.1 安裝 postgresql

可以到官網下載檔案後安裝,也可以直接用套件管理工具安裝,這邊直接用 Homebrew 安裝:

$ brew install postgresql

接著可以用以下指令來確認安裝的 postgresql 版本 ( V 記得大寫哦~ ):

$ postgres -V
postgres (PostgreSQL) 13.3

4.2 啟動 PostgreSQL server

接著跟剛剛啟動 Postgres.app 一樣,我們必須啟動 postgresql 才可以用 client 來對 PostgreSQL server 的資料做操作。

$ brew services start postgresql
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

使用 postgresql 的一個缺點就是 PostgreSQL server 並不會自動關閉,因此不需要使用 PostgreSQL server 的時候記得手動下指令來關閉 server:

$ brew services stop postgresql
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)

4.3 透過 CLI 操作 database

接著我們可以執行以下指令來開啟 SQL shell 開始操作 database 了:

$ psql postgres

如果執行上述指令時遇到以下的 error message: psql: error: FATAL: could not open file “global/pg_filenode.map”: Operation not permitted ,那可能是因為剛剛 Postgres.app 的 process 還在佔用 postgresql 預設的 port – 5432 ,需要先把 port 5432 上的所有 process 先 kill 掉:

$ sudo lsof -ti tcp:5432 | xargs kill

再重新執行 psql postgres 就可以順利進到 SQL shell 了。

PostgreSQL 教學

接著就可以和剛剛一樣直接執行 SQL 指令來對 PostgreSQL server 進行操作:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR,
  age INTEGER,
  height INTEGER,
  weight INTEGER
);

INSERT INTO users (username, age, height, weight)
VALUES ('Jimmy', 18, 180, 75);

SELECT * FROM users;

可以看到正確拿到剛剛新增的資料,代表成功對 database 進行操作:

PostgreSQL 教學

4.4 透過 GUI 操作 database

接著一樣可以用 pgAdmin 來和 PostgreSQL server 連線操作 database,這邊記得先刪除剛剛設定的 server ,再重新 create server,並按照下面的設定:

PostgreSQL 教學
PostgreSQL 教學

一樣就可以連線到 PostgreSQL server 了,要對 database 進行操作的話就和 Postgres.app 的部分一樣,這邊就不重複操作了。

5. 總結

以上就是常見的幾種架設 PostgreSQL server 的方式,這邊只是一些最簡單的設定,若是要真的部署到 server 上,其實還要進行許多額外的設定,不過筆者目前也還沒有真的部署到 server 上的經驗,等之後對 database 比較熟之後再繼續整理,以免誤人子弟🤣 還有一種比較常見的方式是 docker ,不過最近才剛學,還需要花一點時間整理筆記,希望之後可以補在這篇文章下面哈哈

架設完 database server 後,就可以來實作我們的 backend server 了:前端工程師邁向後端之路 4 – 用 Node.js 架設 http server

6. 參考資料

SQL and PostgreSQL: The Complete Developer’s Guide
Postgres.app – the easiest way to get started with PostgreSQL on the Mac
Setting up a PostgreSQL Database on Mac
How to View Which Postgres Version is Running

如果覺得我的文章有幫助的話,歡迎幫我的粉專按讚哦~謝謝你!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top