PostgreSQL 教學:開始探索世界上最先進的開源數據庫
你好啊,未來的數據庫大師!我很興奮能成為你進入 PostgreSQL 世界的導遊。作為一個教電腦科學已經超過我願意承認的年數的人(我們就說我記得當軟盤真的還是軟的時候吧),我在這裡幫你解鎖這個令人驚奇的數據庫系統的力量。所以,拿起你喜歡的飲料,放鬆一下,我們來開始吧!
什麼是 PostgreSQL?
PostgreSQL,或者「Postgres」像那些時髦的人稱呼它,就像是數據庫中的瑞士軍刀。它是開源的、強大的,而且比瑜伽教練還要有彈性。但是不要讓這個嚇到你——我們會一步步來解釋。
一節簡短的历史課
PostgreSQL 自從1980年代末就存在了——在計算機歷史上簡直是古老的!它開始於加州大學伯克利分校的一個項目,並且從那時候起成長為一個全球性的社區努力。把它當作一個小數據庫,它能夠做到,而且做到了!
為什麼選擇 PostgreSQL?
你可能會想,「為什麼選 PostgreSQL?有那麼多數據庫啊!」好吧,讓我告訴你一個小故事。當我還是一個新人開發者時(是的,那時還有恐龍在地球上漫步),我偶然發現了 PostgreSQL,而且一見鐘情。以下是我的原因:
- 它是免費且開源的(誰不喜歡免費的東西?)
- 它非常強大且功能豐富
- 它支持關係(SQL)和非關係(JSON)數據
- 它遵循 ACID 原則(不,不是那種酸——它代表原子性、一致性、隔離性、持久性)
- 它有出色的文件和支援的社群
開始使用 PostgreSQL
安裝
首先,我們來將 PostgreSQL 安裝在你的電腦上。別擔心,這比組裝宜家傢俱還要容易!
為 Windows 用戶:
- 前往 PostgreSQL 下載頁面(https://www.postgresql.org/download/windows/)
- 下載安裝程序
- 運行安裝程序並按照提示操作
為 Mac 用戶:
- 最簡單的方式是使用 Homebrew。打開終端並輸入:
brew install postgresql
- 安裝完畢後,啟動 PostgreSQL 服務:
brew services start postgresql
創建你的第一個數據庫
現在,我們已經安裝了 PostgreSQL,來創建我們的第一個數據庫。我們將稱之為 "my_first_db",因為,嗯,它就是!
- 打開你的終端或命令提示符
- 輸入
psql
進入 PostgreSQL 交互式終端 - 進入後,輸入:
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