MySQL Insert Into Select 用法
在 MySQL 数据库中,我们经常需要将一个表中的数据复制到另一个表中。这时候就可以使用 INSERT INTO SELECT
语句。这个语句可以帮助我们从一个表中选择数据并插入到另一个表中,非常方便和高效。
基本语法
下面是 INSERT INTO SELECT
语句的基本语法:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
table2
:目标表,即要插入数据的表。column1, column2, column3, ...
:要插入的列名。table1
:来源表,即要从中选择数据的表。condition
:选择数据的条件,可选。如果不需要条件,可以省略。
示例
假设有两个表 students
和 new_students
,students
表结构如下:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
grade VARCHAR(10)
);
INSERT INTO students (id, name, age, grade) VALUES
(1, 'Alice', 20, 'A'),
(2, 'Bob', 21, 'B'),
(3, 'Cathy', 22, 'A');
new_students
表结构也和 students
表一样,接下来我们使用 INSERT INTO SELECT
语句将 students
表中的数据复制到 new_students
表中:
INSERT INTO new_students (id, name, age, grade)
SELECT id, name, age, grade
FROM students;
运行以上语句后,new_students
表中将会插入 students
表中的所有数据。你也可以在 SELECT
语句中添加条件,例如:
INSERT INTO new_students (id, name, age, grade)
SELECT id, name, age, grade
FROM students
WHERE age > 20;
以上语句会选出 age
大于 20 的记录并插入到 new_students
表中。
复制表结构
除了复制数据,INSERT INTO SELECT
语句还可以用来复制表结构。假设我们希望创建一个和 students
表结构一样的表 duplicate_students
,可以这样做:
CREATE TABLE duplicate_students AS
SELECT *
FROM students
WHERE 1 = 0;
以上语句会创建一个空表 duplicate_students
,结构和 students
表完全一样,但不包含任何数据,非常方便。
总结
INSERT INTO SELECT
语句是 MySQL 中非常实用的功能,可以帮助我们快速向目标表中插入数据或复制表结构。通过合理使用这个语句,我们可以更高效地管理数据库中的数据。