目录

  1. SQL INSERT INTO 语句简介
  2. INSERT INTO 语法
  3. 插入单行数据
  4. 插入多行数据
  5. 使用 SELECT 语句插入数据
  6. 插入数据时忽略重复记录
  7. 插入数据时返回自增字段
  8. INSERT INTO 示例
  9. 参考资料

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, salarydepartment 等列。要向 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 表中。

参考资料