PostgreSQL - 建立資料表:初學者指南
您好,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,進入PostgreSQL的世界,特別專注於如何建立資料表。別擔心如果您之前從未寫過一行代碼——我將成為您親切導師,我們會一步步來。在本教程結束時,您將能像專家一樣建立資料表!
PostgreSQL中的資料表是什麼?
在我們深入探讨建立資料表的細節之前,讓我們先了解資料表到底是什麼。想像一下電子表格——你知道的那些有行和列的網格?數據庫資料表與此非常相似。它是一組相關數據的集合,組織成行(也稱為記錄)和列(也稱為字段)。
例如,如果您經營一家小型圖書館,您可能會有一個名為"Books"的資料表,其列包括"Title"、"Author"、"ISBN"和"Publication Date"。此資料表中的每一行將代表您圖書館中的一本書。
建立資料表的語法
現在,讓我們看看在PostgreSQL中建立資料表的基本語法:
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
....
);
別讓這個嚇到您!其實它比看起來簡單。讓我們分解一下:
-
CREATE TABLE
:這是告訴PostgreSQL您想要建立一個新資料表的命令。 -
table_name
:這裡您指定想要稱呼您的資料表的名稱。 - 在括號內,您列出您想在資料表中所有的列。
- 對於每一列,您指定:
- 列名
- 數據類型(例如,INTEGER代表整數,TEXT代表字符串等)
- 任何約束(例如,NOT NULL表示列必須始終有值)
示例:讓我們建立一些資料表!
示例 1:一個簡單的Books資料表
讓我們從一個簡單的示例開始。我們將為我們假想的圖書館建立一個資料表:
CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publication_date DATE,
isbn VARCHAR(13) UNIQUE
);
讓我們分解這個:
-
book_id
:這是每本書的唯一標識符。SERIAL表示它將為每本新增的書自動遞增。 -
title
:這可以長達100個字符,且不能為空(NOT NULL)。 -
author
:最多50個字符,也不能為空。 -
publication_date
:這是可選的(我們沒有指定NOT NULL)。 -
isbn
:這對於每本書來說都是唯一的。
示例 2:一個更複雜的Customers資料表
現在,讓我們建立一個稍微複雜一點的客戶資料表:
CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
registration_date DATE DEFAULT CURRENT_DATE,
loyalty_points INTEGER DEFAULT 0 CHECK (loyalty_points >= 0)
);
這個資料表引入了一些新概念:
-
DEFAULT
:我們對registration_date
使用這個,以在添加新客戶時自動設置為當前日期。 -
CHECK
:這確保loyalty_points
永遠不會是負數。
PostgreSQL中的數據類型
PostgreSQL提供了多種數據類型。以下是一些常見的:
數據類型 | 描述 | 示例 |
---|---|---|
INTEGER | 整數 | 42 |
SERIAL | 自動遞增的整數 | 自動分配 |
VARCHAR(n) | 長度可變的字符串,最多n個字符 | 'Hello, World!' |
TEXT | 長度可變的字符串,無限制長度 | '一段非常長的文本...' |
DATE | 日期(無時間) | '2023-06-15' |
TIMESTAMP | 日期和時間 | '2023-06-15 14:30:00' |
BOOLEAN | 布爾值(真/假) | TRUE 或 FALSE |
NUMERIC(p,s) | 精確數字,總共p位(小數點後s位) | 123.45 |
PostgreSQL中的約束
約束是我們對列設置的規則。以下是一些常見的:
約束 | 描述 |
---|---|
NOT NULL | 列不能包含null值 |
UNIQUE | 列中的所有值必須不同 |
PRIMARY KEY | 唯一標識表中的每一行 |
FOREIGN KEY | 確保兩個表之間的引用完整性 |
CHECK | 確保列中的所有值滿足特定條件 |
DEFAULT | 為列設置默認值 |
一點點更多示例
示例 3:帶有外鍵的表
讓我們建立一個引用我們'customers'表的'orders'表:
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(customer_id),
order_date DATE DEFAULT CURRENT_DATE,
total_amount NUMERIC(10,2) CHECK (total_amount > 0)
);
這個表有一個外鍵(customer_id
),它引用customers
表,確保每個訂單都與有效的客戶相關聯。
示例 4:帶有複合主鍵的表
有時候,您可能想要一個由多個列組成的主鍵:
CREATE TABLE book_authors (
book_id INTEGER REFERENCES books(book_id),
author_id INTEGER REFERENCES authors(author_id),
PRIMARY KEY (book_id, author_id)
);
這個表可能用於處理具有多個作者的書籍,或者多次著作的作者。
結論
恭喜您!您已經踏出了進入PostgreSQL資料表創建世界的第一步。記住,熟能生巧。嘗試為不同的情景創建資料表——也許是音樂庫,食譜集,或者您最喜歡的遊戲數據庫。
不要害怕嘗試和犯錯誤——這是我們學習的方式!並且永遠記住:在數據庫的世界裡,您有創建、修改甚至刪除整個數據世界的力量。使用這種力量要謹慎,年輕的帕德瓦!
開心地編程,願PostgreSQL與您同在!
Credits: Image by storyset