PostgreSQL - 語法

你好,未來的數據庫魔法師!今天,我們將進入PostgreSQL語法的神奇世界。別擔心你對編程是新手——我將成為你這次冒險的友好指南。所以,拿起你的虛擬魔杖(鍵盤),讓我們開始吧!

PostgreSQL - Syntax

SQL 認語句

在我們深入PostgreSQL的具體內容之前,讓我們先來谈谈SQL語句的一般情況。SQL,或結構化查詢語言,就像是數據庫的魔法書。它是我們與數據庫進行通信並讓它按照我們的要求行事的语言。

基本結構

一個SQL語句通常遵循以下結構:

COMMAND action_to_perform
[ON object]
[WHERE conditions];

讓我們來分解這個結構:

  1. COMMAND:這是你想要做的事情(如SELECT、INSERT、UPDATE等)
  2. action_to_perform:這指定了你用命令在做什麼
  3. ON object:這是可選的,指定了你正在與哪個數據庫對象交互
  4. WHERE conditions:這也是可選的,允許你設置特定條件

範例

這裡有一個簡單的範例:

SELECT first_name, last_name
FROM employees
WHERE department = 'IT';

在這個咒語……我是說,語句中:

  • SELECT 是我們的命令
  • first_name, last_name 是我們想要检索的
  • FROM employees 告訴我們我們從哪個表中獲取數據
  • WHERE department = 'IT' 是我們的條件,過濾出IT部門的員工

PostgreSQL SQL 命令

現在我們已經介紹了基本知識,讓我們來看看一些特定的PostgreSQL命令。將這些命令看作是你SQL魔法書中的不同咒語!

數據定義語言(DDL)命令

這些命令用於定義和修改你的數據庫對象結構。

命令 描述 範例
CREATE 創建一個新的數據庫對象 CREATE TABLE students (id INT, name VARCHAR(50));
ALTER 修改一個現有的數據庫對象 ALTER TABLE students ADD COLUMN age INT;
DROP 删除一個數據庫對象 DROP TABLE students;
TRUNCATE 從表中刪除所有數據 TRUNCATE TABLE students;

讓我們來看看CREATE命令的更詳細範例:

CREATE TABLE wizards (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
house VARCHAR(50),
wand_type VARCHAR(50),
enrollment_date DATE
);

這將創建一個名為'wizards'的表,其中包含id、name、house、魔杖類型和入學日期等列。id列的SERIAL類型意味著它將為每個新條目自動遞增。

數據操作語言(DML)命令

這些是我們用來在表內數據中工作的咒語……呃,命令。

命令 描述 範例
SELECT 從一個或多個表中检索數據 SELECT * FROM wizards;
INSERT 將新數據添加到表中 INSERT INTO wizards (name, house) VALUES ('Harry Potter', 'Gryffindor');
UPDATE 修改表中現有的數據 UPDATE wizards SET house = 'Slytherin' WHERE name = 'Draco Malfoy';
DELETE 從表中刪除數據 DELETE FROM wizards WHERE name = 'Voldemort';

讓我們來看看一個更複雜的SELECT語句:

SELECT w.name, w.house, s.subject
FROM wizards w
JOIN subjects s ON w.id = s.wizard_id
WHERE w.house = 'Ravenclaw'
ORDER BY w.name;

這個查詢:

  1. 選擇巫師的名字和宿舍,以及他們的學科
  2. 將巫師表與學科表連接
  3. 只過濾出雷文克勞宿舍的學生
  4. 按巫師的名字對結果進行排序

數據控制語言(DCL)命令

這些命令就像是數據庫的安全咒語,控制訪問和權限。

命令 描述 範例
GRANT 給予用戶特定的權限 GRANT SELECT ON wizards TO student_user;
REVOKE 從用戶中刪除特定的權限 REVOKE INSERT ON wizards FROM student_user;

事務控制命令

這些命令幫助我們管理事務——應該一起執行的一組SQL語句。

命令 描述 範例
BEGIN 開始一個事務 BEGIN;
COMMIT 儲存事務的更改 COMMIT;
ROLLBACK 撤銷事務的更改 ROLLBACK;

以下是如何在實踐中使用這些命令的範例:

BEGIN;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT;

這個事務將從賬戶1轉移100個單位到賬戶2。如果這件事的任何一部分失敗,我們可以使用ROLLBACK來撤銷所有的更改。

实用命令

PostgreSQL還有一些方便的實用命令:

命令 描述 範例
EXPLAIN 顯示語句的執行計劃 EXPLAIN SELECT * FROM wizards;
VACUUM 清理並可選地分析數據庫 VACUUM wizards;

EXPLAIN命令特別有用於優化你的查詢。這就像擁有一個水晶球,可以顯示PostgreSQL計劃如何執行你的查詢!

EXPLAIN SELECT * FROM wizards WHERE house = 'Hufflepuff';

這將顯示查詢計劃,幫助你理解PostgreSQL是如何處理你的查詢,以及你可能優化的地方。

年輕的SQL學徒們,這就是PostgreSQL的基本語法和命令。記住,像任何好的魔法一樣,精通SQL需要練習。不要害怕嘗試和嘗試不同的命令。在你知道之前,你將能夠輕鬆地召喚複雜的查詢!

下次,我們將深入數據庫設計和進階查詢的神秘藝術。在那之前,願你的查詢迅速,結果豐富!

Credits: Image by storyset