SQL

SELECT Queries

SELECT * FROM tableSelect all columns
SELECT col1, col2Select specific columns
SELECT DISTINCT colUnique values only
WHERE conditionFilter rows
ORDER BY col ASC|DESCSort results
LIMIT n OFFSET mPaginate results
SELECT col AS aliasColumn alias
SELECT * FROM t1, t2Cross join (cartesian)

WHERE Clauses

= / != / <> / < / > / <= / >=Comparison operators
AND / OR / NOTLogical operators
BETWEEN a AND bRange check
IN (val1, val2)Match any in list
LIKE "%pattern%"Pattern match (% = any)
IS NULL / IS NOT NULLNull check
EXISTS (subquery)Subquery returns rows?
col LIKE "_at"_ matches single char

Joins

INNER JOIN t2 ON t1.id = t2.idMatching rows in both
LEFT JOINAll from left + matching right
RIGHT JOINAll from right + matching left
FULL OUTER JOINAll rows from both tables
CROSS JOINCartesian product
SELF JOINTable joined to itself
NATURAL JOINJoin on same-named columns
LEFT JOIN ... WHERE t2.id IS NULLRows only in left table

Aggregate Functions

COUNT(*)Number of rows
COUNT(DISTINCT col)Count unique values
SUM(col)Total of values
AVG(col)Average of values
MIN(col) / MAX(col)Smallest / largest value
GROUP BY colGroup rows for aggregation
HAVING conditionFilter after GROUP BY
GROUP_CONCAT(col)Concatenate grouped values

Data Modification

INSERT INTO t (cols) VALUES (vals)Insert a row
INSERT INTO t SELECT ...Insert from select
UPDATE t SET col = val WHEREUpdate existing rows
DELETE FROM t WHEREDelete rows
TRUNCATE TABLE tDelete all rows (fast)
REPLACE INTOInsert or update
INSERT ... ON CONFLICTUpsert (Postgres)
INSERT ... ON DUPLICATE KEYUpsert (MySQL)

Table Operations

CREATE TABLE t (col type)Create new table
ALTER TABLE t ADD col typeAdd column
ALTER TABLE t DROP colRemove column
ALTER TABLE t RENAME TO newRename table
DROP TABLE tDelete table entirely
CREATE INDEX idx ON t(col)Create index
DROP INDEX idxRemove index
CREATE VIEW v AS SELECTCreate view

Data Types (Common)

INT / INTEGERWhole numbers
BIGINTLarge integers
DECIMAL(p,s)Exact numeric
FLOAT / DOUBLEFloating point
VARCHAR(n)Variable-length string
TEXTLong text
BOOLEANTrue / false
DATE / TIMESTAMPDate and time
JSON / JSONBJSON data (Postgres)
UUIDUnique identifier

Constraints

PRIMARY KEYUnique row identifier
FOREIGN KEY REFERENCESLink to another table
UNIQUENo duplicate values
NOT NULLMust have a value
DEFAULT valDefault value
CHECK (condition)Validate on insert/update
AUTO_INCREMENT / SERIALAuto-incrementing ID

Subqueries & Window Functions

WHERE col IN (SELECT ...)Subquery in WHERE
SELECT (SELECT ...) AS subScalar subquery
WITH cte AS (SELECT ...)Common table expression
ROW_NUMBER() OVER(ORDER BY)Row numbering
RANK() OVER(PARTITION BY)Rank within partition
LAG(col) OVER(ORDER BY)Previous row value
COALESCE(a, b, c)First non-null value
CASE WHEN ... THEN ... ENDConditional expression
allprintabledoc.com