SELECT Queries
7 snippetsBasic Select
SELECT * FROM users;Columns
SELECT name, email FROM users;Where
SELECT * FROM users WHERE age > 18;AND/OR
SELECT * FROM users WHERE age > 18 AND status = 'active';Order By
SELECT * FROM users ORDER BY name ASC;Limit
SELECT * FROM users LIMIT 10 OFFSET 20;Distinct
SELECT DISTINCT country FROM users;JOINs
4 snippetsInner Join
SELECT u.name, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;Left Join
SELECT u.name, o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;Right Join
SELECT u.name, o.total
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;Full Join
SELECT u.name, o.total
FROM users u
FULL OUTER JOIN orders o ON u.id = o.user_id;Aggregate Functions
6 snippetsCount
SELECT COUNT(*) FROM users;Sum
SELECT SUM(amount) FROM orders;Avg
SELECT AVG(price) FROM products;Min/Max
SELECT MIN(age), MAX(age) FROM users;Group By
SELECT country, COUNT(*)
FROM users
GROUP BY country;Having
SELECT country, COUNT(*)
FROM users
GROUP BY country
HAVING COUNT(*) > 10;Tired of looking up syntax?
DocuWriter.ai generates documentation and explains code using AI.
Data Modification
4 snippetsInsert
INSERT INTO users (name, email)
VALUES ('John', 'john@example.com');Insert Multiple
INSERT INTO users (name, email) VALUES
('John', 'john@example.com'),
('Jane', 'jane@example.com');Update
UPDATE users
SET status = 'active'
WHERE id = 1;Delete
DELETE FROM users WHERE id = 1;Table Operations
4 snippetsCreate Table
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Alter Table
ALTER TABLE users ADD COLUMN phone VARCHAR(20);Drop Table
DROP TABLE IF EXISTS users;Truncate
TRUNCATE TABLE users;Subqueries & CTEs
3 snippetsSubquery
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);CTE
WITH active_users AS (
SELECT * FROM users WHERE status = 'active'
)
SELECT * FROM active_users WHERE age > 18;Exists
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);Indexes
4 snippetsCreate Index
CREATE INDEX idx_email ON users(email);Unique Index
CREATE UNIQUE INDEX idx_email ON users(email);Composite Index
CREATE INDEX idx_name_email ON users(name, email);Drop Index
DROP INDEX idx_email ON users;Window Functions
6 snippetsCalculations across row sets
ROW_NUMBER
SELECT name, salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) as rank
FROM employees;RANK / DENSE_RANK
SELECT name, salary,
RANK() OVER (ORDER BY salary DESC) as rank,
DENSE_RANK() OVER (ORDER BY salary DESC) as dense_rank
FROM employees;PARTITION BY
SELECT department, name, salary,
ROW_NUMBER() OVER (
PARTITION BY department
ORDER BY salary DESC
) as dept_rank
FROM employees;LAG / LEAD
SELECT date, amount,
LAG(amount, 1) OVER (ORDER BY date) as prev_amount,
LEAD(amount, 1) OVER (ORDER BY date) as next_amount
FROM sales;Running Total
SELECT date, amount,
SUM(amount) OVER (
ORDER BY date
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) as running_total
FROM sales;NTILE
SELECT name, salary,
NTILE(4) OVER (ORDER BY salary) as quartile
FROM employees;CASE Expressions
4 snippetsConditional logic in queries
Simple CASE
SELECT name,
CASE status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
ELSE 'Unknown'
END as status_name
FROM users;Searched CASE
SELECT name, salary,
CASE
WHEN salary > 100000 THEN 'High'
WHEN salary > 50000 THEN 'Medium'
ELSE 'Low'
END as salary_band
FROM employees;CASE in WHERE
SELECT * FROM orders
WHERE status = CASE
WHEN @filter = 'active' THEN 'pending'
ELSE status
END;CASE in ORDER BY
SELECT * FROM products
ORDER BY
CASE WHEN featured = 1 THEN 0 ELSE 1 END,
name;NULL Handling
4 snippetsWork with NULL values
COALESCE
SELECT COALESCE(nickname, name, 'Unknown') as display_name
FROM users;NULLIF
-- Returns NULL if equal, prevents division by zero
SELECT total / NULLIF(count, 0) as average
FROM stats;IS NULL
SELECT * FROM users WHERE email IS NULL;
SELECT * FROM users WHERE email IS NOT NULL;IFNULL / NVL
-- MySQL
SELECT IFNULL(email, 'N/A') FROM users;
-- Oracle
SELECT NVL(email, 'N/A') FROM users;Transactions
4 snippetsEnsure data integrity
Basic Transaction
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Rollback
BEGIN TRANSACTION;
UPDATE inventory SET qty = qty - 1 WHERE id = 1;
-- Something went wrong
ROLLBACK;Savepoints
BEGIN TRANSACTION;
INSERT INTO orders (...) VALUES (...);
SAVEPOINT after_order;
INSERT INTO order_items (...) VALUES (...);
-- Oops, rollback just the items
ROLLBACK TO SAVEPOINT after_order;
COMMIT;Isolation Levels
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;String Functions
6 snippetsManipulate text data
CONCAT
SELECT CONCAT(first_name, ' ', last_name) as full_name
FROM users;SUBSTRING
SELECT SUBSTRING(name, 1, 3) FROM users; -- First 3 chars
SELECT LEFT(name, 3) FROM users; -- Same result
SELECT RIGHT(name, 3) FROM users; -- Last 3 charsTRIM
SELECT TRIM(name) FROM users;
SELECT LTRIM(name) FROM users; -- Left trim
SELECT RTRIM(name) FROM users; -- Right trimUPPER / LOWER
SELECT UPPER(name), LOWER(email) FROM users;REPLACE
SELECT REPLACE(phone, '-', '') FROM users;LENGTH
SELECT name, LENGTH(name) as name_length FROM users;