MySQL Insert Into Select 用法

MySQL Insert Into Select 用法

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:选择数据的条件,可选。如果不需要条件,可以省略。

示例

假设有两个表 studentsnew_studentsstudents 表结构如下:

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 中非常实用的功能,可以帮助我们快速向目标表中插入数据或复制表结构。通过合理使用这个语句,我们可以更高效地管理数据库中的数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程