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
一起使用的各种场景和用法。通过将源表中的数据插入到目标表中,我们可以方便地进行数据的转移、复制和筛选。掌握这些用法对于处理大量数据和生成新的表格非常有用。