INTO SELECT

简介: 【11月更文挑战第10天】

INSERT INTO SELECT 是 SQL 中的一个语句,它允许你从一个表中选择数据并将这些数据插入到另一个表中。这个操作不会影响目标表中已存在的数据,它只是添加新的数据行。

SQL INSERT INTO SELECT 语法

INSERT INTO 目标表名 (列1, 列2, ...)
SELECT1, 列2, ...
FROM 源表名
WHERE 条件;
AI 代码解读
  • 目标表名 是你想要插入数据的表。
  • 列1, 列2, ... 是你想要插入的具体列名。
  • 源表名 是包含你想要复制数据的表。
  • WHERE 条件 是用来指定从源表中选择哪些数据的条件(可选)。

使用说明

  1. 列对应:在使用 INSERT INTO SELECT 时,源表中的列数量和类型必须与目标表中的列数量和类型相匹配。
  2. 列选择:你可以在 SELECT 语句中指定列,也可以使用 * 来选择所有列,但要注意列的顺序和类型必须与目标表相匹配。
  3. 条件过滤:通过 WHERE 子句,你可以指定条件来选择特定的数据行。

代码示例

假设我们有两个表:employeesarchived_employees

employees 表:

+----+----------+
| id | name     |
+----+----------+
| 1  | John     |
| 2  | Jane     |
| 3  | Mike     |
+----+----------+
AI 代码解读

archived_employees 表:

+----+----------+
| id | name     |
+----+----------+
| 4  | Alice    |
| 5  | Bob      |
+----+----------+
AI 代码解读

现在,我们想要将 employees 表中的数据复制到 archived_employees 表中。

INSERT INTO archived_employees (id, name)
SELECT id, name
FROM employees;
AI 代码解读

这条语句将 employees 表中的所有数据复制到 archived_employees 表中。如果 archived_employees 表中已经有数据,那么这些数据将不会被覆盖或删除,新数据将被添加到表的末尾。

如果 archived_employees 表的 id 列是自增的,你可能不希望复制 id 列,而是让数据库自动生成新的 id。在这种情况下,你可以省略 id 列,只复制 name 列:

INSERT INTO archived_employees (name)
SELECT name
FROM employees;
AI 代码解读
目录
打赏
0
3
3
0
1189
分享
相关文章
不推荐SELECT * FROM table原因
根据非索引查询 :B+树的叶子节点放数据表行数据,叶子节点存放主键,如果想获得行数据信息,则需要再跑到主键索引去拿数据,这叫回表,速度慢。但不管是主键还是非主键索引,他们的叶子结点数据都是有序的。比如在主键索引中,这些数据是根据主键id的大小,从小到大,进行排序的。**1.**根据索引查询 :B+树的父节点放索引数据,速度快,叶子(父)节点会存放完整的行数据西信息。
387 0
SELECT INTO
【11月更文挑战第08天】
50 2
select
【10月更文挑战第20天】
58 5
第03章_基本的SELECT语句
第03章_基本的SELECT语句
232 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等