In this Blog we focused on most important SQL Commands with examples.Listed 100 most important commands with examples.
Also Read : NotebookLm
100 SQL Commands with examples:
- SELECT: Returns all columns from the employees table
SELECT * FROM employees;
- SELECT DISTINCT: Fetches unique department names
SELECT DISTINCT department FROM employees;
- WHERE: Filters employees with salary over 50,000
SELECT * FROM employees WHERE salary > 50000;
- AND / OR: Combines conditions
SELECT * FROM employees WHERE salary > 50000 AND department = 'IT';
- ORDER BY: Sorts data in descending order of salary
SELECT * FROM employees ORDER BY salary DESC;
- LIMIT: Limits the number of results
SELECT * FROM employees LIMIT 5;
- CREATE TABLE: Creates a new table
CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(100), age INT);
- DROP TABLE: Deletes a table
DROP TABLE students;
- ALTER TABLE ADD: Adds a new column
ALTER TABLE students ADD email VARCHAR(100);
- ALTER TABLE DROP: Drops a column
ALTER TABLE students DROP COLUMN email;
- RENAME TABLE: Renames a table
RENAME TABLE students TO learners;
- INSERT INTO: Inserts a row
INSERT INTO students (id, name, age) VALUES (1, 'Amit', 20);
- INSERT MULTIPLE ROWS: Inserts many rows
INSERT INTO students VALUES (2, 'Neha', 22), (3, 'Raj', 23);
- UPDATE: Modifies existing data
UPDATE students SET age = 25 WHERE id = 1;
- DELETE: Deletes a specific row
DELETE FROM students WHERE id = 2;
- TRUNCATE: Deletes all rows from a table
TRUNCATE TABLE students;
- INNER JOIN: Combines rows from two tables
SELECT emp.name, dept.name FROM employees emp INNER JOIN departments dept ON emp.dept_id = dept.id;
- LEFT JOIN: Keeps all rows from the left table
SELECT emp.name, dept.name FROM employees emp LEFT JOIN departments dept ON emp.dept_id = dept.id;
- RIGHT JOIN: Keeps all rows from the right table
SELECT emp.name, dept.name FROM employees emp RIGHT JOIN departments dept ON emp.dept_id = dept.id;
- FULL OUTER JOIN: Keeps all data from both tables
SELECT * FROM employees FULL OUTER JOIN departments ON employees.dept_id = departments.id;
- COUNT(): Counts rows
SELECT COUNT(*) FROM employees;
- SUM(): Adds numeric values
SELECT SUM(salary) FROM employees;
- AVG(): Gets the average
SELECT AVG(age) FROM students;
- MAX() / MIN(): Finds the highest or lowest
SELECT MAX(salary), MIN(salary) FROM employees;
- GROUP BY: Groups data
SELECT department, COUNT(*) FROM employees GROUP BY department;
- HAVING: Filters grouped results
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
- IN: Matches values from a list
SELECT * FROM employees WHERE department IN ('HR', 'Finance');
- NOT IN: Excludes values from a list
SELECT * FROM employees WHERE department NOT IN ('HR');
- BETWEEN: Matches a range
SELECT * FROM employees WHERE salary BETWEEN 30000 AND 60000;
- LIKE: Pattern match
SELECT * FROM students WHERE name LIKE 'A%';
- IS NULL: Checks for null values
SELECT * FROM employees WHERE manager_id IS NULL;
- EXISTS: Checks for existence of a subquery
SELECT name FROM employees WHERE EXISTS (SELECT 1 FROM departments WHERE id = employees.dept_id);
- PRIMARY KEY: Unique identifier
CREATE TABLE departments (id INT PRIMARY KEY, name VARCHAR(50));
- FOREIGN KEY: Defines a relationship
CREATE TABLE employees (id INT, dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(id));
- NOT NULL / UNIQUE / DEFAULT: Enforces data rules
CREATE TABLE users (id INT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, status VARCHAR(20) DEFAULT 'active');
- CREATE VIEW: Saves a query as a virtual table
CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active';
- DROP VIEW: Removes a view
DROP VIEW active_users;
- CREATE INDEX: Speeds up lookups
CREATE INDEX idx_name ON employees(name);
- DROP INDEX: Removes an index
DROP INDEX idx_name;
- BEGIN / COMMIT: Starts and saves a transaction
BEGIN; UPDATE employees SET salary = salary + 1000; COMMIT;
- ROLLBACK: Reverts a transaction
BEGIN; DELETE FROM employees WHERE id = 10; ROLLBACK;
- CASE: Conditional logic in queries
SELECT name, CASE WHEN salary > 50000 THEN 'High' ELSE 'Low' END AS salary_level FROM employees;
- COALESCE(): Returns the first non-null value
SELECT name, COALESCE(phone, 'N/A') AS contact_number FROM users;
- NULLIF(): Returns NULL if arguments are equal
SELECT NULLIF(salary, 0);
- GREATEST() / LEAST(): Finds the max/min of multiple values
SELECT GREATEST(100, 250, 75);
- ROUND(), FLOOR(), CEIL(): Rounds numbers
SELECT ROUND(45.678, 2), FLOOR(45.678), CEIL(45.678);
- CAST(): Converts data types
SELECT CAST('2025-06-22' AS DATE);
- DATE_ADD(): Adds interval to date
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY);
- EXTRACT(): Extracts part of date
SELECT EXTRACT(YEAR FROM CURRENT_DATE);
- NOW(): Gets current timestamp
SELECT NOW();
- String Functions: Basic text manipulation
SELECT UPPER(name), LOWER(name), LENGTH(name) FROM users;
- REPLACE(): Replaces substrings
SELECT REPLACE(name, 'a', '@') FROM users;
- CONCAT(): Combines strings
SELECT CONCAT(first_name, ' ', last_name) FROM users;
- REGEXP: Regular expressions
SELECT * FROM users WHERE name REGEXP '^A[a-z]*$';
- UUID(): Generates unique IDs
SELECT UUID();
- ROW_NUMBER(): Assigns unique row numbers
SELECT name, ROW_NUMBER() OVER (ORDER BY salary DESC) FROM employees;
- RANK(): Assigns rank with gaps
SELECT name, RANK() OVER (ORDER BY salary DESC) FROM employees;
- NTILE(): Divides rows into equal groups
SELECT name, NTILE(4) OVER (ORDER BY salary) FROM employees;
- LAG(): Gets previous row’s value
SELECT name, LAG(salary) OVER (ORDER BY salary) FROM employees;
- LEAD(): Gets next row’s value
SELECT name, LEAD(salary) OVER (ORDER BY salary) FROM employees;
- FIRST_VALUE(): Gets first value in group
SELECT name, FIRST_VALUE(salary) OVER (ORDER BY salary DESC) FROM employees;
- SUM() OVER: Window sum
SELECT name, salary, SUM(salary) OVER () AS total_salary FROM employees;
- PARTITION BY: Groups windowed functions
SELECT department, name, RANK() OVER (PARTITION BY department ORDER BY salary DESC) FROM employees;
- WITH (CTE): Common table expression
WITH top_emps AS (SELECT * FROM employees WHERE salary > 50000) SELECT * FROM top_emps;
- Recursive CTE: Builds recursion
WITH RECURSIVE nums AS (SELECT 1 AS n UNION ALL SELECT n + 1 FROM nums WHERE n < 5) SELECT * FROM nums;
- Nested CTE: Uses multiple layers
WITH base AS (SELECT * FROM sales), ranked AS (SELECT *, RANK() OVER (ORDER BY amount DESC) AS rnk FROM base) SELECT * FROM ranked WHERE rnk <= 5;
- Stored Procedure: Saves logic
DELIMITER // CREATE PROCEDURE GetHighEarners() BEGIN SELECT * FROM employees WHERE salary > 60000; END // DELIMITER ;
- CALL Procedure: Executes procedure
CALL GetHighEarners();
- BEFORE TRIGGER: Fires before insert/update
CREATE TRIGGER before_insert BEFORE INSERT ON employees FOR EACH ROW SET NEW.created_at = NOW();
- AFTER TRIGGER: Fires after insert
CREATE TRIGGER after_insert_log AFTER INSERT ON orders FOR EACH ROW INSERT INTO logs(action) VALUES ('Order Inserted');
- DISABLE TRIGGER: Temporarily disable
ALTER TABLE employees DISABLE TRIGGER ALL;
- CREATE USER: Adds a DB user
CREATE USER 'readonly'@'localhost' IDENTIFIED BY 'securepass';
- GRANT: Gives privileges
GRANT SELECT ON company.* TO 'readonly'@'localhost';
- REVOKE: Removes privileges
REVOKE SELECT ON company.* FROM 'readonly'@'localhost';
- DROP USER: Deletes user
DROP USER 'readonly'@'localhost';
- SHOW GRANTS: Lists permissions
SHOW GRANTS FOR 'readonly'@'localhost';
- SHOW TABLES: Lists all tables
SHOW TABLES;
- DESCRIBE: Table structure
DESCRIBE employees;
- EXPLAIN: Query plan
EXPLAIN SELECT * FROM employees WHERE salary > 50000;
- INFORMATION_SCHEMA: Metadata access
SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_db';
- SHOW PROCESSLIST: Active connections
SHOW PROCESSLIST;
- CHAR_LENGTH(): Returns the number of characters in a string
SELECT CHAR_LENGTH('OpenAI');
- POSITION(): Finds the position of substring
SELECT POSITION('e' IN 'OpenAI');
- SUBSTRING(): Extracts part of a string
SELECT SUBSTRING('OpenAI', 2, 3);
- LOCATE(): Finds position of substring
SELECT LOCATE('AI', 'OpenAI Labs');
- REVERSE(): Reverses a string
SELECT REVERSE('SQL');
- LTRIM() / RTRIM(): Trims spaces from left/right
SELECT LTRIM(' SQL'), RTRIM('SQL ');
- LPAD() / RPAD(): Pads strings to fixed length
SELECT LPAD('42', 5, '0'), RPAD('Hi', 5, '!');
- ASCII(): Returns ASCII value
SELECT ASCII('A');
- CONVERT(): Changes data type
SELECT CONVERT('123', UNSIGNED INTEGER);
- BIN() / HEX(): Converts number to binary or hex
SELECT BIN(5), HEX(255);
- MOD(): Modulus operator
SELECT MOD(10, 3);
- POWER(): Exponentiation
SELECT POWER(2, 3);
- RAND(): Returns a random number
SELECT RAND();
- IF(): Conditional logic (like ternary operator)
SELECT IF(salary > 50000, 'High', 'Low') FROM employees;
- ISNULL(): Checks if a value is null
SELECT ISNULL(manager_id) FROM employees;
- DATABASE(): Shows current DB
SELECT DATABASE();
- VERSION(): Returns DB version
SELECT VERSION();
- USER(): Returns current DB user
SELECT USER();
- LAST_INSERT_ID(): Gets last auto-incremented ID
SELECT LAST_INSERT_ID();
- SELECT: Returns all columns from the employees table
Also Read : Best AI Tools To Improve Communication Skills
The top 100 most helpful SQL commands that every developer, analyst, and DBA should be familiar with are hand-picked and explained in this blog post, along with clear explanations and real-world examples. This is your one-stop resource for learning SQL!
Every database administrator, developer, and data enthusiast needs SQL in their toolbox. From basic data retrieval to sophisticated joins, window functions, and performance-tuning tools, these 100 commands have it all.