MySQL插入多行
简介:在本教程中,您将学习如何使用单个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_packet的INSERT语句时,它将发出一个太大的数据包错误并终止连接。
此语句显示max_allowed_packet变量的当前值:
SHOW VARIABLES LIKE 'max_allowed_packet';
这是我们的MySQL数据库服务器上的输出。
请注意,您服务器中的值可能不同。
数字是"值"列,是字节数。
要为max_allowed_packet变量设置新值,请使用以下语句:
SET GLOBAL max_allowed_packet=size;
其中size是一个整数,它表示最大允许数据包大小(以字节为单位)的数字。
请注意,max_allowed_packet对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语句在表中插入多行。