目录
- SQL INSERT INTO 语句简介
- INSERT INTO 语法
- 插入单行数据
- 插入多行数据
- 使用 SELECT 语句插入数据
- 插入数据时忽略重复记录
- 插入数据时返回自增字段
- INSERT INTO 示例
- 参考资料
SQL INSERT INTO 语句简介
INSERT INTO
语句用于将数据插入到数据库表中。它是 SQL 中最常用的操作之一。通过 INSERT INTO
语句,你可以插入一行或多行数据。
INSERT INTO 语法
INSERT INTO
的基本语法如下:
1. 插入单行数据
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
table_name
:要插入数据的表名。column1, column2, ...
:要插入的列名。value1, value2, ...
:与列对应的值。
2. 插入多行数据
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1a, value2a, value3a, ...),
(value1b, value2b, value3b, ...),
(value1c, value2c, value3c, ...);
- 通过一次执行,可以插入多行数据。
插入单行数据
假设我们有一个员工表 employees
,其中包含 id
, name
, salary
和 department
等列。要向 employees
表插入一名新员工记录,可以使用以下语句:
INSERT INTO employees (id, name, salary, department)
VALUES (1, 'John Doe', 55000, 'IT');
- 该语句将插入一条包含员工信息的数据记录到
employees
表中。
插入多行数据
如果需要一次性插入多条记录,可以使用如下语法:
INSERT INTO employees (id, name, salary, department)
VALUES (2, 'Jane Smith', 60000, 'HR'),
(3, 'Mike Johnson', 45000, 'Finance'),
(4, 'Emily White', 70000, 'IT');
- 该语句一次性将三名员工的信息插入到
employees
表中。
使用 SELECT 语句插入数据
INSERT INTO
语句还可以结合 SELECT
语句使用,从其他表或查询结果中插入数据。
语法
INSERT INTO table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM another_table
WHERE condition;
示例
假设我们有一个临时表 temp_employees
,包含了一些需要插入到 employees
表中的数据。我们可以使用以下语句将数据从 temp_employees
插入到 employees
:
INSERT INTO employees (id, name, salary, department)
SELECT id, name, salary, department
FROM temp_employees
WHERE department = 'IT';
- 该语句将从
temp_employees
表中选择department
为 ‘IT’ 的记录并插入到employees
表中。
插入数据时忽略重复记录
在某些情况下,如果插入的数据已经存在,可以选择忽略重复记录。不同的数据库系统有不同的方式来实现这一点。
1. MySQL
MySQL 提供了 INSERT IGNORE
语法,可以在插入数据时忽略重复记录(如果表的某些列存在唯一约束):
INSERT IGNORE INTO employees (id, name, salary, department)
VALUES (1, 'John Doe', 55000, 'IT');
- 如果
id
为 1 的记录已经存在,插入操作将被忽略。
2. SQLite
SQLite 使用 INSERT OR IGNORE
语法来实现相同的功能:
INSERT OR IGNORE INTO employees (id, name, salary, department)
VALUES (1, 'John Doe', 55000, 'IT');
插入数据时返回自增字段
如果表中有自增字段(如 id
),并且你希望在插入记录时获得该自增字段的值,可以使用不同的数据库特定函数。
1. MySQL
在 MySQL 中,可以使用 LAST_INSERT_ID()
获取插入记录后生成的自增 ID。
INSERT INTO employees (name, salary, department)
VALUES ('John Doe', 55000, 'IT');
SELECT LAST_INSERT_ID();
2. PostgreSQL
在 PostgreSQL 中,可以使用 RETURNING
子句来获取插入后的自增字段值。
INSERT INTO employees (name, salary, department)
VALUES ('John Doe', 55000, 'IT')
RETURNING id;
INSERT INTO 示例
示例 1:插入单行数据
INSERT INTO employees (id, name, salary, department)
VALUES (1, 'Alice Brown', 65000, 'Engineering');
- 该语句将插入一条包含
id
为 1 的员工记录。
示例 2:插入多行数据
INSERT INTO employees (id, name, salary, department)
VALUES (2, 'Bob Green', 70000, 'Marketing'),
(3, 'Charlie White', 80000, 'Sales');
- 该语句将插入两名员工的记录。
示例 3:从一个表插入数据到另一个表
INSERT INTO employees (id, name, salary, department)
SELECT id, name, salary, department
FROM temp_employees
WHERE department = 'Sales';
- 该语句将从
temp_employees
表中选择department
为 ‘Sales’ 的记录并插入到employees
表中。
发表回复