SQL Server & T-SQL
What is SQL Server?
SQL Server Editions
-- Perfect for: Development, small applications, learning-- Perfect for: Development and testingSQL Language Categories
DDL (Data Definition Language)
DML (Data Manipulation Language)
DCL (Data Control Language)
TCL (Transaction Control Language)
Data Types in SQL Server
Numeric Types
String Types
Date and Time Types
Binary Types
Other Types
DDL - Data Definition Language
CREATE TABLE
ALTER TABLE
DROP TABLE
TRUNCATE TABLE
DML - Data Manipulation Language
SELECT - Query Data
Basic SELECT
WHERE Clause - Filter Rows
ORDER BY - Sort Results
TOP / OFFSET-FETCH - Limit Results
DISTINCT - Unique Values
INSERT - Add Data
UPDATE - Modify Data
DELETE - Remove Data
Joins - Combining Tables
INNER JOIN
LEFT JOIN (LEFT OUTER JOIN)
RIGHT JOIN (RIGHT OUTER JOIN)
FULL OUTER JOIN
CROSS JOIN
Join Comparison Table
Subqueries
Scalar Subquery (Returns single value)
Multi-value Subquery (Returns multiple values)
Correlated Subquery (References outer query)
Derived Table (Subquery in FROM)
Common Table Expressions (CTEs)
Basic CTE
Recursive CTE
Window Functions
ROW_NUMBER - Assign unique row numbers
RANK and DENSE_RANK - Ranking with ties
Aggregate Window Functions
LAG and LEAD - Access previous/next rows
FIRST_VALUE and LAST_VALUE
Aggregate Functions
Basic Aggregates
GROUP BY
HAVING - Filter Groups
String Aggregation (SQL Server 2017+)
Stored Procedures
Basic Stored Procedure
Procedure with Multiple Parameters
Procedure with OUTPUT Parameters
Procedure with Error Handling
Procedure with Dynamic SQL
Functions
Scalar Functions (Return single value)
Table-Valued Functions (Return table)
Triggers
AFTER Triggers (Fire after operation)
INSTEAD OF Triggers (Override operation)
Trigger Management
Transactions and Locking
Basic Transactions
Transaction with Error Handling
Savepoints
Isolation Levels
Lock Types
Indexes (Brief Overview)
Index Types
Built-in Functions
String Functions
Date Functions
Conversion Functions
Math Functions
NULL Handling
JSON Functions (SQL Server 2016+)
Common Table Patterns
Pagination
Deduplication
Running Totals
Pivot and Unpivot
Merge (Upsert)
Best Practices
1. Always Use WHERE in UPDATE/DELETE
2. Use Parameterized Queries (Prevent SQL Injection)
3. Use Appropriate Data Types
4. Use NVARCHAR for Unicode
5. Add Proper Constraints
6. Use Transactions for Multiple Operations
7. Use EXISTS Instead of COUNT(*) > 0
8. Use SET NOCOUNT ON in Procedures
9. Use Schema Names
10. Comment Complex Queries
Common Pitfalls
1. SELECT *
2. Not Using WHERE in DELETE/UPDATE
3. NOLOCK Misuse
4. Implicit Conversion
5. Functions in WHERE (Non-Sargable)
6. Not Handling NULLs
7. Cursor Overuse
Quick Reference Tables
JOIN Types Comparison
Join Type
Description
Returns
Aggregate Functions
Function
Purpose
Example
Window Functions
Function
Purpose
Example
Isolation Levels
Level
Dirty Read
Non-Repeatable Read
Phantom Read
Performance
Constraint Types
Constraint
Purpose
Example
T-SQL Query Execution Order
Decision Tree: What Query Should I Write?
Last updated