如何在 MySQL 中插入值

2025年3月17日 | 阅读 8 分钟

在 MySQL 中,用户可以使用 INSERT 语句在数据库表中添加值。这是一个数据操纵语言 (DML) 命令,因为它允许用户修改数据。用户可以执行 INSERT 查询来添加单行或多行数据到表中。

INSERT 查询的语法

下面是在 MySQL 中执行 INSERT 语句的语法

语法解释

用户需要以使用 INSERT INTO 关键字开始。然后,用户需要提及要在其中添加值的表的名称。之后,使用括号提及用户要添加数据值的列的列表。列在列表中用逗号分隔。

在第二部分,使用 VALUES 关键字指定表中的值。用户可以在括号中提及要插入的数据。值应该对应于上一步中提到的列。

假设用户想使用单个语句向表中添加多个数据值。插入多个值的语法略有不同,因为在特定的 VALUES 子句中,用户必须指定要添加到数据库表中的行的逗号分隔列表。插入多行时,每个元素代表表中的不同行。列值和行都用逗号分隔。括号中的值代表单行。

添加多行数据的语法如下

注意:用户需要确保列的数量与一行中插入的值的数量完全相同。用户不需要包含表的标识列或任何具有默认约束的列。

执行 INSERT 命令

在使用 MySQL 中的 INSERT 命令之前,用户需要先在数据库中创建一个表。可以使用数据定义语言 (DDL) 命令创建表。下面是创建数据库中 student_table 的查询。该查询包含 student_table 的定义。

使用上面定义的表,我们将讨论用户可以执行 INSERT 语句以在 MySQL 中添加数据值的场景。这些场景是

  • 使用 INSERT 查询将值插入表中。
  • 我们使用 INSERT 查询向表中添加多行数据值。
  • 使用 INSERT...SELECT 子句执行 INSERT 命令。它允许用户添加 SELECT 查询返回的输出值。
  • 使用 INSERT IGNORE 子句忽略执行语句时发生的错误。

在 INSERT 查询中添加单行值

假设用户想向表中添加学生的 fname 和 lname。然后用户可以在 MySQL 中执行此简单查询

用户执行上述查询后,数据值将被添加到表中。如果用户想查看更改,则用户必须执行 SELECT 语句来验证表中的修改。

输出

How To Insert Values in MySQL

一旦执行了 SELECT 查询,用户就可以检查数据值行是否已成功添加到表中。您还可以检查值是否已插入到相应的列中。这意味着值已按正确的列顺序添加。在上面的 INSERT 语句中,我提到了 fname 和 lname 列的值。

在定义表时,我们为 Dept_id 列声明了一个默认值。如果用户没有明确为某个特定列分配不同的值,MySQL 将自动为其分配默认值。类似地,对于 Student_id 列,我们使用了 auto_increment。它会自动为下一个记录分配比前一个值大一的值。MySQL 将同时分配 Student_id 和 Dept_id。

使用 INSERT 语句添加日期值

假设用户想为学生指定一个特定日期。在这种情况下,加入日期将添加到 student_table 的 Doj 列。添加日期的查询如下

成功执行此查询后,您可以执行以下查询。

使用单个 INSERT 语句添加多行

假设用户想向表中添加多个学生的信息。然后用户可以执行以下 SQL 查询以将数据添加到 student_table 中。

成功执行上述查询后,您可以使用 SELECT 语句查看更新后的表。

输出

How To Insert Values in MySQL

注意:在 MySQL 中,有一个配置参数负责限制数据包大小。最大数据包大小为 1GB。如果用户尝试输入超出最大数据包大小的数据,查询将返回一个错误,指示网络数据包过大。它将立即关闭连接。如果您想检查该参数,可以执行给定的命令

输出

您可以通过执行下面的 SQL 命令来更改最大允许数据包大小。

INSERT INTO SELECT 查询

假设用户想将由不同的 SELECT 语句生成的结果集添加到表中。用户可以执行 INSERT INTO SELECT 查询。语法如下

从语法中可以清楚地看出,用户可以使用 SELECT 查询代替执行 VALUES 子句。SELECT 查询负责从另一个表收集数据或合并不同的表。此查询主要用于用户需要为特定表创建备份时。

让我们举一个执行 INSERT INTO SELECT 查询的例子。在这种情况下,我们将使用一个 stud_table。现在我们将创建另一个表来为 stud_table 创建备份。stud_table 和 stud_backup 都应具有完全相同的结构。用户可以删除备份表中的 stud_backup 的外键和其他约束。

用户可以执行以下查询来定义 stud_backup。

现在,用户必须将数据从 stud_table 添加到 stud_backup 表。用户可以执行以下查询在 stud_backup 中创建数据副本。

用户可以通过执行 SELECT 查询来显示 stud_backup 中的数据,来确保备份表已成功创建。

在许多情况下,用户希望使用 INSERT 语句或 INSERT INTO SELECT 查询将多个数据值插入表中。INSERT 查询很有可能因错误而失败。它可能导致整个 INSERT 查询失败。

考虑一个场景,用户将数千条数据值插入表中,并且在插入记录时发生错误。那么整个 INSERT 查询将失败,用户将不得不从头开始重新执行整个查询。如果用户想避免此类问题,用户可以执行 INSERT IGNORE 语句。

假设用户执行 INSERT IGNORE 查询向表中添加多个数据值,即使在执行查询时发生错误。它将防止整个 INSERT 语句失败。

让我们使用一个用户可以使用 INSERT IGNORE 的例子。在这种情况下,创建 employeetbl。执行下面提到的查询来定义 employee。

这里 emp_id 被指定为主键。它约束了 emp_id 列,因为用户无法在表中插入重复记录。执行以下查询以使用 INSERT IGNORE 向表中添加数据

当您执行上述查询时,它将返回一个警告。

因此,在这种特定情况下,我们使用了 INSERT IGNORE 语句;因此,整个 INSERT 语句不会失败。它将被执行两次,确保另外两条记录将被添加到表中。要检查输入的数据值,请执行给定的 SELECT 查询

输出

How To Insert Values in MySQL

现在您可以看到只有两个值将被添加到表中,而不是三个。

当用户执行 INSERT INTO IGNORE 语句时,执行不会失败;相反,MySQL 会发出警告。它将数据值添加到相应的表列中。为了更好地理解这个概念,在 employees 中添加另一行。emp_name 的长度设置为十个字符。让我们尝试在 emp_name 中添加一个超出可添加到该列的最大值的值。使用 INSERT IGNORE INTO 执行下面提供的查询。

MySQL 将再次返回一个警告,但它会将值添加到表中。执行以下 SQL 查询以显示插入的记录。

它将返回以下输出

How To Insert Values in MySQL

您可以看到行已添加到表中,但 MySQL 缩短了 emp_name 列的值。

总结

在本教程中,我们讨论了用户如何通过执行 INSERT 语句向 MySQL 表添加一行或多行。我们还讨论了用户如何将另一个语句生成的结果集添加到表中的值。此外,我们还讨论了如何使用 INSERT IGNORE 语句忽略在执行 INSERT 查询时生成的错误。