SQL
中提供了 INSERT
语句,来插入数据。
通常有以下 3
种应用场景:
- 向表中插入一行
- 向表中插入多行
- 复制另一表中的数据以插入到现有表
插入一行数据
sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
该语法有以下注意点:
column
与value
是一一对应的,且总数量一致。- 在插入新行之前,数据库系统检查所有完整性约束。例如,
FOREIGN KEY
约束,PRIMARY KEY
约束,CHECK
约束和NOT NULL
约束。如果违反了其中一个约束,数据库系统将发出错误并终止语句,而不向表中插入任何新行。 - 在插入新行时,如果未在
INSERT
语句中指定某一column
与其对应value
,则该column
将采取其默认值。 - 在插入新行时,如果定义的
value
数量超过了表格中的column
数,则会出现错误。
如果 value
序列与 column
的顺序匹配,则可以省略指定 column
序列:
sql
INSERT INTO table_name
VALUES (value1, value2, ...)
在这种场景下,如果存在自增长列,可以在对应位置赋值 NULL
以忽略它。自增长列,会自动赋值。
sql
INSERT INTO table_name
VALUES (value1, value2, NULL, ...)
插入多行数据
使用单个 INSERT
语句插入多行:
sql
INSERT INTO table_name
VALUES (value1, value2, ...),
(value1, value2, ...),
(value1, value2, ...);
复制表数据
复制表数据,需要 INSERT
与 SELECT
语句联用,而不再使用 VALUES
。
sql
INSERT INTO table1 (column1, column2)
SELECT column1, column2
FROM table2
WHERE condition1;