什麼是插入資料?
想像一下你開了一間大學。你有一個資料庫,裡面有一些資料表,比如 students,用來存學生的資訊。現在要公佈有哪些學生錄取了,然後把他們的資料加到資料表裡。在 SQL 裡,這就要用 INSERT INTO 這個指令。它可以幫你加一筆新資料進資料表——就像你在 Excel 裡手動填一行,但更快、更強大,還能用程式碼搞定!
插入資料不只是基本任務,幾乎到處都會用到——從網路商店記錄訂單,到銀行存交易資訊。大學的話,就是學生名單、老師名單,還有課表什麼的。
INSERT INTO 指令的基本語法
在 SQL 裡,INSERT INTO 指令就是最簡單的加新資料到資料表的方法。來看一下基本語法:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
語法說明:
table_name— 你要加資料的資料表名稱。(column1, column2, column3, ...)— 欲指定值的欄位清單。VALUES (value1, value2, value3, ...)— 你要插入到對應欄位的值。
舉個例子:加一個新學生到 students 資料表。假設我們有這樣的表:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 數學 |
現在用 INSERT INTO 加第二個學生:
INSERT INTO students (id, name, age, course)
VALUES (2, 'Anna Lin', 19, '資訊科學');
執行完後,資料表會變這樣:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 數學 |
| 2 | Anna Lin | 19 | 資訊科學 |
插入所有欄位的資料
如果你想要一次插入所有欄位的值,可以不用寫欄位名稱。前提是你要照正確順序給每個欄位一個值。
語法:
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
舉例:再加一個學生到 students:
INSERT INTO students
VALUES (3, 'Dan Sim', 20, '物理');
結果:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 數學 |
| 2 | Anna Lin | 19 | 資訊科學 |
| 3 | Dan Sim | 20 | 物理 |
不過這種寫法有點危險,如果資料表結構改了就容易出錯。所以建議還是寫欄位名稱,比較不會出包。
實戰:加一個學生
來試試看用 INSERT INTO 的全部功能,幫 students 表加一個新學生。
步驟 1:先查現有資料
開始前,先查一下表裡現在有什麼資料。用 SELECT:
SELECT * FROM students;
步驟 2:加新學生
現在加一個學生 Peter Chi,他讀「生物」課程,今年 21 歲:
INSERT INTO students (id, name, age, course)
VALUES (4, 'Peter Chi', 21, '生物');
步驟 3:確認資料有加進去
再查一次全部資料:
SELECT * FROM students;
結果:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 數學 |
| 2 | Anna Lin | 19 | 資訊科學 |
| 3 | Dan Sim | 20 | 物理 |
| 4 | Peter Chi | 21 | 生物 |
很酷吧?Peter 現在已經加到我們大學了。
INSERT INTO 常見錯誤
欄位和數值數量不符。 比如你寫了 4 個欄位,但只給 3 個值,SQL 會直接報錯:
INSERT INTO students (id, name, age)
VALUES (5, 'Eva Green', 22, '化學');
錯誤:欄位數量和數值數量不一致。
違反限制。 如果欄位有 UNIQUE 或 NOT NULL 限制,違規就會失敗。
資料型態錯誤。
如果你把文字塞進數字欄位,PostgreSQL 也會不爽:
INSERT INTO students (id, name, age, course)
VALUES (5, 'Axel Linz', '二十', '化學');
這在實際專案裡有什麼用?
會用 INSERT INTO 這招,幾乎所有跟資料庫有關的應用都會用到。現實生活裡,你會用這個指令來:
- 註冊新用戶到系統。
- 網路商店加訂單。
- 支付系統存付款資料。
- 教育系統每天更新學生、出席、成績資料。
每次你的應用程式要跟用戶或外部資料來源互動時,INSERT INTO 就是把資料寫進資料庫的主力工具。
如果你在寫 backend 應用,或打算做 API 來處理資料,會用 SQL 插入資料這招,雖然很基礎,但超級重要!
GO TO FULL VERSION