
Curriculum
M10. Continue Your SQL Journey1 topic
M21. Data Modeling11 topics
·Module overview
- 2.11.1 Why Data Modeling Matters
- 2.21.2 Entities, Attributes and Relationships
- 2.31.3 Primary, Foreign, Natural and Surrogate Keys
- 2.41.4 One-to-One, One-to-Many and Many-to-Many Relationships
- 2.51.5 Junction / Bridge Tables
- 2.61.6 Normalization Concepts
- 2.71.7 First, Second and Third Normal Form
- 2.81.8 Denormalization
- 2.91.9 Referential Integrity
- 2.101.10 Reading an ER Diagram
- 2.111.11 Translating Business Requirements into Tables
M32. Data Warehousing13 topics
·Module overview
- 3.12.1 OLTP vs OLAP
- 3.22.2 What is a Data Warehouse?
- 3.32.3 Fact and Dimension Tables
- 3.42.4 Measures and Dimensions
- 3.52.5 Grain of a Fact Table
- 3.62.6 Star Schema
- 3.72.7 Snowflake Schema
- 3.82.8 Surrogate vs Natural Keys in Warehousing
- 3.92.9 Slowly Changing Dimensions
- 3.102.10 SCD Type 1
- 3.112.11 SCD Type 2
- 3.122.12 Date Dimensions
- 3.132.13 Common Fact Table Types
M43. Subqueries11 topics
·Module overview
- 4.13.1 What is a Subquery?
- 4.23.2 Scalar Subqueries
- 4.33.3 Single-Row and Multi-Row Subqueries
- 4.43.4 Subqueries in WHERE
- 4.53.5 Subqueries in SELECT
- 4.63.6 Subqueries in FROM
- 4.73.7 IN with Subqueries
- 4.83.8 EXISTS and NOT EXISTS
- 4.93.9 Correlated Subqueries
- 4.103.10 Subqueries vs Joins
- 4.113.11 Common Subquery Patterns
M54. Common Table Expressions9 topics
M65. Set Operations10 topics
M76. Window Functions15 topics
·Module overview
- 7.16.1 What is a Window Function?
- 7.26.2 Window Functions vs GROUP BY
- 7.36.3 Understanding OVER()
- 7.46.4 PARTITION BY
- 7.56.5 ORDER BY Inside a Window
- 7.66.6 ROW_NUMBER
- 7.76.7 RANK
- 7.86.8 DENSE_RANK
- 7.96.9 ROW_NUMBER vs RANK vs DENSE_RANK
- 7.106.10 Aggregate Window Functions
- 7.116.11 SUM, AVG, MIN, MAX and COUNT OVER
- 7.126.12 Running Totals
- 7.136.13 Running Averages
- 7.146.14 Percentage of Total
- 7.156.15 Ranking Within Groups
M87. Advanced Window Analytics15 topics
·Module overview
- 8.17.1 LAG
- 8.27.2 LEAD
- 8.37.3 FIRST_VALUE
- 8.47.4 LAST_VALUE
- 8.57.5 Comparing Current and Previous Rows
- 8.67.6 Period-over-Period Analysis
- 8.77.7 Window Frames
- 8.87.8 ROWS BETWEEN
- 8.97.9 Moving / Rolling Averages
- 8.107.10 Rolling Totals
- 8.117.11 Top N per Group
- 8.127.12 Deduplication with ROW_NUMBER
- 8.137.13 Finding First and Last Events
- 8.147.14 Gap Analysis
- 8.157.15 Consecutive Events and Streak Analysis
M98. DDL and Database Objects15 topics
·Module overview
- 9.18.1 DDL vs DML vs DQL
- 9.28.2 CREATE TABLE
- 9.38.3 Data Types and Column Definitions
- 9.48.4 PRIMARY KEY and FOREIGN KEY Constraints
- 9.58.5 NOT NULL
- 9.68.6 UNIQUE
- 9.78.7 CHECK
- 9.88.8 DEFAULT
- 9.98.9 ALTER TABLE
- 9.108.10 Adding, Modifying and Removing Columns
- 9.118.11 DROP vs TRUNCATE vs DELETE
- 9.128.12 Creating Views
- 9.138.13 Views vs Tables
- 9.148.14 Temporary Tables
- 9.158.15 Temporary Tables vs CTEs
M109. Advanced Data Manipulation12 topics
·Module overview
- 10.19.1 INSERT
- 10.29.2 INSERT Using SELECT
- 10.39.3 UPDATE
- 10.49.4 UPDATE with Conditions
- 10.59.5 UPDATE Using Other Tables
- 10.69.6 DELETE
- 10.79.7 DELETE Using Conditions and Joins
- 10.89.8 MERGE / Upsert Concepts
- 10.99.9 Conditional INSERT and UPDATE
- 10.109.10 Handling Duplicate Records
- 10.119.11 Deduplication Patterns
- 10.129.12 Safe Data Modification Practices
M1110. Transactions and Concurrency14 topics
·Module overview
- 11.110.1 What is a Transaction?
- 11.210.2 ACID Properties
- 11.310.3 BEGIN / START TRANSACTION
- 11.410.4 COMMIT
- 11.510.5 ROLLBACK
- 11.610.6 SAVEPOINT
- 11.710.7 What Happens When Multiple Users Modify Data?
- 11.810.8 Locks and Blocking
- 11.910.9 Dirty Reads
- 11.1010.10 Non-Repeatable Reads
- 11.1110.11 Phantom Reads
- 11.1210.12 Transaction Isolation Levels
- 11.1310.13 Deadlocks
- 11.1410.14 Avoiding Common Transaction Problems
M1211. Query Optimizer & Execution Internals20 topics
·Module overview
- 12.111.1 What Happens When SQL Executes?
- 12.211.2 Parsing, Optimization and Execution
- 12.311.3 What is a Query Optimizer?
- 12.411.4 Execution Plans
- 12.511.5 Reading a Basic Execution Plan
- 12.611.6 Table Scan vs Index Scan vs Index Seek
- 12.711.7 Introduction to Indexes
- 12.811.8 Clustered and Non-Clustered Index Concepts
- 12.911.9 How Joins Are Physically Executed
- 12.1011.10 Nested Loop Join
- 12.1111.11 Hash Join
- 12.1211.12 Merge Join
- 12.1311.13 Filtering Early and Reducing Data
- 12.1411.14 SARGability and Functions on Filter Columns
- 12.1511.15 SELECT * and Query Performance
- 12.1611.16 EXISTS vs IN vs JOIN from a Performance Perspective
- 12.1711.17 CTEs, Subqueries and Temporary Tables from a Performance Perspective
- 12.1811.18 Statistics and Cardinality Estimates
- 12.1911.19 Common Causes of Slow SQL
- 12.2011.20 Practical Query Optimization Workflow

