SELECT * FROM users;Convenient for quick exploration, but explicit column lists are usually better in production queries.
practical MySQL CRUD queries including filtering, sorting, pagination basics, inserts, updates, deletes, truncation, and upsert patterns.
The most common retrieval patterns developers use every day.
SELECT * FROM users;Convenient for quick exploration, but explicit column lists are usually better in production queries.
SELECT id, email, full_name FROM users;Reducing selected columns helps readability and can reduce network overhead.
SELECT id, email FROM users WHERE is_active = 1;`WHERE` narrows the result set before ordering and limiting.
SELECT id, email, created_at FROM users ORDER BY created_at DESC LIMIT 20;A common pattern for feeds, admin lists, and dashboards.
SELECT DISTINCT status FROM orders ORDER BY status;Useful for reporting, filters, and data exploration.
SELECT id, email FROM users WHERE email LIKE '%@example.com';For large datasets, full-text or prefix-specific search patterns may be more efficient.
SELECT id, created_at FROM orders WHERE created_at BETWEEN '2026-01-01' AND '2026-01-31 23:59:59';Use explicit endpoints to avoid off-by-one issues in reporting.
Modify data safely with common write patterns.
INSERT INTO users (email, full_name) VALUES ('ava@example.com', 'Ava Stone');Always listing target columns makes inserts safer during schema changes.
INSERT INTO users (email, full_name) VALUES
('liam@example.com', 'Liam Cole'),
('mia@example.com', 'Mia Shaw');Batch inserts reduce round trips and are often much faster than many single-row statements.
UPDATE users SET is_active = 0 WHERE email LIKE '%@old-domain.com';Always include a restrictive `WHERE` clause unless you intentionally want to update every row.
DELETE FROM sessions WHERE expires_at < NOW();A classic cleanup task for expired sessions or temporary data.
TRUNCATE TABLE staging_events;Faster than `DELETE` for clearing a whole table, but behaves differently with transactions and foreign keys.
Insert a row or update it when a unique key already exists.
INSERT INTO users (email, full_name)
VALUES ('ava@example.com', 'Ava Stone')
ON DUPLICATE KEY UPDATE full_name = VALUES(full_name);A classic MySQL upsert pattern for unique-keyed rows.
Insert or delete-and-insert based on unique key conflicts.
REPLACE INTO feature_flags (flag_key, flag_value) VALUES ('beta_ui', 'on');`REPLACE` can have surprising semantics because it may delete the old row and insert a new one.