INSERT语句用于向MySQL表插入数据,基本语法为INSERT INTO 表名(字段) VALUES (值);可一次插入多条记录,如INSERT INTO users(name,age) VALUES('李四',30),('王五',28);也可省略字段名插入所有值,但需保证值顺序与表结构一致;支持通过INSERT INTO ... SELECT从其他表查询并插入数据,如将old_users中age>30的记录插入new_users;使用时需注意数据类型匹配、主键冲突、NULL值处理及自增字段管理,建议明确指定字段名以提升安全性与可维护性。

在MySQL中,INSERT 语句用于向数据库表中插入新记录。掌握 INSERT 的基本语法和使用方式,是操作数据库的基础技能之一。下面详细介绍 INSERT 语句的常见用法和注意事项。
基本语法:插入单条数据
最简单的 INSERT 语句格式如下:
INSERT INTO 表名 (字段1, 字段2, 字段3) VALUES (值1, 值2, 值3);
说明:
- “表名”是要插入数据的表名称
- 括号内列出要插入值的字段名(列名)
- VALUES 后面对应每个字段提供一个值,顺序必须与字段列表一致
例如,有一个用户表 users,包含 id、name、age 三个字段:
INSERT INTO users (name, age) VALUES ('张三', 25);
这条语句会插入一条 name 为“张三”、age 为 25 的记录。id 是自增字段时可不指定。
一次插入多条记录
如果需要插入多条数据,可以使用一条 INSERT 语句插入多组值,提高效率:
INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2), (值3, 值4), (值5, 值6);
示例:
INSERT INTO users (name, age) VALUES
('李四', 30),
('王五', 28),
('赵六', 35);
这样可以在一次操作中插入三条记录,比执行三次单条插入更快。
插入所有字段的数据(省略字段名)
如果要为表中所有字段都提供值,可以省略字段列表,但必须保证 VALUES 中的值顺序与表结构字段顺序完全一致:
INSERT INTO users VALUES (1, '钱七', 22);
这种方式风险较高,一旦表结构变更容易出错,建议明确写出字段名以增强可读性和兼容性。
从其他表复制数据(INSERT INTO ... SELECT)
还可以将一个表中的数据查询后插入到另一个表中:
INSERT INTO 目标表 (字段1, 字段2) SELECT 字段A, 字段B FROM 源表 WHERE 条件;
例如,把 old_users 表中年龄大于30的用户迁移到 new_users 表:
INSERT INTO new_users (name, age) SELECT name, age FROM old_users WHERE age > 30;
这种写法适合做数据迁移或备份操作。
注意事项
使用 INSERT 语句时需要注意以下几点:
- 字符串和日期类型的值要用单引号括起来
- 字段数量和值的数量必须匹配
- 注意主键冲突,避免重复插入相同主键值
- 若字段允许 NULL,可使用 NULL 关键字插入空值
- 自增字段通常不需要手动插入值,除非特殊需求
基本上就这些。熟练掌握 INSERT 语句的各种写法,能更高效地管理 MySQL 数据。实际操作前建议先在测试环境验证语句正确性。










