CodeGym /課程 /SQL SELF /PostgreSQL 資料型別入門

PostgreSQL 資料型別入門

SQL SELF
等級 15, 課堂 0
開放

這堂課其實很適合當我們課程的起點啦。不過如果一開始就講這個,你們前面的任務跟課程可能會超無聊。如果你決定當一天工地工人,你會想從哪裡開始:先研究磚頭的型號和形狀,還是 爽開 30 分鐘塔吊?你懂我意思吧 :)

學生不是個要裝滿的容器,而是要點燃的火把(還不能燒掉!)我不是想把我知道的全都倒給你,而是想讓你覺得有趣。現在正是時候來認識資料型別啦。

在 PostgreSQL 裡,資料型別就是指定某個資料表欄位會存什麼類型的資訊。比如數字、文字或日期。這有點像你選收納盒:小盒子裝小東西,大盒子裝鞋子,透明盒子裝線,這樣一眼就知道東西在哪。

舉例:

  • 如果你想存人的年齡,就該用數字型別。
  • 如果要存名字,就要用文字型別。
  • 要記錄註冊日期,當然就用日期型別最合理。

為什麼需要資料型別?

資料型別可以幫你:

  1. 限制輸入的資訊。比如你不能在預期是數字的地方塞進文字。
  2. 讓資料有結構。清楚知道每個欄位是什麼,查詢和分析都更簡單。
  3. 省資源。用對型別可以減少記憶體消耗。
  4. 保持精確度。像財務計算就需要固定小數點的數字。

給你一點靈感的例子

想像一下有個存學生資訊的資料表:

id name age enrollment_date
1 Otto Mars 22 2023-01-15
2 Anna Song 19 2023-02-10

這裡 id 是唯一識別碼(數字),name 是文字,age 是年齡數字,enrollment_date 是學生註冊日期。這些資料都有不同的型別,因為它們描述的是物件的不同面向。

PostgreSQL 資料型別分類

PostgreSQL 在資料型別這塊超級彈性。下面是個簡單分類。

主要資料型別分類:

  1. 數字型別

    • 用來存整數(像數量、識別碼)和有小數的數字(像金錢)。
    • 例子:INTEGER、NUMERIC、FLOAT。
  2. 文字型別

    • 用來存文字和字串(像名字、地址)。
    • 例子:CHAR、VARCHAR、TEXT。
  3. 布林型別

    • 用來存邏輯值 TRUE(真)或 FALSE(假)。
    • 例子:BOOLEAN。
  4. 日期與時間型別

    • 用來存日期、時間或兩者的組合。
    • 例子:DATE、TIME、TIMESTAMP。
  5. 特殊型別

    • 像唯一識別碼、JSON 物件、陣列等等。
    • 例子:UUID、JSONB、ARRAY。

PostgreSQL 資料型別的特色

PostgreSQL 支援超多內建型別,還可以自訂 custom(自訂)資料型別。這讓這套 DBMS 在處理複雜系統、需要特殊資料需求時超強大。

有趣的是,PostgreSQL 還能存地理資訊,甚至可以查「找出我附近 500 公尺內的咖啡廳」這種資料。這種需求就要用到特殊型別啦。

明確指定資料型別有什麼好處?

有時你可能覺得把所有欄位都設成文字型別很方便——反正文字什麼都能存。但這其實很糟糕!指定正確的資料型別可以:

讓查詢更簡單。 如果 PostgreSQL 知道欄位裡都是數字,像 SUM() 這種計算就會快很多。

避免出錯。 想像你不小心把「三十二」存進年齡欄位,原本應該是 32。這種錯誤超難抓的。

2
任務
SQL SELF, 等級 15, 課堂 0
上鎖
在 `WHERE` 子句中使用子查詢排除記錄
在 `WHERE` 子句中使用子查詢排除記錄
2
任務
SQL SELF, 等級 15, 課堂 0
上鎖
在 `FROM` 子查詢中使用算術運算式
在 `FROM` 子查詢中使用算術運算式
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION