A quick-reference cheat sheet for all SQL Server commands.
-- Create a new database CREATE DATABASE DatabaseName; -- Rename a database (Modern Query Method - Recommended) ALTER DATABASE OldDbName MODIFY NAME = NewDbName; -- Rename a database (Stored Procedure Method - Legacy) EXEC sp_renamedb 'OldDbName', 'NewDbName'; -- Change User Modes ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER DATABASE DatabaseName SET MULTI_USER; -- Drop (Delete) a database DROP DATABASE DatabaseName;
-- Create a table with ALL constraints CREATE TABLE TableName ( ID INT PRIMARY KEY, -- Primary Key Email VARCHAR(50) UNIQUE NOT NULL, -- Unique & Cannot be empty Age INT CHECK (Age >= 18), -- Check condition Status VARCHAR(20) DEFAULT 'Active', -- Default value DeptID INT FOREIGN KEY REFERENCES Dept(DeptID) ON DELETE CASCADE -- FK & Cascade ); -- Alter Table: Add a column ALTER TABLE TableName ADD ColumnName DataType; -- Alter Table: Drop a column ALTER TABLE TableName DROP COLUMN ColumnName; -- Drop Table entirely DROP TABLE TableName;
-- INSERT 1: Specific Columns (Safest and Recommended) INSERT INTO TableName (Col1, Col2) VALUES ('Value1', 'Value2'); -- INSERT 2: All Columns (Values must match the exact order of table columns) INSERT INTO TableName VALUES ('Value1', 'Value2', 'Value3'); -- INSERT 3: Multiple Rows at once INSERT INTO TableName (Col1, Col2) VALUES ('Row1_Val1', 'Row1_Val2'), ('Row2_Val1', 'Row2_Val2'), ('Row3_Val1', 'Row3_Val2'); -- UPDATE a record -- ⚠️ CRITICAL: Always use WHERE, otherwise it updates EVERY row in the table! UPDATE TableName SET Col1 = 'NewValue', Col2 = 'NewValue' WHERE ID = 1; -- DELETE a record -- ⚠️ CRITICAL: Always use WHERE, otherwise it deletes EVERY row in the table! DELETE FROM TableName WHERE ID = 1;
-- Basic Select & Distinct SELECT * FROM TableName; SELECT Col1, Col2, Col3 FROM TableName; SELECT DISTINCT ColumnName FROM TableName; -- Sorting & Limiting SELECT TOP 5 * FROM TableName ORDER BY ColumnName DESC; SELECT TOP 10 PERCENT * FROM TableName ORDER BY ColumnName ASC; -- WHERE Clause with Operators (AND, OR, NOT) SELECT * FROM TableName WHERE Col1 = Value AND NOT Col2 = Value OR Col3 > 100; -- IN & BETWEEN SELECT * FROM TableName WHERE Category IN ('A', 'B', 'C'); SELECT * FROM TableName WHERE Age BETWEEN 25 AND 35; -- LIKE Operator (Wildcards) SELECT * FROM TableName WHERE Name LIKE 'A%'; -- Starts with A SELECT * FROM TableName WHERE Name LIKE '%son'; -- Ends with son SELECT * FROM TableName WHERE Name LIKE '_B%'; -- Second letter is B SELECT * FROM TableName WHERE Name LIKE '[A-C]%';-- Starts with A, B, or C
-- Scalar Functions (String & Math) SELECT UPPER(Name), LEN(Name), LTRIM(RTRIM(Name)), CEILING(Price) FROM TableName; -- Aggregate Functions (COUNT, SUM, AVG, MIN, MAX) SELECT COUNT(*), SUM(Salary), AVG(Salary), MIN(Age), MAX(Age) FROM TableName; -- GROUP BY & HAVING (Filtering Aggregates) SELECT Department, SUM(Salary) AS TotalSal FROM Employees WHERE Status = 'Active' -- Filters rows BEFORE grouping GROUP BY Department HAVING SUM(Salary) > 50000; -- Filters groups AFTER grouping
-- UNION (Removes Duplicates) / UNION ALL (Keeps Duplicates) SELECT Col1, Col2 FROM TableA UNION ALL SELECT Col1, Col2 FROM TableB ORDER BY Col1; -- Order By goes at the very end only -- INNER JOIN (Matches only) SELECT A.Col1, B.Col2 FROM TableA A INNER JOIN TableB B ON A.KeyID = B.KeyID; -- LEFT JOIN (All from Left, matches from Right) SELECT A.Col1, B.Col2 FROM TableA A LEFT JOIN TableB B ON A.KeyID = B.KeyID; -- CROSS JOIN (Cartesian product, every row matched with every row) SELECT A.Col1, B.Col2 FROM TableA A CROSS JOIN TableB B; -- SELF JOIN (Joining a table to itself) SELECT E1.EmpName, E2.ManagerName FROM Employees E1 LEFT JOIN Employees E2 ON E1.ManagerID = E2.EmpID;
-- Create a View CREATE VIEW vw_ViewName AS SELECT Col1, Col2 FROM TableName WHERE Condition; -- Modify an existing View ALTER VIEW vw_ViewName AS SELECT Col1, Col2, Col3 FROM TableName; -- Query a View SELECT * FROM vw_ViewName; -- Drop (Delete) a View DROP VIEW vw_ViewName;