INSERT

, and

Syntax

INSERT INTO table (columns) VALUES (values);
INSERT INTO table (columns) VALUES (v1), (v2), ...;
INSERT INTO table (columns) SELECT ... FROM ...;

Parameters

ParametersDescriptionExamplesLevel
VALUES INSERT INTO users (username) VALUES ('alice'); Common
ON DUPLICATE KEY UPDATE New INSERT INTO ... ON DUPLICATE KEY UPDATE count = count + 1; Advanced
IGNORE , INSERT IGNORE INTO users (email) VALUES ('a@b.com'); Advanced
SET Syntax INSERT INTO users SET username='bob', email='b@b.com'; Common
SELECT INSERT INTO archive SELECT * FROM orders WHERE status = 3; Advanced

Examples

INSERT INTO users (username, email, password_hash)
VALUES ('alice', 'alice@example.com', SHA2('password123', 256));
id and

INSERT INTO products (name, price, stock, category_id) VALUES
  ('iPhone 15', 5999.00, 100, 1),
  ('MacBook Pro', 12999.00, 50, 2),
  ('AirPods Pro', 1899.00, 200, 3);
, 1000-5000

New(UPSERT)

INSERT INTO user_stats (user_id, login_count, last_login)
VALUES (1001, 1, NOW())
ON DUPLICATE KEY UPDATE
  login_count = login_count + 1,
  last_login = NOW();
user_id, New,

INSERT INTO order_archive (id, order_no, user_id, total_amount, created_at)
SELECT id, order_no, user_id, total_amount, created_at
FROM orders
WHERE status = 3 AND created_at < '2025-01-01';

Common Errors

ERROR 1062 (23000): Duplicate entry 'xxx' for key 'PRIMARY'. ON DUPLICATE KEY UPDATE INSERT IGNORE
ERROR 1136 (21S01): Column count doesn't match value countand, VALUES

Tips

Related Commands