Selection Queries #
Basic SELECT #
-- Select all columns
SELECT * FROM table_name;
-- Select specific columns
SELECT column1, column2
FROM table_name;
-- Select with alias
SELECT column_name AS alias_name
FROM table_name;WHERE Clause #
-- Basic conditions
SELECT * FROM table_name
WHERE condition;
-- Multiple conditions
SELECT * FROM table_name
WHERE condition1 AND condition2;
SELECT * FROM table_name
WHERE condition1 OR condition2;
-- Pattern matching
SELECT * FROM table_name
WHERE column_name LIKE 'pattern%';
-- Range conditions
SELECT * FROM table_name
WHERE column_name
BETWEEN value1 AND value2;
-- List conditions
SELECT * FROM table_name
WHERE column_name IN (
value1, value2, value3
);ORDER BY #
-- Ascending order (default)
SELECT * FROM table_name
ORDER BY column_name ASC;
-- Descending order
SELECT * FROM table_name
ORDER BY column_name DESC;
-- Multiple columns
SELECT * FROM table_name
ORDER BY column1 ASC,
column2 DESC;DISTINCT #
-- Unique values
SELECT DISTINCT column_name
FROM table_name;
-- Unique combinations
SELECT DISTINCT column1, column2
FROM table_name;LIMIT #
-- Limit results
SELECT * FROM table_name
LIMIT 10;
-- With offset
SELECT * FROM table_name
LIMIT 10 OFFSET 5;Data Definition Language (DDL) #
Database Operations #
-- Create database
CREATE DATABASE database_name;
-- Drop database
DROP DATABASE database_name;Table Operations #
-- Create table
CREATE TABLE table_name (
column1 datatype PRIMARY KEY,
column2 datatype NOT NULL,
column3 datatype DEFAULT 'default_value',
FOREIGN KEY (column2)
REFERENCES other_table(column_name)
);
-- Alter table
ALTER TABLE table_name
ADD COLUMN new_column datatype;
ALTER TABLE table_name
DROP COLUMN column_name;
ALTER TABLE table_name
MODIFY COLUMN column_name new_datatype;
-- Drop table
DROP TABLE table_name;
-- Truncate table (remove all data, but not structure)
TRUNCATE TABLE table_name;Data Manipulation Language (DML) #
INSERT #
-- Insert all columns
INSERT INTO table_name
VALUES (value1, value2, value3);
-- Insert specific columns
INSERT INTO table_name (column1, column2)
VALUES (value1, value2);
-- Insert multiple rows
INSERT INTO table_name (column1, column2) VALUES
(value1, value2),
(value3, value4),
(value5, value6);
-- Insert from another table
INSERT INTO table_name (column1, column2)
SELECT column1, column2
FROM other_table
WHERE condition;UPDATE #
-- Update specific rows
UPDATE table_name
SET column1 = value1,
column2 = value2
WHERE condition;
-- Update all rows
UPDATE table_name
SET column_name = new_value;
-- Update with subquery
UPDATE table_name
SET column_name = (
SELECT value
FROM other_table
WHERE condition
)
WHERE condition;DELETE #
-- Delete specific rows
DELETE FROM table_name
WHERE condition;
-- Delete all rows
DELETE FROM table_name;Aggregate Functions #
Basic Aggregates #
-- Count records
SELECT COUNT(*) FROM table_name;
SELECT COUNT(column_name)
FROM table_name;
-- Excludes NULL values
-- Sum values
SELECT SUM(column_name)
FROM table_name;
-- Average values
SELECT AVG(column_name)
FROM table_name;
-- Minimum and maximum
SELECT MIN(column_name)
FROM table_name;
SELECT MAX(column_name)
FROM table_name;
-- Round numbers, to 2 decimal places
SELECT ROUND(AVG(column_name), 2)
FROM table_name;GROUP BY #
-- Group by single column
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;
-- Group by multiple columns
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY column1, column2;
-- With WHERE clause
SELECT column_name, AVG(value_column)
FROM table_name
WHERE condition
GROUP BY column_name;HAVING #
-- Filter grouped results
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 5;
-- Complex HAVING conditions
SELECT category, AVG(price)
FROM products
GROUP BY category
HAVING AVG(price) > 100
AND COUNT(*) >= 10;String Functions #
Case Conversion #
-- Convert to uppercase
SELECT UPPER(column_name)
FROM table_name;
-- Convert to lowercase
SELECT LOWER(column_name)
FROM table_name;String Manipulation #
-- Get string length
SELECT LENGTH(column_name)
FROM table_name;
-- Extract substring
SELECT SUBSTR(column_name,
start_position,
length)
FROM table_name;
-- Concatenate strings
SELECT CONCAT(column1, ' ', column2)
AS full_name
FROM table_name;
-- Replace text
SELECT REPLACE(column_name, 'old_text', 'new_text')
FROM table_name;Conditional Queries #
CASE Statements #
-- Simple CASE
SELECT column_name,
CASE column_name
WHEN 'condition' THEN 'result1'
WHEN 'condition' THEN 'result2'
ELSE 'default_result'
END AS new_column
FROM table_name;NULL Handling #
-- COALESCE (return first non-null value)
SELECT COALESCE(column1, column2, 'default_value')
FROM table_name;Joins #

INNER JOIN #
-- Basic inner join
SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b
ON a.id = b.table1_id;LEFT JOIN #
-- Include all records from left table
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.table1_id;RIGHT JOIN #
-- Include all records from right table
SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b
ON a.id = b.table1_id;FULL OUTER JOIN #
-- Include all records from both tables
SELECT a.column1, b.column2
FROM table1 a
FULL OUTER JOIN table2 b
ON a.id = b.table1_id;Multiple Joins #
-- Chain multiple joins
SELECT o.order_id,
c.customer_name,
p.product_name
FROM orders o
JOIN customers c
ON o.customer_id = c.id
JOIN order_details od
ON o.order_id = od.order_id
JOIN products p
ON od.product_id = p.id;Subqueries #
Subquery in SELECT #
SELECT column1,
(SELECT AVG(price)
FROM products) AS avg_price
FROM table_name;Subquery in FROM #
SELECT category, avg_price
FROM (
SELECT category,
AVG(price) AS avg_price
FROM products
GROUP BY category
) AS category_averages
WHERE avg_price > 100;Subquery in WHERE #
-- Single value subquery
SELECT *
FROM products
WHERE price > (
SELECT AVG(price)
FROM products
);EXISTS #
-- Check for existence
SELECT *
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.customer_id = c.id
AND o.order_date >= '2023-01-01'
);Set Operations #

UNION #
-- Combine results and remove duplicates
SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2;UNION ALL #
-- Combine results and keep duplicates
SELECT column1, column2
FROM table1
UNION ALL
SELECT column1, column2
FROM table2;INTERSECT #
-- Common rows between queries
SELECT column1, column2
FROM table1
INTERSECT
SELECT column1, column2
FROM table2;EXCEPT/MINUS #
-- Rows in first query but not in second
SELECT column1, column2
FROM table1
EXCEPT
SELECT column1, column2
FROM table2;Common Table Expressions (CTEs) #
Temporary named result set that exists only during query execution.
Syntax #
WITH cte_name AS (
SELECT columns
FROM table
WHERE condition
)
SELECT * FROM cte_name;Example #
WITH AvgSalary AS (
SELECT Department,
AVG(Salary) AS Avg
FROM Employees
GROUP BY Department
)
SELECT * FROM AvgSalary;Why Use? #
- Simplifies complex queries
- Reusable in same query
- More readable than subqueries