SQL Cheatsheet
Comprehensive SQL command reference with 70+ commands organized by category. Search, filter by category, save favorites, and click to copy any command.
SQL Cheatsheet
Essential SQL commands for database operations
Commands
Categories
Favorites
Sections
SELECT * FROM table_nameSelect all columns
SELECT col1, col2 FROM table_nameSelect specific columns
SELECT DISTINCT col FROM table_nameSelect unique values
SELECT * FROM table_name LIMIT 10Limit results
SELECT * FROM table_name OFFSET 10 LIMIT 10Pagination
SELECT * FROM t WHERE col = 'value'Equal condition
SELECT * FROM t WHERE col != 'value'Not equal
SELECT * FROM t WHERE col BETWEEN 1 AND 10Range condition
SELECT * FROM t WHERE col IN ('a', 'b', 'c')Multiple values
SELECT * FROM t WHERE col LIKE 'pat%'Pattern matching
SELECT * FROM t WHERE col IS NULLNULL check
SELECT * FROM t ORDER BY col ASCSort ascending
SELECT * FROM t ORDER BY col DESCSort descending
SELECT * FROM t ORDER BY c1 ASC, c2 DESCMultiple sort columns
INSERT INTO t (c1, c2) VALUES ('v1', 'v2')Insert single row
INSERT INTO t VALUES ('v1', 'v2', 'v3')Insert all columns
INSERT INTO t (c1, c2) VALUES ('a', 'b'), ('c', 'd')Insert multiple rows
INSERT INTO t SELECT * FROM other_tableInsert from select
UPDATE t SET col = 'value' WHERE id = 1Update single column
UPDATE t SET c1 = 'v1', c2 = 'v2' WHERE id = 1Update multiple columns
UPDATE t SET col = col + 1 WHERE id = 1Increment value
DELETE FROM t WHERE id = 1Delete specific rows
DELETE FROM tDelete all rows
TRUNCATE TABLE tFast delete all (no rollback)
CREATE TABLE t (id INT PRIMARY KEY, name VARCHAR(100))Create basic table
CREATE TABLE t (id SERIAL PRIMARY KEY, name TEXT NOT NULL)Auto-increment (PostgreSQL)
CREATE TABLE IF NOT EXISTS t (id INT)Create if not exists
ALTER TABLE t ADD COLUMN col VARCHAR(50)Add column
ALTER TABLE t DROP COLUMN colDrop column
ALTER TABLE t RENAME COLUMN old TO newRename column
ALTER TABLE t RENAME TO new_nameRename table
DROP TABLE tDelete table
DROP TABLE IF EXISTS tDelete if exists
TRUNCATE TABLE tRemove all rows
SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.t1_idInner join - matching rows only
SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.t1_idLeft join - all from left table
SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.t1_idRight join - all from right table
SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.t1_idFull join - all from both tables
SELECT * FROM t1 CROSS JOIN t2Cross join - cartesian product
SELECT * FROM t1 JOIN t2 USING (col)Join using common column
SELECT * FROM t1 NATURAL JOIN t2Natural join - auto match columns
SELECT * FROM t1 a JOIN t1 b ON a.parent_id = b.idSelf join
💡 INNER JOIN is the default when using just JOIN
SELECT COUNT(*) FROM tCount all rows
SELECT COUNT(DISTINCT col) FROM tCount unique values
SELECT SUM(col) FROM tSum of values
SELECT AVG(col) FROM tAverage value
SELECT MIN(col), MAX(col) FROM tMin and max values
SELECT col, COUNT(*) FROM t GROUP BY colGroup and count
SELECT col, COUNT(*) FROM t GROUP BY col HAVING COUNT(*) > 5Filter groups
SELECT * FROM t WHERE col IN (SELECT col FROM t2)Subquery in WHERE
SELECT * FROM (SELECT * FROM t) AS subSubquery in FROM
SELECT * FROM t WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.id = t.id)EXISTS subquery
WITH cte AS (SELECT * FROM t) SELECT * FROM cteBasic CTE
WITH RECURSIVE cte AS (...) SELECT * FROM cteRecursive CTE
💡 CTEs improve readability and can be referenced multiple times
col INT PRIMARY KEYPrimary key
col VARCHAR(50) NOT NULLNot null constraint
col VARCHAR(50) UNIQUEUnique constraint
col INT DEFAULT 0Default value
col INT REFERENCES other_table(id)Foreign key
PRIMARY KEY (c1, c2)Composite primary key
FOREIGN KEY (col) REFERENCES t(id) ON DELETE CASCADEFK with cascade delete
CREATE INDEX idx ON t (col)Create index
CREATE UNIQUE INDEX idx ON t (col)Unique index
CREATE INDEX idx ON t (c1, c2)Composite index
DROP INDEX idxDrop index
SHOW INDEX FROM tShow indexes (MySQL)
CREATE VIEW v AS SELECT * FROM t WHERE conditionCreate view
CREATE OR REPLACE VIEW v AS SELECT ...Create or replace view
CREATE MATERIALIZED VIEW mv AS SELECT ...Materialized view (PostgreSQL)
DROP VIEW vDrop view
REFRESH MATERIALIZED VIEW mvRefresh materialized view
CREATE DATABASE db_nameCreate database
DROP DATABASE db_nameDrop database
SHOW DATABASESList databases (MySQL)
\lList databases (PostgreSQL)
SHOW TABLESList tables (MySQL)
\dtList tables (PostgreSQL)
DESCRIBE tShow table structure (MySQL)
BEGINStart transaction
COMMITCommit transaction
ROLLBACKRollback transaction
SELECT col, ROW_NUMBER() OVER (ORDER BY col) FROM tRow number
SELECT col, RANK() OVER (PARTITION BY c1 ORDER BY c2) FROM tRank within groups
SELECT col, SUM(col) OVER (ORDER BY id) FROM tRunning total
SELECT * FROM t1 UNION SELECT * FROM t2Union (no duplicates)
SELECT * FROM t1 UNION ALL SELECT * FROM t2Union (with duplicates)
SELECT * FROM t1 INTERSECT SELECT * FROM t2Intersection
Quick Reference
SELECT * FROM t
INSERT INTO t VALUES
UPDATE t SET c=v
DELETE FROM t WHERE
What is SQL?
SQL (Structured Query Language) is a standard programming language for managing and manipulating relational databases. It allows you to create, read, update, and delete data, as well as manage database structures and control access permissions.
SQL Categories
- DQL (Data Query Language) - SELECT statements for retrieving data
- DML (Data Manipulation Language) - INSERT, UPDATE, DELETE for modifying data
- DDL (Data Definition Language) - CREATE, ALTER, DROP for managing structures
- DCL (Data Control Language) - GRANT, REVOKE for access control
- TCL (Transaction Control Language) - COMMIT, ROLLBACK for transactions
Best Practices
- Use meaningful table and column names
- Always use parameterized queries to prevent SQL injection
- Create indexes on frequently queried columns
- Use transactions for operations that must be atomic
- Normalize your database design to reduce redundancy
- Write readable queries with proper formatting and comments