iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
Software Development

新手小白的每天一點SQL系列 第 9

Day 9 建立資料表 - 在 psql 建立資料表

  • 分享至 

  • xImage
  •  

Day 8 文章中,我們有了資料表的內容,接下來我們就要設計欄位,讓這些內容變成真的資料表啦!

前言

  • 資料表(Table):每一行為唯一資料,每一列為不同屬性。
  • 主鍵(Primary Key):是一個列或列組的組合,其值能唯一標識表格中的每一行(唯一資料)。
  • 外鍵(foreign key):是指向其他表的主鍵的欄位,用於確定兩張表的關聯性及資料完整性,以避免部分資料匹配不上的問題。

建立資料表的 SQL 語法

創建資料表的語法如下:

CREATE TABLE 資料表名稱(屬性 資料型態, 屬性 資料型態);

在建立資料表之前,我們要確定以下資訊:

  1. 資料表名稱
  2. 資料屬性(即資料表的欄位)
  3. 資料型態(字串、整數、日期等等)

資料表設計

我們先來分析一下這兩張資料表的欄位。

breeder

  • 我們使用 id 做為「主健」
  • name 屬性欄位的資料型態為「字串」
  • location 屬性欄位的資料型態為「字串」
  • career_center_wins 屬性欄位的資料型態為「整數」
  • career_region_wins 屬性欄位的資料型態為「整數」

接著透過我們的欄位設計,創建資料表:

CREATE TABLE breeder(
   id SERIAL PRIMARY KEY, # 整數序列
   name VARCHAR(255), # 字串,最多255字元
   location VARCHAR(255), # 字串,最多255字元
   career_center_wins int, # 整數
   career_region_wins int # 整數
);

接著我們可以透過檢視 schema 來確認資料表的架構與型態:

\d breeder

在建立資料表時,我們也可以賦予欄位一些限制(constraints),比如:

NOT NULL #屬性的值不可為空
UNIQUE #每個值都不可重複
DEFAULT #"預設值" 若該屬性沒有填入資料,會呈現預設值
AUTO_INCREMENT #自動遞增

建立完 breeder 的資料表,接下來繼續完成 racehorse 吧!

racehorse

  • 我們使用 id 做為「主健」
  • name 屬性欄位的資料型態為「字串」
  • sex 屬性欄位的資料型態為「字串」
  • birt_date 屬性欄位的資料型態為「日期」
  • coat_color 屬性欄位的資料型態為「字串」
  • 我們使用 breeder 的 id 做為「外鍵」

CREATE TABLE racehorse(
   id SERIAL PRIMARY KEY, #主鍵,整數序列
   name VARCHAR(255),  #字串,最多 255 字元
   sex VARCHAR(1), #字串,最多1字元
   birth_date DATE, #日期,格式為 "YYYY-MM-DD"
   coat_color VARCHAR(255), #字串,最多 255 字元
   breeder_id int, #整數
   FOREIGN KEY(breeder_id) #外鍵欄位 
   REFERENCES breeder(id) # 外鍵的資料表
);

我們再來看 racehose 的 schema:

\d racehorse

到目前為止,我們建立好兩張資料表了,明天就來把資料存進資料表吧。

參考資料:


上一篇
Day 8 建立資料表 - 資料表關聯
下一篇
Day 10 建立資料表 - 儲存資料
系列文
新手小白的每天一點SQL31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言