PostgreSQL 教學:開始探索世界上最先進的開源數據庫

你好啊,未來的數據庫大師!我很興奮能成為你進入 PostgreSQL 世界的導遊。作為一個教電腦科學已經超過我願意承認的年數的人(我們就說我記得當軟盤真的還是軟的時候吧),我在這裡幫你解鎖這個令人驚奇的數據庫系統的力量。所以,拿起你喜歡的飲料,放鬆一下,我們來開始吧!

PostgreSQL - Home

什麼是 PostgreSQL?

PostgreSQL,或者「Postgres」像那些時髦的人稱呼它,就像是數據庫中的瑞士軍刀。它是開源的、強大的,而且比瑜伽教練還要有彈性。但是不要讓這個嚇到你——我們會一步步來解釋。

一節簡短的历史課

PostgreSQL 自從1980年代末就存在了——在計算機歷史上簡直是古老的!它開始於加州大學伯克利分校的一個項目,並且從那時候起成長為一個全球性的社區努力。把它當作一個小數據庫,它能夠做到,而且做到了!

為什麼選擇 PostgreSQL?

你可能會想,「為什麼選 PostgreSQL?有那麼多數據庫啊!」好吧,讓我告訴你一個小故事。當我還是一個新人開發者時(是的,那時還有恐龍在地球上漫步),我偶然發現了 PostgreSQL,而且一見鐘情。以下是我的原因:

  1. 它是免費且開源的(誰不喜歡免費的東西?)
  2. 它非常強大且功能豐富
  3. 它支持關係(SQL)和非關係(JSON)數據
  4. 它遵循 ACID 原則(不,不是那種酸——它代表原子性、一致性、隔離性、持久性)
  5. 它有出色的文件和支援的社群

開始使用 PostgreSQL

安裝

首先,我們來將 PostgreSQL 安裝在你的電腦上。別擔心,這比組裝宜家傢俱還要容易!

為 Windows 用戶:

  1. 前往 PostgreSQL 下載頁面(https://www.postgresql.org/download/windows/
  2. 下載安裝程序
  3. 運行安裝程序並按照提示操作

為 Mac 用戶:

  1. 最簡單的方式是使用 Homebrew。打開終端並輸入:
brew install postgresql
  1. 安裝完畢後,啟動 PostgreSQL 服務:
brew services start postgresql

創建你的第一個數據庫

現在,我們已經安裝了 PostgreSQL,來創建我們的第一個數據庫。我們將稱之為 "my_first_db",因為,嗯,它就是!

  1. 打開你的終端或命令提示符
  2. 輸入 psql 進入 PostgreSQL 交互式終端
  3. 進入後,輸入:
CREATE DATABASE my_first_db;

恭喜你!你剛剛創建了你的第一個數據庫。我仍然記得創建我的第一個數據庫時的興奮——就像是數字神,用幾個按鍵創造世界!

創建表格

現在,我們有了數據庫,來創建一個表格。我們將創建一個簡單的 "students" 表格:

CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INT,
grade CHAR(1)
);

讓我們分解一下:

  • CREATE TABLE students:這告訴 PostgreSQL 我們想要創建一個名為 "students" 的新表
  • id SERIAL PRIMARY KEY:這創建一個自增的 ID 欄位
  • name VARCHAR(100):這創建一個名稱欄位,允許最多100個字符
  • age INT:這創建一個年齡欄位,存儲整數
  • grade CHAR(1):這創建一個年級欄位,存儲單個字符

插入數據

現在,讓我們在表中添加一些數據:

INSERT INTO students (name, age, grade)
VALUES ('Alice', 18, 'A'),
('Bob', 17, 'B'),
('Charlie', 19, 'C');

這個命令在我們的表中插入了三名學生。注意我們沒有指定 id —— PostgreSQL 自動為我們處理這個,感謝 SERIAL 數據類型。

查詢數據

現在來到有趣的部分——檢索我們的數據!從一個簡單的查詢開始:

SELECT * FROM students;

這將顯示我們 students 表中的所有數據。但是我們只想看 'A' 級的學生怎麼辦?

SELECT * FROM students WHERE grade = 'A';

或者也許我們想按照年齡查看學生:

SELECT * FROM students ORDER BY age;

高級功能

PostgreSQL 不僅僅是存儲和檢索數據——它還擁有許多先進功能,使它成為開發者的最佳夥伴。讓我們快速看一下幾個:

JSON 支持

PostgreSQL 對 JSON 數據有出色的支持。你可以直接在列中存儲 JSON:

CREATE TABLE events (
id SERIAL PRIMARY KEY,
data JSONB
);

INSERT INTO events (data)
VALUES ('{"name": "Conference", "date": "2023-09-15", "attendees": 500}');

然後這樣查詢:

SELECT data->'name' AS event_name FROM events;

全文搜索

PostgreSQL 有內置的全文搜索功能。這裡有一個快速示例:

CREATE TABLE articles (
id SERIAL PRIMARY KEY,
title TEXT,
body TEXT
);

INSERT INTO articles (title, body)
VALUES ('PostgreSQL Basics', 'PostgreSQL is a powerful, open-source database system...');

SELECT title
FROM articles
WHERE to_tsvector('english', body) @@ to_tsquery('english', 'powerful & database');

這個查詢會找到所有正文包含 "powerful" 和 "database" 這兩個詞的文章。

結論

我們只是擦傷了 PostgreSQL 能力的表面,但我希望這個教學能讓你體會到它的力量和靈活性。記住,精通 PostgreSQL 是一個旅程,而不是一個目的地。持續練習,持續探索,並不要害怕犯錯誤——這是我們學習的方式!

當我們結束時,我會想起我最喜歡的計算機科學家之一,Grace Hopper 的名言:「語言中最危險的詞語是,'我們一直都是這樣做的'。」PostgreSQL 體現了這種創新和進步的精神,不斷推動數據庫的邊界。

所以,年輕的數據學徒們,前進吧,願你的查詢與你同在!

PostgreSQL 方法 描述
CREATE DATABASE 創建一個新的數據庫
CREATE TABLE 創建一個新表
INSERT INTO 在表中插入新數據
SELECT 從表中檢索數據
UPDATE 修改表中現有的數據
DELETE 從表中刪除數據
ALTER TABLE 修改現有表的結構
DROP TABLE 刪除一個表
CREATE INDEX 在表的一個或多個列上創建索引
GRANT 給予用戶特定的權限
REVOKE 從用戶中撤銷特定的權限
BEGIN 開始一個交易區塊
COMMIT 提交當前的交易
ROLLBACK 回滾當前的交易
CREATE VIEW 基於 SELECT 語句的結果創建一個視圖
CREATE FUNCTION 創建一個新函數
CREATE TRIGGER 創建一個新觸發器

Credits: Image by storyset