PostgreSQL - 建立資料表:初學者指南

您好,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,進入PostgreSQL的世界,特別專注於如何建立資料表。別擔心如果您之前從未寫過一行代碼——我將成為您親切導師,我們會一步步來。在本教程結束時,您將能像專家一樣建立資料表!

PostgreSQL - Create Table

PostgreSQL中的資料表是什麼?

在我們深入探讨建立資料表的細節之前,讓我們先了解資料表到底是什麼。想像一下電子表格——你知道的那些有行和列的網格?數據庫資料表與此非常相似。它是一組相關數據的集合,組織成行(也稱為記錄)和列(也稱為字段)。

例如,如果您經營一家小型圖書館,您可能會有一個名為"Books"的資料表,其列包括"Title"、"Author"、"ISBN"和"Publication Date"。此資料表中的每一行將代表您圖書館中的一本書。

建立資料表的語法

現在,讓我們看看在PostgreSQL中建立資料表的基本語法:

CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
....
);

別讓這個嚇到您!其實它比看起來簡單。讓我們分解一下:

  1. CREATE TABLE:這是告訴PostgreSQL您想要建立一個新資料表的命令。
  2. table_name:這裡您指定想要稱呼您的資料表的名稱。
  3. 在括號內,您列出您想在資料表中所有的列。
  4. 對於每一列,您指定:
  • 列名
  • 數據類型(例如,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