MySQL INSERT INTO … SELECT 详细列举出需要插入数据的所有列
在MySQL中,我们可以使用INSERT INTO … SELECT语句来将一个表中的数据插入到另一个表中。通常情况下,我们需要在INSERT INTO语句中详细列举出需要插入数据的所有列,这样比较麻烦。那么有没有一种方法可以在不列举所有列的情况下,将数据插入到另一个表中呢?当然有!下面我们来详细讲解一下。
阅读更多:MySQL 教程
原理
我们可以通过以下方式,将源表中的所有列插入到目标表中,而不需要逐一列举出所有列:
INSERT INTO `target_table`
SELECT * FROM `source_table`;
其中,source_table
是源表的名称,target_table
是目标表的名称。
示例
假设我们有一个users
表,包含了用户的基本信息:
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(30) NOT NULL,
`age` INT NOT NULL,
`gender` CHAR(1) NOT NULL,
`email` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);
现在我们要将users
表中的所有数据插入到一个新表users_bak
中。我们可以使用以下SQL语句:
INSERT INTO `users_bak`
SELECT * FROM `users`;
这个语句将会把users
表中的所有数据插入到users_bak
表中。
注意事项
- 源表和目标表的列数据类型要保持一致;
- 源表和目标表的列数要一致。
总结
通过使用MySQL的INSERT INTO … SELECT语句,我们可以非常方便地将一个表中的数据插入到另一个表中。通过使用上述方法,我们可以省去逐一列举所有列的麻烦,提高工作效率。