SQL关键字三分钟入门:INSERT INTO —— 插入数据详解
在数据库操作中,除了查询数据,我们还需要经常添加新记录。例如:
- 添加一个新用户;
- 插入一条订单信息;
- 批量导入一批商品数据。
这时候就需要使用 SQL 中非常基础但极其重要的关键字 —— INSERT INTO
!
它是向表中插入新行(记录)的核心方式,掌握它能让你轻松地为数据库“添砖加瓦”。
什么是 INSERT INTO?
INSERT INTO
是 SQL 中用于将新记录插入到表中的关键字语句。
你可以把它理解为:“我要往这张表里添加一行新数据”。
基本语法
1. 插入完整的一行数据(指定所有字段)
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
2. 插入部分字段(只写需要的列)
INSERT INTO table_name (column1, column2)
VALUES (value1, value2);
⚠️ 注意:如果某些字段有默认值(如
DEFAULT
、AUTO_INCREMENT
),不写也可以自动填充。
3. 插入多条记录(批量插入)
INSERT INTO table_name (column1, column2)
VALUES (value1_1, value1_2),(value2_1, value2_2),...
;
示例讲解
假设我们有一个 users
表,结构如下:
id | name | age | gender | created_at |
---|---|---|---|---|
其中:
id
是主键,自增;created_at
默认值为当前时间。
示例1:插入一条完整的记录
INSERT INTO users (name, age, gender, created_at)
VALUES ('张三', 20, '男', '2025-06-20');
这会插入一个名为“张三”,年龄20,性别男,注册时间为今天的新用户。
示例2:插入部分字段(省略自增和默认字段)
INSERT INTO users (name, age, gender)
VALUES ('李四', 22, '女');
因为 id
是自增字段,created_at
有默认值,所以可以不写,系统会自动处理。
示例3:批量插入多个用户
INSERT INTO users (name, age, gender)
VALUES('王五', 21, '男'),('赵六', 19, '女'),('孙七', 23, '男');
一次插入三条记录,效率更高,适合批量导入数据。
示例4:从其他表插入数据(INSERT INTO SELECT)
有时候你想把一张表的数据插入到另一张结构相似的表中:
INSERT INTO users_backup (name, age, gender)
SELECT name, age, gender FROM users WHERE age > 20;
将 users
表中年龄大于20岁的用户插入到 users_backup
表中。
注意
操作技巧 | 使用建议 |
---|---|
主键或唯一约束冲突 | 插入时若违反主键或唯一索引约束,会报错;可使用 INSERT IGNORE 或 ON CONFLICT (PostgreSQL)避免错误 |
自动增长字段 | 如果是自增主键,可以不写该列,系统会自动分配 |
默认值 | 若某列设置了默认值,可以不写,系统会自动填默认值 |
批量插入性能更优 | 多条记录尽量用一个 INSERT 语句插入,而不是多次单条插入 |
数据类型匹配 | 插入的值必须与字段类型匹配,否则可能报错或插入失败 |
总结对比表
场景 | SQL 示例 |
---|---|
插入单条记录 | INSERT INTO users (name, age) VALUES ('张三', 20); |
插入部分字段 | INSERT INTO users (name, age) VALUES ('李四', 22); |
批量插入多条记录 | INSERT INTO users (...) VALUES (...), (...), (...); |
从其他表插入数据 | INSERT INTO target_table SELECT * FROM source_table; |