当前位置: 首页 > news >正文

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);

⚠️ 注意:如果某些字段有默认值(如 DEFAULTAUTO_INCREMENT),不写也可以自动填充。

3. 插入多条记录(批量插入)

INSERT INTO table_name (column1, column2)
VALUES (value1_1, value1_2),(value2_1, value2_2),...
;

 示例讲解

假设我们有一个 users 表,结构如下:

idnameagegendercreated_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;
http://www.lqws.cn/news/464509.html

相关文章:

  • Armbian 开机启动点灯脚本
  • 【C++特殊工具与技术】局部类
  • 从事登高架设作业需要注意哪些安全事项?
  • 57-Oracle SQL Profile(23ai)实操
  • 内容搜索软件AnyTXT.Searcher忘记文件名也能搜,全文检索 1 秒定位文件
  • Java求职者面试指南:微服务技术与源码原理深度解析
  • Rabbitmq集成springboot,手动确认消息basicAck、basicNack、basicReject的使用
  • 在微信小程序wxml文件调用函数实现时间转换---使用wxs模块实现
  • WevServer实现:异步日志写与HTTP连接
  • Zephyr 调试实用指南:日志系统、Shell CLI 与 GDB 全面解析
  • CLion开发Qt桌面程序_git的简单使用_小团体
  • 闲庭信步使用SV搭建图像测试平台:第五课——使用task
  • pyqt logger类与界面分开
  • 从语义到推荐:大语言模型(LLM)如何驱动智能选车系统?
  • Mac电脑-Markdown编辑器-Typora
  • c++26新功能—hive容器
  • 税务 VR 虚拟体验,带来全新办税感受
  • 【软考高级系统架构论文】论NoSQL数据库技术及其应用
  • HarmonyOS 5的分布式通信矩阵是如何工作的?
  • 鸿蒙NEXT-鸿蒙三层架构搭建,嵌入HMRouter,实现便捷跳转,新手攻略。(1/3)
  • 在AI普及的大环境下神经网络在新能源汽车热管理系统中的应用简介
  • 无线Debugger攻防全解:原理剖析与突破之道
  • Qt中的布局
  • 深入浅出:Go语言中的Cookie、Session和Token认证机制
  • 关于 Kyber:抗量子密码算法 Kyber 详解
  • 首页实现多级缓存
  • 【信号与系统四】采样和通信系统
  • rent8_wechat-最常用出租屋管理系统-微信小程序
  • Mac Parallels Desktop Kali 2025 代理设置
  • 外卖之后再度进军酒旅,京东多线出击的逻辑是什么?