MySQL 的 INSERT插入数据的使用方法

 更新时间:2026年03月26日 16:54:23   作者:xianjian0912  
本文详细介绍了MySQL中INSERT语句的使用方法,包括插入单行或多行数据、使用SELECT语句插入数据、条件插入、高级用法(LOW_PRIORITY、DELAYED修饰符)以及注意事项,感兴趣的朋友跟随小编一起看看吧

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 中插入数据。无论是基础的单行插入,还是高级的插入否则更新和数据迁移。

到此这篇关于MySQL 的 INSERT插入数据的方法的文章就介绍到这了,更多相关mysql insert插入数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于MySQL查询语句的优化详解

    关于MySQL查询语句的优化详解

    这篇文章主要介绍了MySQL查询语句的优化方法,分别介绍了子查询优化,分页查询优化以及排序查询优化,对学习有一定的帮助,需要的小伙伴可以参考一下
    2023-04-04
  • MySQL按年/月/周/日/小时分组查询、排序、limit及判空用法实例

    MySQL按年/月/周/日/小时分组查询、排序、limit及判空用法实例

    我们在用Mysql抽取数据时候,经常需要按照天、周、月等不同的粒度对数据进行分组统计,下面这篇文章主要给大家介绍了关于MySQL按年/月/周/日/小时分组查询、排序、limit及判空用法的相关资料,需要的朋友可以参考下
    2023-03-03
  • MySQL压缩版zip安装问题的解决方法

    MySQL压缩版zip安装问题的解决方法

    这篇文章主要给大家介绍了关于MySQL压缩版zip安装问题的解决方法,文中介绍的非常详细,对大家的学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 一文教你MySQL如何优化无索引的join

    一文教你MySQL如何优化无索引的join

    所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找,下面这篇文章主要给大家介绍了关于MySQL如何优化无索引join的相关资料,需要的朋友可以参考下
    2022-01-01
  • 最新MySQL高级SQL语句大全

    最新MySQL高级SQL语句大全

    这篇文章主要介绍了MySQL高级SQL语句,主要包括常用查询知识order by按关键字排序的sql语句,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 一文详解MySQL中避免隐式转换的最佳实践

    一文详解MySQL中避免隐式转换的最佳实践

    在MySQL数据库开发中,隐式类型转换是一个常见但容易被忽视的问题,本文将深入探讨MySQL中的隐式转换机制,分析其带来的问题,并提供实用的解决方案来帮助开发者避免这些陷阱,感兴趣的小伙伴可以了解下
    2026-02-02
  • mysql 8.0.22压缩包完整安装与配置教程图解(亲测安装有效)

    mysql 8.0.22压缩包完整安装与配置教程图解(亲测安装有效)

    这篇文章主要介绍了mysql 8.0.22压缩包完整安装与配置教程图解(亲测安装有效),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • MySQL在线开启或禁用GTID模式

    MySQL在线开启或禁用GTID模式

    本文详细讲解了MySQL在线开启或禁用GTID模式的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • mysql导入sql文件出错的解决方法

    mysql导入sql文件出错的解决方法

    本文主要介绍了mysql导入sql文件出错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • MySQL学习之DDL数据库定义与操作

    MySQL学习之DDL数据库定义与操作

    本文详细介绍SQL中DDL的数据库操作,包括查询、创建、删除数据库和表的操作,以及修改表结构等功能,通过这些操作,读者可以深入了解如何使用SQL进行数据库管理和维护,需要的朋友可以参考下
    2024-11-11

最新评论