Skip to content

MySQL Cheat Sheet

MySQL cheatsheet providing an advanced, categorized reference of MySQL syntax and features used in production databases.

Connecting to MySQL

Commands for connecting to and exiting the MySQL client.

mysql -u username -p
mysql -u username -p database_name
exit;

Database Management

Creating, selecting, and removing databases.

CREATE DATABASE db_name;
SHOW DATABASES;
USE db_name;
DROP DATABASE db_name;
SHOW TABLES;

Table Creation

Defining tables, primary keys, and constraints.

CREATE TABLE table_name (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  created_at DATETIME
);
CREATE TABLE orders (
  id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

Data Types

Common MySQL data types.

CHAR, VARCHAR, TEXT, MEDIUMTEXT, LONGTEXT
INT, BIGINT, FLOAT, DOUBLE, DECIMAL
DATE, TIME, DATETIME, TIMESTAMP, YEAR
ENUM, SET, BLOB
VARCHAR(255)
DECIMAL(10,2)

ALTER TABLE

Modifying existing tables.

ALTER TABLE table_name ADD column_name datatype;
ALTER TABLE table_name DROP column_name;
ALTER TABLE table_name MODIFY column_name datatype;
ALTER TABLE table_name RENAME new_table_name;
ALTER TABLE users ADD email VARCHAR(255);

DROP and TRUNCATE

Removing tables or data.

DROP TABLE table_name;
TRUNCATE TABLE table_name;
TRUNCATE TABLE logs;

INSERT

Adding rows to tables.

INSERT INTO table_name (col1, col2)
VALUES (val1, val2);
INSERT INTO users (name, age) VALUES ('Alice', 30);

INSERT Variants

Advanced insert behaviors.

INSERT IGNORE INTO table_name VALUES (...);
REPLACE INTO table_name VALUES (...);
INSERT INTO table_name
ON DUPLICATE KEY UPDATE column = value;
INSERT INTO users (email)
VALUES ('a@test.com')
ON DUPLICATE KEY UPDATE email = VALUES(email);

SELECT

Querying data from tables.

SELECT column_list
FROM table_name
WHERE condition
ORDER BY column
LIMIT n OFFSET m;
SELECT id, name FROM users WHERE age > 18 ORDER BY name;

WHERE Conditions

Filtering rows.

=, !=, <, >, <=, >=
BETWEEN, IN, LIKE, IS NULL
SELECT * FROM users WHERE name LIKE 'A%';

JOINs

Combining rows from multiple tables.

SELECT *
FROM table1
INNER JOIN table2 ON condition;
LEFT JOIN
RIGHT JOIN
CROSS JOIN
SELECT o.id, u.name
FROM orders o
INNER JOIN users u ON o.user_id = u.id;

GROUP BY and HAVING

Aggregation and filtering grouped results.

SELECT column, COUNT(*)
FROM table
GROUP BY column
HAVING COUNT(*) > 1;
SELECT status, COUNT(*) FROM orders GROUP BY status;

Aggregate Functions

Functions operating on groups.

COUNT(), SUM(), AVG(), MIN(), MAX()
SELECT AVG(price) FROM products;

Subqueries

Nested queries.

SELECT *
FROM table
WHERE column IN (SELECT column FROM other_table);
SELECT name FROM users
WHERE id IN (SELECT user_id FROM orders);

EXISTS

Checking existence of rows.

SELECT *
FROM table
WHERE EXISTS (SELECT 1 FROM other_table WHERE condition);
SELECT * FROM users u
WHERE EXISTS (
  SELECT 1 FROM orders o WHERE o.user_id = u.id
);

UNION

Combining result sets.

SELECT column FROM table1
UNION
SELECT column FROM table2;
UNION ALL

Indexes

Improving query performance.

CREATE INDEX idx_name ON table(column);
CREATE UNIQUE INDEX idx_unique ON table(column);
DROP INDEX idx_name ON table;
CREATE INDEX idx_email ON users(email);

Views

Stored query definitions.

CREATE VIEW view_name AS
SELECT column FROM table;
DROP VIEW view_name;

Transactions

Atomic execution of statements.

START TRANSACTION;
COMMIT;
ROLLBACK;
SAVEPOINT sp_name;
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
ROLLBACK;

Stored Procedures

Reusable SQL routines.

CREATE PROCEDURE proc_name ()
BEGIN
  SQL statements;
END;
CALL proc_name();

Functions

User-defined functions.

CREATE FUNCTION func_name(param datatype)
RETURNS datatype
BEGIN
  RETURN value;
END;
SELECT func_name(10);

Triggers

Automatic execution on table events.

CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
  SQL statements;
END;
DROP TRIGGER trigger_name;

String Functions

Common string operations.

CONCAT(), LENGTH(), LOWER(), UPPER()
SUBSTRING(), REPLACE(), TRIM()
SELECT CONCAT(first_name, ' ', last_name) FROM users;

Numeric Functions

Numeric calculations.

ABS(), ROUND(), CEIL(), FLOOR(), MOD(), SQRT()
SELECT ROUND(123.456, 2);

Date and Time Functions

Working with dates and times.

NOW(), CURDATE(), CURTIME()
DATE_ADD(), DATE_SUB(), DATEDIFF()
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY);

Casting

Type conversion.

CAST(value AS datatype);
SELECT CAST('123' AS SIGNED);

Performance and Debugging

Inspecting query behavior.

EXPLAIN SELECT ...
SHOW PROCESSLIST;
EXPLAIN SELECT * FROM users WHERE email = 'a@test.com';

Backup and Restore

Exporting and importing data.

mysqldump -u user -p db_name > backup.sql
mysql -u user -p db_name < backup.sql