CodeGym /課程 /SQL SELF /建立資料表的基礎: CREATE TABLE

建立資料表的基礎: CREATE TABLE

SQL SELF
等級 17 , 課堂 0
開放

在前幾堂課我們已經打下關於關聯式資料庫和 PostgreSQL 的基礎,學會怎麼用 psqlpgAdmin,也會建立和管理資料庫。現在輪到我們來建立關聯式資料庫的主要「建材」——資料表啦。資料表就是用來存放所有資訊的地方,之後我們可以對這些資料做篩選、排序或合併。

在 PostgreSQL 裡可以用 CREATE TABLE 指令來建立資料表。這個指令會描述資料表的結構:它的名字、欄位還有每個欄位的資料型別。

指令的基本結構

基本語法長這樣:

CREATE TABLE 資料表 (
    欄位1 資料型別 constraints,
    欄位2 資料型別 constraints,
    ...
);

來拆解一下:

  • 資料表 – 資料表的名字(例如 students)。
  • 欄位1 – 欄位名稱(例如 idname)。
  • 資料型別 – 欄位的資料型別(例如 INTEGERVARCHAR)。
  • constraints – 資料的限制條件(例如 NOT NULLPRIMARY KEY)。

現在我們來建立第一個資料表。

建立資料表的範例

情境:在學習用的資料庫裡要存學生的資料。為此我們來建立一個 students 資料表,欄位如下:

  • id:學生的唯一識別碼(自動遞增);
  • name:學生名字(字串長度最多 100 個字元);
  • age:學生年齡(正整數)。
CREATE TABLE students (
    id SERIAL PRIMARY KEY,  -- 學生唯一 ID
    name VARCHAR(100),      -- 名字
    age INTEGER             -- 年齡
);

這裡發生了什麼:

  1. id SERIAL PRIMARY KEY:建立一個 id 欄位,會自動產生唯一的數字(1, 2, 3...)給每一列,同時它也是這個資料表的主鍵。
  2. name VARCHAR(100):建立一個文字欄位,VARCHAR(100) 代表字串最多 100 個字元。
  3. age INTEGER:建立一個數字欄位來存年齡。

現在如果你在 psqlpgAdmin 執行這個指令,students 資料表就會被建立。

欄位的資料型別

建立資料表時,選對每個欄位的資料型別很重要。PostgreSQL 有很多型別可以選,這裡先介紹最常用的幾個。

資料型別 說明 範例值
INTEGER 整數。很適合用來存年齡、數量、識別碼。 1, 42, 100
VARCHAR(n) 長度最多 n 的字串。很適合有限長度的文字。 'Alice', 'Bob'
TEXT 沒有限制長度的字串。用來存很長的文字(像是產品描述)。 'Very long text...'
DATE 只有日期沒有時間。用來記錄生日、事件日期。 2023-10-12
BOOLEAN 布林值:TRUEFALSE。常用來當旗標(像是完成/未完成)。 TRUE, FALSE

怎麼選資料型別

  • 如果你要存數字——用 INTEGER
  • 有長度限制的字串——選 VARCHAR(n)
  • 沒有限制的文字——用 TEXT
  • 日期和時間就用 DATETIMESTAMP

範例:建立 courses 資料表

假設我們的資料庫也要存課程的資訊。每個課程有:

  • id:唯一識別碼;
  • name:課程名稱(最多 100 個字元的字串);
  • description:課程描述(長文字);
  • start_date:課程開始日期。

SQL 範例:

CREATE TABLE courses (
    id SERIAL PRIMARY KEY,      -- 課程唯一 ID
    name VARCHAR(100),          -- 課程名稱
    description TEXT,           -- 描述
    start_date DATE             -- 開始日期
);

實作練習

現在換你來建立資料表!這是你的任務:

  1. 建立一個 teachers 資料表,欄位有:
    • id:唯一識別碼。
    • name:老師名字(最多 50 個字元的字串)。
    • subject:他/她教的科目(最多 50 個字元的字串)。
    • hire_date:聘用日期。

可以參考這段 SQL:

CREATE TABLE teachers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    subject VARCHAR(50),
    hire_date DATE
);

執行完之後,在 psql 裡用 \d teachers 指令確認資料表有被建立。

建立資料表時常見的錯誤

剛開始玩資料表時,常常會遇到一些錯誤。這裡列幾個常見的狀況:

資料表或欄位名稱打錯。 在 PostgreSQL 裡名字不分大小寫,但如果你用 " 把名字包起來,就要很小心。例如 CREATE TABLE "MyTable" 會建立 "MyTable" 這個資料表,但 mytable 就不會被認出來是它。

資料型別寫錯。 如果你寫了一個不存在的資料型別,指令會報錯。

CREATE TABLE example (
    column1 STRANGE_TYPE
);

這個指令不會成功,因為 STRANGE_TYPE 根本不存在。

忘記 PRIMARY KEY 如果你忘了加主鍵,資料表還是會被建立,但之後要辨識每一列就會比較麻煩。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION