SQL作为操作关系型数据库的标准语言,插入数据是最核心的基础操作之一,正确掌握插入语法才能保证数据准确写入数据库表,避免各类运行错误。不同的插入场景对应不同的语法规则,需要结合实际需求选择最合适的写法。

基础插入语法:插入单条完整数据
最常用的插入场景是向表中插入一条完整的记录,此时需要保证插入的数据和表的所有字段一一对应,语法结构如下:
-- 插入单条完整数据,values后的值需要和表字段顺序完全一致 INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);
例如有一张用户表user_info,包含id、username、age、email四个字段,插入一条完整用户记录的代码如下:
-- 向user_info表插入一条完整用户数据 INSERT INTO user_info VALUES (1, '张三', 25, 'zhangsan@ipipp.com');
指定字段插入数据
如果不需要给所有字段赋值,或者表的某些字段有默认值、自增属性,可以只指定需要插入的字段,语法如下:
-- 指定字段插入,未指定的字段如果有默认值会取默认值,自增字段会自动生成 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
还是以上面的user_info表为例,假设id是自增字段,只需要插入用户名、年龄和邮箱,代码如下:
-- 只插入指定字段,id会自动自增生成
INSERT INTO user_info (username, age, email) VALUES ('李四', 28, 'lisi@ipipp.com');
插入多条数据
如果需要一次性插入多条记录,不需要执行多次插入语句,可以在VALUES后跟上多组值,用逗号分隔,提升插入效率,语法如下:
-- 一次性插入多条数据 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1_1, 值1_2, ...), (值2_1, 值2_2, ...), (值3_1, 值3_2, ...);
示例:一次性向user_info表插入三条用户数据:
-- 批量插入三条用户数据
INSERT INTO user_info (username, age, email)
VALUES
('王五', 22, 'wangwu@ipipp.com'),
('赵六', 30, 'zhaoliu@ipipp.com'),
('孙七', 26, 'sunqi@ipipp.com');
从其他表插入数据
如果需要将一张表的数据复制到另一张结构相似的表中,可以使用INSERT INTO ... SELECT语法,不需要手动逐个写值,语法如下:
-- 从源表查询数据插入到目标表,字段数量和类型需要匹配 INSERT INTO 目标表名 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 源表名 WHERE 筛选条件;
示例:将user_temp表中年龄大于25岁的用户数据插入到user_info表中:
-- 从临时用户表筛选符合条件的数据插入到正式用户表 INSERT INTO user_info (username, age, email) SELECT username, age, email FROM user_temp WHERE age > 25;
插入数据的注意事项
- 数据类型必须匹配:插入的值需要和对应字段的数据类型一致,比如数值字段不能插入字符串,日期字段需要符合日期格式要求。
- 约束校验:如果表设置了主键、唯一约束、非空约束等,插入的数据不能违反这些约束,否则会插入失败。比如主键重复、唯一字段值重复、非空字段没有赋值都会报错。
- 特殊字符处理:如果插入的字符串中包含单引号,需要使用两个单引号转义,避免语法错误。
- 不同数据库差异:部分数据库的插入语法有细微差异,比如MySQL支持
INSERT IGNORE忽略重复插入错误,Oracle的批量插入语法和MySQL略有不同,实际使用时需要参考对应数据库的官方文档。
掌握以上几种SQL插入数据的方法,就可以覆盖绝大多数日常开发中的数据写入场景,操作前先确认表结构和约束规则,能有效减少插入错误的发生。
SQL插入数据INSERT_INTO数据库操作SQL语法修改时间:2026-06-11 18:15:29