mysql: insert into与select一起用

mysql: insert into与select一起用

mysql: insert into与select一起用

一、概述

在MySQL中,INSERT INTO 语句用于向表中插入新的行,而 SELECT 语句用于从表中检索数据。两者结合使用可以方便地将一个表中的数据插入到另一个表中,或者根据查询结果生成新的表。本文将详细介绍 INSERT INTOSELECT 一起使用的各种情况和用法。

二、基本语法

通常,将 INSERT INTOSELECT 一起使用的基本语法如下:

INSERT INTO table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • table_name:要插入数据的目标表名。
  • column1, column2, ...:要插入数据的目标表的列名。
  • SELECT column1, column2, ...:从源表中选择要插入目标表的列。
  • FROM table_name:指定源表名。
  • WHERE condition:可选的条件,用于筛选源表中的数据。

三、插入全部列

如果要将源表中的所有列都插入到目标表中,可以使用 * 通配符,示例如下:

INSERT INTO target_table
SELECT * 
FROM source_table;

四、插入指定列

如果只需要将源表中的部分列插入到目标表中,需要在 INSERT INTO 语句中指定目标表的列名,并在 SELECT 语句中选择对应的列,示例如下:

INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ...
FROM source_table;

五、插入筛选数据

SELECT 语句中,可以使用条件语句和其他操作符对源表中的数据进行筛选,只将符合条件的数据插入到目标表中,示例如下:

INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ...
FROM source_table
WHERE condition;

六、插入常量值

除了从源表中选择数据插入到目标表中外,还可以直接插入常量值,示例如下:

INSERT INTO target_table (column1, column2, ...)
SELECT 'value1', 'value2', ...
FROM source_table;

七、插入计算结果

SELECT 语句中,还可以进行各种计算操作,将计算结果插入到目标表中,示例如下:

INSERT INTO target_table (column1, column2, ...)
SELECT column1 * 2, column2 + 5, ...
FROM source_table;

八、示例代码

为了更好地理解 INSERT INTOSELECT 一起使用的用法,下面是一个简单的示例。假设有两张表,source_table 存储的是学生的成绩信息,target_table 存储的是及格学生的信息。现在我们需要将 source_table 中及格(成绩大于等于60分)的学生的信息插入到 target_table 中。

首先,我们创建两张表并插入一些测试数据:

CREATE TABLE source_table (
    student_id INT,
    student_name VARCHAR(50),
    grade INT
);

INSERT INTO source_table (student_id, student_name, grade)
VALUES (1, '张三', 80),
       (2, '李四', 90),
       (3, '王五', 55),
       (4, '赵六', 70);

CREATE TABLE target_table (
    student_id INT,
    student_name VARCHAR(50),
    grade INT
);

接下来,我们使用 INSERT INTOSELECT 一起使用的方式将及格学生的信息插入到 target_table 中:

INSERT INTO target_table (student_id, student_name, grade)
SELECT student_id, student_name, grade
FROM source_table
WHERE grade >= 60;

运行以上代码后,我们可以查询 target_table 的内容:

SELECT * FROM target_table;

运行结果如下:

student_id student_name grade
1 张三 80
2 李四 90
4 赵六 70

可以看到,只有成绩及格的学生(张三、李四和赵六)的信息被成功插入到了 target_table,符合条件的数据被筛选出来并插入到目标表中。

九、总结

本文详细介绍了在MySQL中,如何使用 INSERT INTOSELECT 一起使用的各种场景和用法。通过将源表中的数据插入到目标表中,我们可以方便地进行数据的转移、复制和筛选。掌握这些用法对于处理大量数据和生成新的表格非常有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程