导读:本期聚焦于小伙伴创作的《MySQL如何插入多条记录?INSERT插入多条数据的方法有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《MySQL如何插入多条记录?INSERT插入多条数据的方法有哪些》有用,将其分享出去将是对创作者最好的鼓励。

MySQL作为常用的关系型数据库,提供了多种插入多条记录的方式,开发者可以根据数据来源、插入量等场景选择对应的方法,避免逐条插入带来的性能损耗。

MySQL如何插入多条记录?INSERT插入多条数据的方法有哪些

基础INSERT多值插入法

这是最常用的批量插入方式,通过在INSERT语句中指定多个值组,一次性插入多条记录,语法简洁且执行效率高。

基本语法格式如下:

INSERT INTO 表名 (列1, 列2, 列3) 
VALUES 
(值1_1, 值1_2, 值1_3),
(值2_1, 值2_2, 值2_3),
(值3_1, 值3_2, 值3_3);

假设我们有一个用户表user_info,结构包含idusernameage三个字段,要插入三条用户记录可以这样写:

INSERT INTO user_info (username, age) 
VALUES 
('张三', 25),
('李四', 28),
('王五', 22);

这种方式的优点是语句简单,执行时只需要一次数据库交互,适合插入数据量不大(通常建议单次插入不超过1000条,避免SQL语句过长)的场景。

INSERT INTO SELECT批量插入法

如果需要插入的数据来源于其他表或者查询结果,可以使用INSERT INTO SELECT语法,将查询得到的结果集直接插入到目标表中。

基本语法格式如下:

INSERT INTO 目标表 (列1, 列2, 列3)
SELECT 列1, 列2, 列3 
FROM 源表 
WHERE 筛选条件;

例如我们要把temp_user表中年龄大于20的用户信息同步到user_info表中:

INSERT INTO user_info (username, age)
SELECT username, age 
FROM temp_user 
WHERE age > 20;

这种方式适合数据迁移、表数据同步的场景,不需要手动构造每个值,直接基于已有数据完成批量插入。

临时表批量插入法

当需要插入的数据量非常大,或者数据来源于外部文件、程序批量生成时,可以先创建临时表,将批量数据导入临时表,再通过INSERT INTO SELECT将数据同步到目标表。

操作步骤分为三步:

  • 创建临时表,结构与目标表匹配或者包含需要的字段
  • 将批量数据导入临时表,可以通过LOAD DATA、程序批量写入等方式
  • 执行INSERT INTO SELECT将临时表数据同步到目标表

示例代码如下:

-- 创建临时表
CREATE TEMPORARY TABLE temp_batch_user (
    username VARCHAR(50),
    age INT
);

-- 假设通过程序或者LOAD DATA将批量数据写入临时表后,执行同步
INSERT INTO user_info (username, age)
SELECT username, age FROM temp_batch_user;

-- 临时表会在连接关闭后自动删除,也可以手动删除
DROP TEMPORARY TABLE IF EXISTS temp_batch_user;

批量插入的注意事项

在使用批量插入时,需要注意以下几点:

  • 单次插入的数据量不宜过大,避免SQL语句超过max_allowed_packet配置的限制,导致执行失败
  • 如果目标表有自增主键,批量插入时不需要指定自增字段的值,数据库会自动生成
  • 如果插入的数据可能存在重复,可以结合IGNORE关键字或者ON DUPLICATE KEY UPDATE语句处理冲突,例如:
-- 忽略重复记录
INSERT IGNORE INTO user_info (username, age) 
VALUES 
('张三', 25),
('李四', 28);

-- 存在重复时更新字段
INSERT INTO user_info (username, age) 
VALUES 
('张三', 26)
ON DUPLICATE KEY UPDATE age = VALUES(age);

不同的批量插入方法适用场景不同,小批量手动插入优先选择多值INSERT语法,跨表数据同步选择INSERT INTO SELECT,大批量数据导入可以结合临时表实现,开发者可以根据实际业务需求选择最合适的方式。

MySQLINSERT批量插入SQL语句修改时间:2026-06-27 10:27:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。