MySQL INSERT Multiple Rows
In MySQL, the INSERT statement allows you to insert multiple rows of data into a table in a single query. This method is more efficient than inserting rows one at a time, especially when dealing with large datasets.
Syntax
table_name: The table where data will be inserted.column1, column2, ...: The columns where the values will be inserted.value1a, value2a, ...: The values for each row.
Examples
1. Insert Multiple Rows
Suppose you have a table named employees with columns: id, name, and position.
This query inserts three rows into the employees table.
2. Insert Data into All Columns
If all columns are being populated, you can omit the column names:
3. Insert with Auto-Increment
If the table has an auto-increment column (e.g., id), you can exclude it from the query.
In this case, MySQL will automatically generate values for the id column.
Benefits of Inserting Multiple Rows
- Efficiency: Reduces the number of database calls, improving performance.
- Simplicity: A single query for multiple rows makes the code cleaner.
- Batch Processing: Ideal for inserting bulk data into a table.
Limitations
- Query Length: The maximum length of a query depends on the MySQL server configuration (
max_allowed_packet). Ensure it can handle large queries. - Duplicate Keys: If a row conflicts with a unique constraint, the query will fail unless
IGNOREorON DUPLICATE KEY UPDATEis used.
Advanced Techniques
1. Using IGNORE to Skip Duplicates
If you want to skip rows that cause a duplicate key error, use the IGNORE keyword:
2. Using ON DUPLICATE KEY UPDATE
If a row conflicts with a unique constraint, update the existing row instead of inserting a new one:
Best Practices
- Validate Data: Ensure the values match the data types and constraints of the table.
- Batch Inserts: For very large datasets, break the inserts into smaller batches to avoid hitting query length limits.
- Use Transactions: For critical data inserts, wrap the operation in a transaction for rollback in case of failure.
Conclusion
Inserting multiple rows in MySQL is straightforward and offers significant performance benefits compared to inserting rows one at a time. By using options like IGNORE or ON DUPLICATE KEY UPDATE, you can handle unique constraints and other conflicts effectively.

