MySQL插入多行

时间:2019-11-20 08:52:07  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用单个MySQL INSERT语句在表中插入多行。

MySQL INSERT多行语句

要将多行插入到表中,请使用以下形式的INSERT语句:

INSERT INTO table_name (column_list)
VALUES
	(value_list_1),
	(value_list_2),
	...
	(value_list_n);

使用以下语法:

  • 首先,在INSERT INTO关键字之后指定要插入的表的名称。

  • 其次,在表名后面的括号内指定一个逗号分隔的列列表。

  • 第三,在VALUES子句中指定用逗号分隔的行数据列表。
    列表的每个元素代表一行。
    每个元素中的值数必须与column_list中的列数相同。

MySQL INSERT多行限制

理论上,您可以使用单个INSERT语句插入任意数量的行。
但是,当MySQL服务器收到大小大于max_allowed_pa​​cket的INSERT语句时,它将发出一个太大的数据包错误并终止连接。

此语句显示max_allowed_pa​​cket变量的当前值:

SHOW VARIABLES LIKE 'max_allowed_packet';

这是我们的MySQL数据库服务器上的输出。
请注意,您服务器中的值可能不同。

数字是"值"列,是字节数。

要为max_allowed_pa​​cket变量设置新值,请使用以下语句:

SET GLOBAL max_allowed_packet=size;

其中size是一个整数,它表示最大允许数据包大小(以字节为单位)的数字。

请注意,max_allowed_pa​​cket对INSERT INTO .. SELECT语句没有影响。
INSERT INTO .. SELECT语句可以插入任意多的行。

MySQL INSERT多行示例

让我们举一个使用INSERT多行语句的示例。

首先,为演示创建一个名为项目的新表:

CREATE TABLE projects(
	project_id INT AUTO_INCREMENT, 
	name VARCHAR(100) NOT NULL,
	start_date DATE,
	end_date DATE,
	PRIMARY KEY(project_id)
);

其次,使用INSERT多行语句将两行插入到项目表中:

INSERT INTO 
	projects(name, start_date, end_date)
VALUES
	('AI for Marketing','2019-08-01','2019-12-31'),
	('ML for Sales','2019-05-15','2019-11-20');

MySQL发出以下消息:

2 row(s) affected

这意味着两行已成功插入到项目表中。

请注意,当您插入多行并使用LAST_INSERT_ID()函数获取AUTO_INCREMENT列的最后插入的ID时,您将仅获得第一插入的行的ID,而不是最后插入的行的ID。

第三,使用以下SELECT语句来验证插入:

SELECT * FROM projects;

此图显示输出:

在本教程中,您学习了如何使用MySQL INSERT语句在表中插入多行。