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.








