news 2026/6/10 15:42:50

MySQL 的 INSERT(插入数据)详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 的 INSERT(插入数据)详解
MySQL 的 INSERT(插入数据)详解

在 MySQL 中,INSERT语句用于向数据库表中添加新的记录。INSERT语句非常灵活,支持多种语法形式,可以根据具体需求选择合适的用法。以下是INSERT语句的详细语法和使用示例。

1. 插入单行数据
1.1 指定列名和值

这是最常见的INSERT语法,适用于插入单行数据。你需要指定列名和对应的值。

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

示例

假设我们有一个名为users的表,包含id,username,email,birthdate,is_active字段。我们想插入一条新记录:

INSERT INTO users (username, email, birthdate, is_active) VALUES ('test', 'test@runoob.com', '1990-01-01', true);
1.2 省略列名

如果你要插入的值涵盖了表中的所有列,可以省略列名部分。但请注意,值的顺序必须与表中列的顺序相同。

INSERT INTO table_name VALUES (value1, value2, value3, ...);

示例

假设users表的列顺序是id,username,email,birthdate,is_active,并且id是自增列:

INSERT INTO users VALUES (NULL, 'test', 'test@runoob.com', '1990-01-01', true);
2. 插入多行数据
2.1 使用多个VALUES子句

你可以在VALUES子句中指定多组值,从而一次性插入多行数据。

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...), (value1, value2, value3, ...), (value1, value2, value3, ...);

示例

INSERT INTO users (username, email, birthdate, is_active) VALUES ('test1', 'test1@runoob.com', '1985-07-10', true), ('test2', 'test2@runoob.com', '1988-11-25', false), ('test3', 'test3@runoob.com', '1993-05-03', true);
3. 使用SELECT语句插入数据
3.1 插入查询结果

你可以使用SELECT语句从其他表中选择数据并插入到目标表中。这对于数据迁移和归档非常有用。

INSERT INTO target_table (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM source_table WHERE condition;

示例

假设我们有两个表employeessenior_employees,我们想将employees表中年龄大于 30 的员工信息插入到senior_employees表中:

INSERT INTO senior_employees (id, name, age) SELECT id, name, age FROM employees WHERE age > 30;
4. 条件插入
4.1 使用INSERT IGNORE

如果你希望在插入数据时忽略已经存在的记录(即不抛出错误),可以使用INSERT IGNORE

INSERT IGNORE INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

示例

INSERT IGNORE INTO users (username, email, birthdate, is_active) VALUES ('test', 'test@runoob.com', '1990-01-01', true);
4.2 使用ON DUPLICATE KEY UPDATE

如果你希望在插入数据时遇到主键或唯一键冲突时更新现有记录,可以使用ON DUPLICATE KEY UPDATE

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...) ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2), column3 = VALUES(column3);

示例

INSERT INTO users (id, username, email, birthdate, is_active) VALUES (1, 'test', 'test@runoob.com', '1990-01-01', true) ON DUPLICATE KEY UPDATE username = VALUES(username), email = VALUES(email), birthdate = VALUES(birthdate), is_active = VALUES(is_active);
5. 使用SET语法插入数据
5.1 插入部分列的值

你可以使用SET语法来插入数据,这种方式更适用于需要明确指定列名和值的场景。

INSERT INTO table_name SET column1 = value1, column2 = value2, column3 = value3;

示例

INSERT INTO users SET username = 'test', email = 'test@runoob.com', birthdate = '1990-01-01', is_active = true;
6. 高级用法
6.1 使用LOW_PRIORITY修饰符

LOW_PRIORITY修饰符会使INSERT语句延迟执行,直到没有其他客户端从表中读取数据。

INSERT LOW_PRIORITY INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
6.2 使用DELAYED修饰符

DELAYED修饰符适用于MyISAM,MEMORYARCHIVE表,使得INSERT语句立即返回,但实际插入操作可能稍后执行。

INSERT DELAYED INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
注意事项
  1. 数据类型匹配:确保插入的数据类型与列定义一致,否则可能会导致错误。
  2. 唯一约束冲突:插入的数据如果违反了唯一约束,可以使用INSERT IGNOREON DUPLICATE KEY UPDATE来处理。
  3. 性能优化:对于大量数据的插入,可以采用批量插入的方式,并适当调整 MySQL 的配置参数,如bulk_insert_buffer_size,以提高性能。

通过以上详细的介绍和示例,基本上能够熟练地使用INSERT语句在 MySQL 中插入数据。无论是基础的单行插入,还是高级的插入否则更新和数据迁移。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:59:26

基于python深度学习的面部表情识别系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…

作者头像 李华
网站建设 2026/6/10 10:59:14

【ITK手册006】itk::Point 深度解析与实用指南

【ITK手册006】itk::Point 深度解析与实用指南 0. 概述 在 ITK (Insight Segmentation and Registration Toolkit) 的几何框架中,itk::Point 是最基础的类之一。它用于表示 n 维欧几里得空间中的一个静态位置(坐标)。 与 itk::Vector&#xf…

作者头像 李华
网站建设 2026/6/10 10:53:46

论文写作隐藏技巧:7款AI神器5分钟生成3万字+真实参考文献揭秘

开头:90%的学生不知道的论文“黑科技”,导师私藏的学术加速密码 你是否经历过: 对着空白文档熬到凌晨3点,初稿还停留在“研究背景”?导师的修改意见像“天书”,改了3遍还是被打回?查重报告飘红…

作者头像 李华
网站建设 2026/6/10 2:01:40

MySQL 篇 - Java 连接 MySQL 数据库并实现数据交互

在现代应用中,数据库是不可或缺的一部分。Java 作为一种广泛使用的编程语言,提供了丰富的 API 来与各种数据库进行交互。本文将详细介绍如何在 Java 中连接 MySQL 数据库,并实现基本的数据交互功能。 一、环境准备 1.1 安装 MySQL 首先&am…

作者头像 李华
网站建设 2026/6/10 10:59:11

10347_基于Springboot的新疆旅游管理系统

1、项目包含项目源码、项目文档、数据库脚本、软件工具等资料;带你从零开始部署运行本套系统。2、项目介绍随着社会经济水平不断地提高,人们的生活条件也越来越好,除了注重日常的吃穿用度之外,越来越多的人开始去到别的城市旅游&a…

作者头像 李华
网站建设 2026/6/10 10:59:16

CES观察丨从个人AI到物理AI,高通的AI战略跃迁

文|刘俊宏编|王一粟每年CES最大的看点,还得是消费电子领域中各种各样的“怪东西”。2026年的CES,也充满了各种奇思妙想的AI硬件。能记忆并提供情绪价值的AI相机、监控用户情绪的AI吊坠、能根据用户情绪显示画面的AI相框、AI指导用…

作者头像 李华