摘要:在本教學中,您將學習如何使用 SQL INSERT 語句將資料插入表格。
SQL INSERT 語句簡介
SQL 提供了 INSERT
語句,可讓您將一或多列插入表格。INSERT
語句可讓您
- 將單列插入表格
- 將多列插入表格
- 將列從一個表格複製到另一個表格。
我們將在以下章節中檢視 INSERT
語句的每個功能。
將一列插入表格
要將一列插入表格,您可以使用 INSERT
語句的以下語法。
INSERT INTO table1 (column1, column2,...)
VALUES
(value1, value2,...);
Code language: SQL (Structured Query Language) (sql)
將新列插入表格時,您應注意以下幾點
- 首先,值的數量必須與欄位的數量相同。此外,欄位和值必須對應,因為資料庫系統會根據它們在列表中的相對位置來匹配它們。
- 其次,在新增新列之前,資料庫系統會檢查所有完整性約束,例如外鍵約束、主鍵約束、檢查約束和非空約束。如果違反其中一個約束,資料庫系統將會發出錯誤並終止該語句,而不會將任何新列插入表格。
如果值的順序與表格中欄位的順序一致,則不必指定欄位。請參閱以下 INSERT
語句,其中省略了 INSERT INTO
子句中的欄位列表。
INSERT INTO table1
VALUES
(value1, value2,...);
Code language: SQL (Structured Query Language) (sql)
但是,這不被認為是一種好的做法。
如果您在插入新列時,未在 INSERT
語句中指定欄位及其值,則該欄位將採用表格結構中指定的預設值。預設值可以是 0、序列中的下一個整數值、目前時間、NULL 值等。請參閱以下語句
INSERT INTO (column1, column3)
VALUES
(column1, column3);
Code language: SQL (Structured Query Language) (sql)
在此語法中,column2
將採用預設值。
將一列插入表格範例
我們將使用範例資料庫中的 employees
和 dependents
表格來向您展示如何將一列插入表格。

要將新列插入 dependents
表格。
INSERT INTO dependents (
first_name,
last_name,
relationship,
employee_id
)
VALUES
(
'Dustin',
'Johnson',
'Child',
178
);
Code language: SQL (Structured Query Language) (sql)
我們沒有在 INSERT
語句中使用 department_id
欄位,因為 dependent_id
欄位是自動遞增欄位,因此,當您插入新列時,資料庫系統會使用下一個整數作為預設值。
employee_id
欄位是一個外鍵,它將 dependents
表格連結到 employees
表格。在新增新列之前,資料庫系統會檢查 employees
表格的 employee_id
欄位中是否存在值 178,以確保沒有違反外鍵約束。
如果列插入成功,資料庫系統會傳回受影響的列數。
Affected rows: 1
Code language: SQL (Structured Query Language) (sql)
您可以使用以下 SELECT 語句來檢查列是否已成功插入。
SELECT
*
FROM
dependents
WHERE
employee_id = 178;
Code language: SQL (Structured Query Language) (sql)

將多列插入表格
要使用單個 INSERT
語句插入多列,您可以使用以下結構
INSERT INTO table1
VALUES
(value1, value2,...),
(value1, value2,...),
(value1, value2,...),
...;
Code language: SQL (Structured Query Language) (sql)
例如,要將兩列插入 dependents
表格,您可以使用以下查詢。
INSERT INTO dependents (
first_name,
last_name,
relationship,
employee_id
)
VALUES
(
'Cameron',
'Bell',
'Child',
192
),
(
'Michelle',
'Bell',
'Child',
192
);
Code language: SQL (Structured Query Language) (sql)
資料庫系統傳回 2 個受影響的列。您可以使用以下語句驗證結果。
SELECT
*
FROM
dependents
WHERE
employee_id = 192;
Code language: SQL (Structured Query Language) (sql)

從其他表格複製列
您可以使用 INSERT
語句來查詢一或多個表格中的資料,並將其插入另一個表格,如下所示
INSERT INTO table1 (column1, column2)
SELECT
column1,
column2
FROM
table2
WHERE
condition1;
Code language: SQL (Structured Query Language) (sql)
在此語法中,您使用稱為子查詢的 SELECT 而不是 VALUES
子句。子查詢可以包含聯結,以便您可以組合來自多個表格的資料。執行語句時,資料庫系統會在插入資料之前先評估子查詢。
假設您有一個名為 dependents_archive
的表格,其結構與 dependents
表格相同。以下語句會將 dependents
表格中的所有列複製到 dependents_archive
表格。
INSERT INTO dependents_archive
SELECT
*
FROM
dependents;
Code language: SQL (Structured Query Language) (sql)
您可以使用以下語句驗證插入操作。
SELECT
*
FROM
dependents_archive;
Code language: SQL (Structured Query Language) (sql)

現在您應該知道如何使用 SQL INSERT 語句將一或多列插入表格。