ORDER BY
ORDER BY sorts query results in ascending or descending order.
SELECT * FROM products
ORDER BY price DESC;
SELECT * FROM users
ORDER BY username ASC;
LIMIT
LIMIT restricts how many rows are returned.
SELECT * FROM orders
LIMIT 10;
OFFSET
SELECT * FROM products
LIMIT 10 OFFSET 20;
Useful for pagination systems.
CASE Statements
SELECT first_name,
CASE
WHEN salary > 8000 THEN 'High Salary'
WHEN salary > 5000 THEN 'Medium Salary'
ELSE 'Entry Level'
END AS salary_level
FROM employees;
UNION
SELECT email FROM customers
UNION
SELECT email FROM employees;
UNION combines results from multiple queries.
UNION ALL
SELECT city FROM suppliers
UNION ALL
SELECT city FROM customers;
Unlike UNION, UNION ALL keeps duplicates.
DELETE Statement
DELETE FROM users
WHERE id = 5;
UPDATE Statement
UPDATE employees
SET salary = 7000
WHERE id = 2;
INSERT INTO
INSERT INTO customers (name, email, country)
VALUES ('David', 'david@example.com', 'Costa Rica');
Primary Keys
A primary key uniquely identifies each row in a table.
CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2)
);
Foreign Keys
Foreign keys create relationships between tables.
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
NULL Values
SELECT * FROM users
WHERE phone_number IS NULL;
SELECT * FROM users
WHERE phone_number IS NOT NULL;
Date Queries
SELECT * FROM orders
WHERE order_date > '2026-01-01';
SELECT CURRENT_DATE;
String Functions
SELECT UPPER(first_name) FROM users;
SELECT LOWER(email) FROM customers;
SELECT LENGTH(username) FROM users;
Mathematical Functions
SELECT ROUND(price, 2) FROM products;
SELECT ABS(-25);
Window Functions
SELECT employee_name,
department,
salary,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank_num
FROM employees;
Window functions are very important in analytics and reporting.
CTEs (Common Table Expressions)
WITH high_earners AS (
SELECT * FROM employees
WHERE salary > 7000
)
SELECT * FROM high_earners;
Stored Procedures
CREATE PROCEDURE GetEmployees()
BEGIN
SELECT * FROM employees;
END;
Database Security
SQL security is critical in real systems.
- Use strong authentication
- Restrict database permissions
- Prevent SQL injection
- Encrypt sensitive information
- Use role-based access control
Database Optimization
Query optimization improves performance and scalability.
- Use indexes wisely
- Avoid unnecessary joins
- Limit returned rows
- Use proper normalization
- Monitor slow queries