SQL INSERT

摘要:在本教學中,您將學習如何使用 SQL INSERT 語句將資料插入表格。

SQL INSERT 語句簡介

SQL 提供了 INSERT 語句,可讓您將一或多列插入表格。INSERT 語句可讓您

  1. 將單列插入表格
  2. 將多列插入表格
  3. 將列從一個表格複製到另一個表格。

我們將在以下章節中檢視 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 將採用預設值。

將一列插入表格範例

我們將使用範例資料庫中的 employeesdependents 表格來向您展示如何將一列插入表格。

employees_dependents_tables

要將新列插入 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: 1Code language: SQL (Structured Query Language) (sql)

您可以使用以下 SELECT 語句來檢查列是否已成功插入。

SELECT 
    *
FROM
    dependents
WHERE
    employee_id = 178;Code language: SQL (Structured Query Language) (sql)

試試看

SQL INSERT one row example

將多列插入表格

要使用單個 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)

試試看

SQL INSERT multiple rows example

從其他表格複製列

您可以使用 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 copy rows from other tables example

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

這個教學有幫助嗎?