在MySQL数据库的日常使用中,向表中插入数据是最基础的操作之一,不同的业务场景需要匹配不同的插入方式,掌握多种插入方法能够提升数据操作的效率和灵活性。

基础单条数据插入
最基础的插入方式是向表中插入单条完整数据,需要指定表名和对应列的值,要求值的顺序和列的定义顺序一致,或者显式指定列名来匹配值。
-- 先创建测试表
CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
age INT DEFAULT 0,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 不指定列名插入,值顺序需要和表列顺序一致
INSERT INTO user_info VALUES (NULL, '张三', 25, NOW());
-- 指定列名插入,可只插入非空列和自定义列
INSERT INTO user_info (username, age) VALUES ('李四', 28);
批量插入多条数据
当需要插入多条数据时,使用批量插入可以减少SQL语句的发送次数,提升插入效率,只需要在VALUES后跟上多组值即可。
-- 批量插入三条用户数据
INSERT INTO user_info (username, age) VALUES
('王五', 22),
('赵六', 30),
('孙七', 26);
忽略重复数据的插入
如果表中存在唯一索引,插入重复数据时会出现报错,使用INSERT IGNORE可以忽略重复的错误,只插入不重复的数据。
-- 假设username列设置了唯一索引,插入重复用户名不会报错
INSERT IGNORE INTO user_info (username, age) VALUES ('张三', 27);
替换重复数据的插入
使用REPLACE INTO插入数据时,如果遇到唯一键冲突,会先删除原有数据再插入新数据,实现替换效果。
-- 如果id=1的数据存在,会先删除再插入,不存在则直接插入 REPLACE INTO user_info (id, username, age) VALUES (1, '张三', 29);
插入查询结果数据
可以将另一个查询的结果直接插入到目标表中,常用于数据迁移或者备份场景,要求查询结果的列数和目标表的列数匹配。
-- 创建备份表 CREATE TABLE user_info_backup LIKE user_info; -- 将user_info表的数据插入到备份表 INSERT INTO user_info_backup (username, age) SELECT username, age FROM user_info;
插入时的注意事项
- 插入的值需要和列的数据类型匹配,否则会出现类型转换错误或者数据截断问题。
- 如果列设置了非空约束且没有默认值,插入时必须指定该列的值。
- 批量插入时单次插入的数据量不宜过大,避免超出SQL语句长度限制或者影响数据库性能。
- INSERT IGNORE只会忽略主键或者唯一索引冲突的错误,其他类型的错误仍然会抛出。
不同插入方式对比
| 插入方式 | 适用场景 | 重复数据处理 |
|---|---|---|
| 基础INSERT INTO | 单条或少量数据插入 | 重复则报错 |
| 批量INSERT INTO | 多条数据插入 | 重复则报错 |
| INSERT IGNORE | 允许重复数据的场景 | 忽略重复数据 |
| REPLACE INTO | 需要更新重复数据的场景 | 删除旧数据插入新数据 |
| INSERT SELECT | 数据迁移、备份场景 | 遵循普通插入的重复规则 |
MySQLINSERT_INTO数据插入SQL语句修改时间:2026-06-14 16:24:15