How to Insert Data in MySQL

Last updated July 24, 2026 · By the SaturnSQL team

Use INSERT INTO ... VALUES with one or many row tuples, or INSERT ... SELECT to copy query results. Multi-row inserts are much faster than one INSERT per row.

Listing the column names is worth the extra typing. Without them the tuple has to match the table's column order exactly, so the statement breaks the next time someone adds a column. A single multi-row INSERT is dramatically faster than one statement per row because it is one round trip and one transaction.

INSERT INTO orders (customer_id, amount)
VALUES (101, 42.50), (102, 17.00);

Insert from a query

INSERT ... SELECT copies rows entirely on the server, with no data crossing the network to your client. The SELECT column order has to line up with the target's, so name the columns on both sides whenever the tables are not identical. Large copies hold locks for the duration, so batch them with a LIMIT and a loop if that becomes a problem.

INSERT INTO orders_archive
SELECT * FROM orders WHERE created_at < '2025-01-01';

Run this in SaturnSQL

SaturnSQL is a browser-based SQL editor for teams: shared query library, schema-aware autocomplete, and scheduled exports to Google Sheets and Slack.

Try it free

Related MySQL guides