SQL Cheatsheet
SQL Cheatsheet
@Tajamulkhann
CREATE TABLE: Creates a new table.
CREATE TABLE table_name (id INT PRIMARY KEY,
name VARCHAR(50));
@Tajamulkhann
SELECT: Retrieves specific columns from a table.
SELECT column1, column2 FROM table_name;
@Tajamulkhann
COUNT(): Returns the number of rows.
SELECT COUNT(*) FROM table_name;
@Tajamulkhann
INSERT INTO: Adds new rows to a table.
INSERT INTO table_name (column1, column2)
VALUES ('value1', 'value2');
@Tajamulkhann
Commit Transaction: Finalizes changes when all
operations succeed.
START TRANSACTION;
UPDATE accounts SET balance = 1000 WHERE id = 1;
WHERE id = 2; COMMIT;
@Tajamulkhann
UNION: Combines results from two queries,
removing duplicates.
SELECT column1 FROM table1 UNION SELECT
column1 FROM table2;
@Tajamulkhann
INNER JOIN: matching values in both tables.
SELECT * FROM table1 INNER JOIN table2 ON
table1.id = table2.id;
LEFT JOIN: Returns all rows from the left table and
matching rows from the right table.
SELECT * FROM table1 LEFT JOIN table2 ON table1.id
= table2.id;
RIGHT JOIN: Returns all rows from the right table and
matching rows from the left table.
SELECT * FROM table1 RIGHT JOIN table2 ON
table1.id = table2.id;
@Tajamulkhann
CONCAT(): Concatenates strings.
SELECT CONCAT(first_name, ' ', last_name) FROM
table_name;
@Tajamulkhann
ROW_NUMBER: Assigns a unique number to each row
in a result set.
SELECT ROW_NUMBER() OVER (PARTITION BY
department ORDER BY salary DESC) AS row_num
FROM employees;
@Tajamulkhann
Create a Stored Procedure:
CREATE PROCEDURE sp_GetEmployeeByID
@EmployeeID INT
AS
BEGIN
-- SQL statements inside the stored procedure
SELECT * FROM Employees
WHERE EmployeeID = @EmployeeID;
@Tajamulkhann
Create a Trigger (Before Insert):
CREATE TRIGGER set_created_at
BEFORE INSERT ON employees
FOR EACH ROW
SET NEW.created_at = NOW();
@Tajamulkhann
Scalar Subquery: Returns a single value.
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM
employees);
Correlated Subquery:
SELECT e1.name, e1.salary
FROM employees e1
WHERE e1.salary > (SELECT AVG(e2.salary) FROM
employees e2 WHERE e1.department =
e2.department);
@Tajamulkhann
With a Single CTE:
WITH DepartmentSalary AS (
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
)
SELECT *
FROM DepartmentSalary
WHERE avg_salary > 50000;
Recursive CTE:
WITH RECURSIVE Numbers AS (
SELECT 1 AS num
UNION ALL
SELECT num + 1
FROM Numbers
WHERE num < 10
)
SELECT * FROM Numbers;
@Tajamulkhann
Create an Index:
CREATE INDEX idx_department ON
employees(department);
Drop an Index:
DROP INDEX idx_department;
@Tajamulkhann
Follow for more!