mysql: insert into与select一起用

2025-12-24 02:07:32

mysql: insert into与select一起用

mysql: insert into与select一起用

一、概述

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

二、基本语法

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

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 INTO 与 SELECT 一起使用的用法,下面是一个简单的示例。假设有两张表,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 INTO 与 SELECT 一起使用的方式将及格学生的信息插入到 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 INTO 与 SELECT 一起使用的各种场景和用法。通过将源表中的数据插入到目标表中,我们可以方便地进行数据的转移、复制和筛选。掌握这些用法对于处理大量数据和生成新的表格非常有用。

最新发表
友情链接

Copyright © 2022 流光追月·网游特刊 All Rights Reserved.