diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 450d427..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,204 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [2.0.0] - 2026-02-07 (s26 Branch)
-
-### 🎉 Major Release: Enhanced Documentation and Organization
-
-This release represents a major overhaul of the repository structure and documentation, making it significantly more accessible and organized for learners and instructors.
-
-### Added
-
-#### 📚 Comprehensive Documentation
-- **[Getting Started Guide](docs/GETTING_STARTED.md)**
- - Complete setup instructions for MySQL, Python, Java, Node.js
- - Troubleshooting section for common issues
- - Quick start guides for different skill levels
- - Tool installation guides for MongoDB, Neo4j, Jupyter
-
-- **[Course Syllabus](docs/COURSE_SYLLABUS.md)**
- - 16-week structured curriculum
- - Weekly schedule with topics and labs
- - Grading policy and assessment guidelines
- - Project ideas and deliverables
- - Learning outcomes for each module
-
-- **[SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md)**
- - Comprehensive reference for all SQL commands
- - Organized by topic (DDL, DML, Queries, Joins, etc.)
- - Code examples for every command
- - Best practices and performance tips
- - Window functions and CTEs reference
-
-- **[Contributing Guide](docs/CONTRIBUTING.md)**
- - Detailed contribution guidelines
- - Code style standards for SQL, Python, Java
- - Pull request process
- - Issue reporting templates
- - Commit message conventions
-
-- **[Lab Index](LAB_INDEX.md)**
- - Complete catalog of all 21 labs
- - Detailed descriptions with learning objectives
- - Prerequisites for each lab
- - Duration estimates
- - Difficulty levels (Beginner to Expert)
- - Multiple learning paths
-
-- **[Practice Exercises](exercises/PRACTICE_EXERCISES.md)**
- - Additional exercises by topic
- - Challenge problems for advanced learners
- - Difficulty ratings
- - Links to external practice platforms
-
-- **[Project Roadmap](docs/ROADMAP.md)**
- - Short, medium, and long-term goals
- - Feature development timeline
- - Success metrics
- - How to contribute to roadmap
-
-#### 🗂️ Repository Organization
-- Created `/labs` directory structure
- - `/labs/html_labs` - All HTML lab files organized
- - `/labs/notebooks` - Jupyter notebook labs
- - `/labs/code` - Programming examples
-
-- Created `/docs` directory for documentation
-- Created `/exercises` directory for practice problems
-- Created `/solutions` directory (structure for future solutions)
-- Created `/supplementary` directory (for additional materials)
-
-#### ✨ Enhanced Features
-- Added badges to README (stars, license, PRs welcome)
-- Quick links section in README
-- Learning paths for different skill levels
-- Search by topic in Lab Index
-- Multiple ways to navigate content
-
-### Changed
-
-#### 📝 README Improvements
-- Restructured for better navigation
-- Added Quick Links section at the top
-- Updated lab references to use new structure
-- Added highlights for featured labs (⭐)
-- Improved descriptions and organization
-- Added "How to Use This Repository" section
-
-#### 🔧 Configuration
-- Enhanced `.gitignore` file
- - Exclude Mac .DS_Store files
- - Exclude Python cache files
- - Exclude node_modules
- - Exclude IDE files
- - Exclude credentials and secrets
-
-### Improved
-
-- Better cross-referencing between documents
-- Consistent formatting across all markdown files
-- More descriptive file names
-- Improved accessibility with clear hierarchy
-- Better onboarding for new contributors
-- Enhanced discoverability of resources
-
-### Fixed
-
-- Fixed CASE Expressions lab link in README
-- Corrected file path references
-- Improved consistency in documentation style
-
----
-
-## [1.0.0] - Initial Release
-
-### Added
-- 21 comprehensive SQL labs covering:
- - Database Creation & Basic Queries
- - Advanced Queries & Joins
- - Foreign Keys & Relationships
- - Multi-Table Operations
- - Set Operations & Nested Queries
- - Aggregate Functions & Grouping
- - CASE Expressions
- - Window Functions & Recursive Queries
- - Views & Virtual Tables
- - Database Normalization
- - Advanced SQL Techniques
- - Java Database Interface
- - Python Database Interface
- - Jupyter Notebook Integration
- - Analytical Functions (ROLLUP, CUBE)
- - Triggers & Stored Procedures
- - Transaction Management
- - Isolation Levels
- - JSON & XML Processing
- - MongoDB (NoSQL)
- - Neo4j (Graph Database)
-
-- Dataset Files:
- - IMDB Movie Data
- - Air Travel Data
- - Cities Data
- - Employee Data
- - Student Grades
- - Drivers Database
-
-- Code Examples:
- - Node.js database integration
- - Express.js server examples
- - JavaScript client code
-
-- Jupyter Notebooks:
- - MySQL-Jupyter integration
- - ROLLUP examples
- - Triggers examples
-
-- Supplementary Materials:
- - In-Class Exercise (Workers Database)
- - CASE Expression detailed guide (markdown)
- - Bank triggers assignment
- - ORM introduction document
-
-- Basic Documentation:
- - README with lab overview
- - GitHub Pages site
-
----
-
-## Upcoming Changes (Planned)
-
-### Version 2.1 (Next Minor Release)
-- [ ] Convert HTML labs to Markdown format
-- [ ] Add solution guides for all exercises
-- [ ] Create video tutorial links
-- [ ] Add assessment rubrics
-
-### Version 3.0 (Next Major Release)
-- [ ] Interactive SQL playground
-- [ ] Auto-grading system
-- [ ] Video content for each lab
-- [ ] Multi-language support
-
----
-
-## Contributing
-
-See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for details on how to contribute to this changelog.
-
----
-
-## Links
-
-- [Repository](https://github.com/TeachingOW/DBMS-SQL-Labs)
-- [Website](https://teachingow.github.io/DBMS-SQL-Labs/)
-- [Issues](https://github.com/TeachingOW/DBMS-SQL-Labs/issues)
-- [Pull Requests](https://github.com/TeachingOW/DBMS-SQL-Labs/pulls)
-
----
-
-**Note**: All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/).
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
deleted file mode 100644
index 28aee93..0000000
--- a/CONTRIBUTORS.md
+++ /dev/null
@@ -1,151 +0,0 @@
-# Contributors
-
-This project exists thanks to all the people who contribute. Thank you! 🙏
-
-## Core Team
-
-### Project Creator & Lead Maintainer
-- **TeachingOW** - [@TeachingOW](https://github.com/TeachingOW)
- - Repository creator and primary maintainer
- - Course design and curriculum development
- - Lab content creation
-
-### Co-Maintainers
-- **khalefa-ow** - [@khalefa-ow](https://github.com/khalefa-ow)
- - Content review and enhancement
- - Technical guidance
-
-## Contributors
-
-We welcome contributions from everyone! Here are some of the ways people have helped:
-
-### Content Contributors
-*Add your name here when you contribute content!*
-
-
-
-### Documentation Contributors
-*Contributors who have improved documentation*
-
-### Code Contributors
-*Contributors who have added code examples or tools*
-
-### Translation Contributors
-*Contributors who have helped translate content*
-
-### Bug Reporters
-*People who have reported issues and helped improve quality*
-
----
-
-## How to Be Listed Here
-
-Contributing to this project means:
-
-### Types of Contributions
-- **Content Creation**: New labs, exercises, or examples
-- **Documentation**: Improving guides, README, or inline docs
-- **Bug Fixes**: Correcting errors in content or code
-- **Translations**: Making content available in other languages
-- **Reviews**: Providing feedback on pull requests
-- **Support**: Helping others in issues or discussions
-- **Ideas**: Suggesting improvements or new features
-
-### Getting Listed
-1. Make a meaningful contribution to the project
-2. Your contribution is merged via pull request
-3. Add your name to this file (or we'll add it for you)
-4. Include:
- - Your name
- - Your GitHub profile link
- - Brief description of your contribution
-
-### Contribution Guidelines
-Please see our [Contributing Guide](docs/CONTRIBUTING.md) for details on:
-- How to submit changes
-- Code style guidelines
-- Pull request process
-- Communication channels
-
----
-
-## Special Thanks
-
-### Educational Institutions
-Thanks to the educational institutions that have used and provided feedback on these materials:
-- *Your institution could be listed here!*
-
-### Community Supporters
-Thanks to everyone who has:
-- ⭐ Starred the repository
-- 🍴 Forked the project
-- 📢 Shared the project with others
-- 💬 Participated in discussions
-- 🐛 Reported issues
-
-### Tools and Platforms
-- **GitHub** - For hosting and collaboration
-- **GitHub Pages** - For documentation hosting
-- **MySQL** - For the database system
-- **MongoDB** - For NoSQL examples
-- **Neo4j** - For graph database examples
-
----
-
-## Recognition
-
-### Top Contributors
-*Based on number of merged pull requests*
-
-1. TeachingOW - Project creator
-2. khalefa-ow - Co-maintainer
-
-*Your name could be here! Start contributing today.*
-
-### First-Time Contributors
-We love welcoming new contributors! Here are some of our first-time contributors:
-
-*This section will grow as more people contribute!*
-
----
-
-## Stats
-
-- **Total Contributors**: 2+
-- **Total Commits**: 100+
-- **Total Stars**: Growing!
-- **Total Forks**: Growing!
-
-*Stats as of February 2026*
-
----
-
-## Join Us!
-
-We're always looking for contributors. Whether you're:
-- 👨🎓 A student who has completed the labs
-- 👨🏫 An educator with teaching experience
-- 👨💻 A developer with database expertise
-- 📝 A technical writer
-- 🌍 A translator
-- 🎨 A designer
-
-You can contribute! See our [Contributing Guide](docs/CONTRIBUTING.md) to get started.
-
----
-
-## Contact
-
-- **Issues**: [GitHub Issues](https://github.com/TeachingOW/DBMS-SQL-Labs/issues)
-- **Discussions**: [GitHub Discussions](https://github.com/TeachingOW/DBMS-SQL-Labs/discussions)
-- **Website**: [teachingow.github.io/DBMS-SQL-Labs](https://teachingow.github.io/DBMS-SQL-Labs/)
-
----
-
-**Note**: This list is maintained manually. If you've contributed and don't see your name, please open a PR to add yourself!
-
-*Last updated: February 2026*
diff --git a/In-Class Exercise b/In-Class Exercise
deleted file mode 100644
index e9921db..0000000
--- a/In-Class Exercise
+++ /dev/null
@@ -1,36 +0,0 @@
-## In-Class Exercise (from UMM)
-
-Feel Free to search for the exact command format.
-
-In particular you are going to need to figure out how the `CREATE TABLE` and `INSERT` statements work. You will also need to figure out a little bit about SQL data-types. If you have any questions feel free to ask. With that in mind, here's what I
-want you to do (or have already done):
-
-1. Create your database. You will use this database for all your work.
-
-2. Create a table called `workers` with the following fields (all capital):
-
-Column Name | Description
-------------|--------------
-EMPLOYEE | The person's name
-MANAGER | The manager's name
-JOB | A job title
-SALARY | a yearly salary
-YEARS_WORKED| The number of years worked
-
-You get to pick the data-types for the fields
-
-1. Enter data that satisfies ALL of the following restrictions into your table:
- * Roberts, Ruskin, and Raphael are all ticket agents.
- * Rayburn is a baggage handler.
- * Rice is a flight mechanic.
- * Price manages all ticket agents.
- * Powell manages Rayburn.
- * Porter manages Rice, Price, Powell and himself.
- * Powell is head of ground crews and Porter is chief of operations.
- * Every employee receives a 10% raise for each complete year worked.
- * Roberts, Ruskin, Raphael, and Rayburn all started at $12,000. Roberts just started work, Ruskin
-and Raphael have worked for a year and a half, and Rayburn has worked for 2 years.
- * Rice started at $18,000 and now makes $21,780.
- * Price and Powell started at $16,000 and have both been working for three years.
- * Porter started at $20,000 and has been around two years longer than anyone else.
-
diff --git a/LAB_INDEX.md b/LAB_INDEX.md
index a9fce67..6533c87 100644
--- a/LAB_INDEX.md
+++ b/LAB_INDEX.md
@@ -1,635 +1,67 @@
-# DBMS-SQL-Labs - Complete Lab Index
+# SQL Quick Start Guide - Lab Index
## 📑 Quick Navigation
-- [Getting Started Guide](docs/GETTING_STARTED.md)
-- [Course Syllabus](docs/COURSE_SYLLABUS.md)
-- [SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md)
-- [Contributing Guide](docs/CONTRIBUTING.md)
+- [SQL Quick Start Guide](SQL_Quick_Start_Guide.md) - Main guide
+- [HTML Version](labs/html_labs/SQL_Quick_Start_Guide.html) - Web-friendly format
+- [SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md) - Quick reference
- [Main README](Readme.md)
---
-## 📚 All Labs by Category
+## ⚡ SQL Quick Start Guide
-### 🟢 Beginner Level (Start Here!)
+**Topics**: All fundamental SQL concepts in streamlined format
+**Duration**: 3-4 hours (fast-track)
+**Prerequisites**: None - Perfect for quick learners!
+**Links**: [Markdown](SQL_Quick_Start_Guide.md) | [HTML](labs/html_labs/SQL_Quick_Start_Guide.html)
-#### Lab 1: Database Creation & Basic Queries
-**Topics**: CREATE DATABASE, CREATE TABLE, INSERT, SELECT basics
-**Duration**: 2-3 hours
-**Prerequisites**: None
-**Link**: [Lab 1](labs/html_labs/InClassExercises.html)
+### What You'll Learn
-**What You'll Learn:**
-- Create databases and tables
-- Insert data into tables
-- Select data with WHERE clause
-- Use basic filtering and sorting
+A streamlined, beginner-friendly guide that gets you coding fast! Each section is concise with practical examples:
-**Key Concepts**: `CREATE`, `INSERT`, `SELECT`, `WHERE`, `ORDER BY`, `LIMIT`
+1. **Create Tables** - Quick setup with essential syntax
+2. **Single Table Query** - Core SELECT queries and filtering
+3. **DISTINCT** - Remove duplicates
+4. **ORDER BY** - Sort results efficiently
+5. **Foreign Key** - Link tables with integrity
+6. **Multi Table** - Focus on INNER JOIN
+7. **Aggregate Functions** - COUNT, SUM, AVG, MAX, MIN
+8. **GROUP BY** - Simple grouping examples
+9. **HAVING** - Filter grouped data
+10. **Set Operations** - Combine results with UNION
----
-
-#### In-Class Exercise: Workers Database
-**Topics**: Practical application of Lab 1 concepts
-**Duration**: 1-2 hours
-**Prerequisites**: Lab 1
-**Link**: [Workers Exercise](In-Class%20Exercise)
-
-**What You'll Learn:**
-- Apply constraints (PRIMARY KEY, NOT NULL)
-- Work with real-world data relationships
-- Practice data modeling
-
----
-
-#### Lab 2: JOINs and Multi-Table Queries
-**Topics**: INNER/LEFT/RIGHT joins, multi-table queries
-**Duration**: 1.5-2 hours
-**Prerequisites**: Lab 1
-**Link**: [Lab 2](labs/html_labs/Lab2_Part1_Joins.html)
-
-**What You'll Learn:**
-- INNER JOIN, LEFT JOIN, RIGHT JOIN
-- Multi-table queries with 3+ tables
-- Complex WHERE conditions
-- Table and column aliases
-- String functions with JOINs
-- Combining data from multiple sources
-
-**Key Concepts**: `JOIN`, `ON`, `USING`, `CONCAT`, aliases
-
-**Examples Included**:
-- University database with students, courses, and enrollments
-- Employee-Department relationships
-- Product catalogs with suppliers
-
----
-
-#### Lab 3: Aggregate Functions and GROUP BY
-**Topics**: COUNT, SUM, AVG, GROUP BY, HAVING
-**Duration**: 1.5-2 hours
-**Prerequisites**: Lab 1, Lab 2
-**Link**: [Lab 3](labs/html_labs/Lab2_Part2_Aggregates.html)
-
-**What You'll Learn:**
-- COUNT, SUM, AVG, MIN, MAX
-- GROUP BY clause
-- HAVING clause for filtering groups
-- COUNT() vs COUNT(DISTINCT)
-- Combining aggregates with JOINs
-- Statistical analysis of data
-
-**Key Concepts**: `COUNT`, `SUM`, `AVG`, `GROUP BY`, `HAVING`
-
-**Examples Included**:
-- Sales analysis and revenue calculations
-- Student performance statistics
-- Inventory management aggregations
-
----
-
-#### Lab 4: Set Operations and Advanced Queries
-**Topics**: UNION, set operations, complex queries
-**Duration**: 1.5-2 hours
-**Prerequisites**: Lab 2, Lab 3
-**Link**: [Lab 4](labs/html_labs/Lab2_Part3_SetOperations.html)
-
-**What You'll Learn:**
-- UNION and UNION ALL
-- Set operations (MySQL alternatives for INTERSECT)
-- UPDATE and DELETE with multiple rows
-- Division operation in SQL
-- Complex nested subqueries
-- Data merging from multiple sources
-
-**Key Concepts**: `UNION`, `UNION ALL`, nested queries, division
-
-**Examples Included**:
-- Combining customer data from multiple sources
-- Finding common elements across tables
-- Complex filtering with subqueries
-
----
-
-#### Lab 5: Foreign Keys & Relationships
-**Topics**: Referential integrity, relationships
-**Duration**: 2 hours
-**Prerequisites**: Lab 1, Lab 2
-**Link**: [Lab 5](labs/html_labs/Foreign_Keys.html)
-
-**What You'll Learn:**
-- Create foreign key constraints
-- Understand parent-child relationships
-- Implement referential integrity
-- CASCADE operations
-- Managing relationships in database design
-
-**Key Concepts**: `FOREIGN KEY`, `REFERENCES`, `ON DELETE CASCADE`
-
-**Examples Included**:
-- Customer-Order relationships
-- Department-Employee hierarchies
-- Product-Category associations
-
----
-
-#### Lab 6: Multi-Table Operations
-**Topics**: Complex joins, multiple table queries
-**Duration**: 3 hours
-**Prerequisites**: Lab 2, Lab 5
-**Link**: [Lab 6](labs/html_labs/Multi_Tables.html)
-
-**What You'll Learn:**
-- Join 3+ tables
-- Self-joins
-- Cross joins
-- Query optimization basics
-- Complex relationship navigation
-
-**Examples Included**:
-- Multi-level organizational structures
-- Supply chain queries with multiple vendors
-- Social network friend-of-friend queries
-
----
-
-### 🟡 Intermediate Level
-
-#### Lab 7: CASE Expressions
-**Topics**: Conditional logic in SQL
-**Duration**: 2-3 hours
-**Prerequisites**: Lab 3
-**Link**: [Lab 7](Lab_Case_Expression.md)
-
-**What You'll Learn:**
-- Simple CASE expressions
-- Searched CASE expressions
-- CASE with aggregate functions
-- Conditional counting and summing
-- Real-world data categorization
-- Data transformation techniques
-
-**Key Concepts**: `CASE WHEN`, conditional logic, data transformation
-
-**Highlights**:
-- ✨ Comprehensive guide with real-world examples
-- ✨ Compare different query approaches
-- ✨ Practice exercises with solutions
-
-**Examples Included**:
-- Grade categorization (A, B, C, etc.)
-- Sales tier classification
-- Customer segmentation
-- Performance rating systems
-
----
-
-#### Lab 8: Window Functions & Recursive Queries
-**Topics**: Analytical functions, partitioning
-**Duration**: 3-4 hours
-**Prerequisites**: Lab 3
-**Link**: [Lab 8](labs/html_labs/Lab4.html)
-
-**What You'll Learn:**
-- ROW_NUMBER, RANK, DENSE_RANK
-- PARTITION BY clause
-- Running totals
-- Moving averages
-- Recursive CTEs
-- Advanced analytical operations
-
-**Key Concepts**: Window functions, `OVER`, `PARTITION BY`, recursion
-
-**Examples Included**:
-- Top N queries per category
-- Running sum calculations
-- Year-over-year comparisons
-- Hierarchical data traversal
-
----
-
-#### Lab 9: Views & Virtual Tables
-**Topics**: Creating and managing views
-**Duration**: 2 hours
-**Prerequisites**: Lab 2
-**Link**: [Lab 9](labs/html_labs/Lab5_views.html)
-
-**What You'll Learn:**
-- Create views
-- Query views
-- Update through views
-- Materialized views concept
-- Security and abstraction benefits
-
-**Key Concepts**: `CREATE VIEW`, virtual tables, data abstraction
-
-**Examples Included**:
-- Employee summary views
-- Sales dashboard views
-- Filtered data access for different user roles
-
----
-
-### 🟠 Database Design & Advanced SQL
-
-#### Lab 10: Database Normalization
-**Topics**: 1NF, 2NF, 3NF, BCNF
-**Duration**: 3-4 hours
-**Prerequisites**: Lab 5
-**Link**: [Lab 10](labs/html_labs/Lab3_Normal_forms.html)
-
-**What You'll Learn:**
-- Database normalization principles
-- First, Second, Third Normal Forms
-- Boyce-Codd Normal Form
-- When to denormalize
-- Design patterns
-- Dependency analysis
-
-**Key Concepts**: Normalization, dependencies, decomposition
-
-**Examples Included**:
-- Poorly designed database transformations
-- Student registration system normalization
-- E-commerce database design
-
----
-
-#### Lab 11: Advanced SQL Techniques
-**Topics**: Complex queries and optimization
-**Duration**: 3 hours
-**Prerequisites**: Lab 8
-**Link**: [Lab 11](labs/html_labs/Lab4_sql.html)
-
-**What You'll Learn:**
-- Query optimization
-- Complex analytical queries
-- Advanced subquery techniques
-- Performance considerations
-- Index usage strategies
-
-**Examples Included**:
-- Query execution plan analysis
-- Optimizing slow queries
-- Complex reporting queries
-
----
-
-### 🔵 Programming Integration
-
-#### Lab 12: Java Database Interface
-**Topics**: JDBC, connecting Java to databases
-**Duration**: 3-4 hours
-**Prerequisites**: Basic Java knowledge
-**Link**: [Lab 12](labs/html_labs/lab_java_3.html)
-
-**What You'll Learn:**
-- JDBC basics
-- Connection management
-- PreparedStatements
-- ResultSet handling
-- Error handling
-- Connection pooling
-
-**Key Concepts**: JDBC, `Connection`, `Statement`, `ResultSet`
-
-**Examples Included**:
-- Simple CRUD operations in Java
-- Database-backed Java applications
-- Transaction management in JDBC
-
----
+### Why This Guide?
-#### Lab 13: Python Database Interface
-**Topics**: Python MySQL connector
-**Duration**: 2-3 hours
-**Prerequisites**: Basic Python knowledge
-**Link**: [Lab 13](labs/html_labs/Lab_Python.html)
-
-**What You'll Learn:**
-- mysql-connector-python
-- PyMySQL
-- Connection pooling
-- Parameterized queries
-- Error handling
-- Pandas integration
-
-**Key Concepts**: Python DB-API, connectors, cursors
-
-**Examples Included**:
-- Database operations with Python
-- Data analysis with Pandas
-- Web application database backends
-
----
-
-#### Lab 14: Jupyter Notebook Integration
-**Topics**: Interactive database analysis
-**Duration**: 2 hours
-**Prerequisites**: Lab 13
-**Link**: [Lab 14](https://nbviewer.org/github/teachingow/DBMS-SQL-Labs/blob/main/inclass/Mysql-Jupyter.ipynb)
-
-**What You'll Learn:**
-- IPython SQL magic
-- Pandas integration
-- Data visualization
-- Interactive queries
-- Exploratory data analysis
-
-**Examples Included**:
-- Interactive SQL queries in Jupyter
-- Data visualization with matplotlib
-- Statistical analysis of database data
-
----
-
-### 🟣 Advanced Database Concepts
-
-#### Lab 15: Analytical Functions
-**Topics**: ROLLUP, CUBE, advanced grouping
-**Duration**: 2-3 hours
-**Prerequisites**: Lab 3, Lab 8
-**Link**: [Lab 15](https://nbviewer.org/github/teachingow/DBMS-SQL-Labs/blob/main/inclass/Rollup.ipynb)
-
-**What You'll Learn:**
-- ROLLUP for subtotals
-- CUBE for multi-dimensional analysis
-- GROUPING function
-- Advanced analytics
-- Cross-tabulation queries
-
-**Key Concepts**: `ROLLUP`, `CUBE`, `GROUPING SETS`
-
-**Examples Included**:
-- Sales reports with subtotals
-- Multi-dimensional analysis
-- Pivot table-like queries
-
----
-
-#### Lab 16: Triggers & Stored Procedures
-**Topics**: Database automation and business logic
-**Duration**: 3-4 hours
-**Prerequisites**: Lab 11
-**Link**: [Lab 16](labs/html_labs/Triggers.html)
-
-**What You'll Learn:**
-- Create triggers (BEFORE/AFTER)
-- Stored procedures
-- Functions
-- Parameters
-- Error handling
-- Audit logging
-
-**Key Concepts**: `TRIGGER`, `PROCEDURE`, `FUNCTION`, automation
-
-**Related Assignment**: [Bank Overdraft System](bank.md)
-
-**Examples Included**:
-- Automatic timestamp updates
-- Audit trail implementation
-- Business rule enforcement
-- Data validation triggers
-
----
-
-#### Lab 17: Transaction Management
-**Topics**: ACID properties, concurrency
-**Duration**: 3 hours
-**Prerequisites**: Lab 16
-**Link**: [Lab 17](labs/html_labs/Transactions.html)
-
-**What You'll Learn:**
-- BEGIN, COMMIT, ROLLBACK
-- ACID properties
-- Transaction isolation
-- Savepoints
-- Deadlock handling
-- Error recovery
-
-**Key Concepts**: Transactions, `COMMIT`, `ROLLBACK`, ACID
-
-**Examples Included**:
-- Banking transaction scenarios
-- Multi-step operations
-- Error handling and rollback
-
----
-
-#### Lab 18: Isolation Levels
-**Topics**: Concurrency control, consistency
-**Duration**: 2-3 hours
-**Prerequisites**: Lab 17
-**Link**: [Lab 18](labs/html_labs/Isolation_Levels.html)
-
-**What You'll Learn:**
-- READ UNCOMMITTED
-- READ COMMITTED
-- REPEATABLE READ
-- SERIALIZABLE
-- Dirty reads, phantom reads
-- Concurrency issues
-
-**Key Concepts**: Isolation levels, concurrency problems
-
-**Examples Included**:
-- Demonstrating dirty reads
-- Phantom read scenarios
-- Non-repeatable read examples
-
----
-
-### 🔴 Modern Database Technologies
-
-#### Lab 19: JSON & XML Processing
-**Topics**: Semi-structured data in SQL
-**Duration**: 2-3 hours
-**Prerequisites**: Lab 2
-**Link**: [Lab 19](labs/html_labs/Lab_JSON-XML.html)
-
-**What You'll Learn:**
-- JSON data type
-- JSON functions
-- XML handling
-- Querying nested data
-- Storing semi-structured data
-
-**Key Concepts**: JSON, XML, semi-structured data
-
-**Examples Included**:
-- Storing and querying JSON documents
-- Extracting values from nested JSON
-- XML data manipulation
-
----
-
-#### Lab 20: MongoDB (NoSQL)
-**Topics**: Document-based databases
-**Duration**: 3-4 hours
-**Prerequisites**: Basic database knowledge
-**Link**: [Lab 20](labs/html_labs/Lab10_mongoDB.html)
-
-**What You'll Learn:**
-- MongoDB basics
-- Document model
-- CRUD operations
-- Aggregation pipeline
-- When to use NoSQL
-- Schema design for documents
-
-**Key Concepts**: NoSQL, documents, collections, MongoDB
-
-**Examples Included**:
-- Blog post storage and retrieval
-- E-commerce product catalogs
-- Social media data modeling
-
----
-
-#### Lab 21: Neo4j (Graph Database)
-**Topics**: Graph database concepts
-**Duration**: 3-4 hours
-**Prerequisites**: Basic database knowledge
-**Link**: [Lab 21](labs/html_labs/Lab11_neo4j.html)
-
-**What You'll Learn:**
-- Graph data model
-- Nodes and relationships
-- Cypher query language
-- Path queries
-- Graph algorithms
-- When to use graph databases
-
-**Key Concepts**: Graph databases, Cypher, nodes, edges
-
-**Examples Included**:
-- Social network modeling
-- Recommendation engines
-- Shortest path problems
-- Network analysis
-
----
-
-## 📊 Learning Paths
-
-### Path 1: Complete Beginner to SQL Master (16 weeks)
-Week 1-2: Labs 1-2
-Week 3-4: Labs 3-6
-Week 5-6: Labs 7-9
-Week 7-8: Labs 10-11
-Week 9-10: Labs 12-13, 16-18
-Week 11-12: Labs 14-15
-Week 13-16: Labs 19-21 and capstone project
-
-### Path 2: Quick SQL Review (4 weeks)
-Week 1: Labs 1-3
-Week 2: Labs 4-8
-Week 3: Labs 16-17
-Week 4: Labs 20-21
-
-### Path 3: Programming Integration Focus (6 weeks)
-Week 1-2: Labs 1-3 (refresh)
-Week 3: Labs 12-13 (Python/Java)
-Week 4: Lab 14 (Jupyter)
-Week 5: Labs 16-17 (Triggers/Transactions)
-Week 6: Project work
-
-### Path 4: Modern Databases (4 weeks)
-Week 1: Labs 7-8 (SQL advanced)
-Week 2: Lab 19 (JSON/XML)
-Week 3: Lab 20 (MongoDB)
-Week 4: Lab 21 (Neo4j)
-
-### Path 5: Data Analysis Track (5 weeks)
-Week 1: Labs 1-3 (Foundations)
-Week 2: Labs 7-8 (CASE & Window Functions)
-Week 3: Labs 13-14 (Python & Jupyter)
-Week 4: Lab 15 (ROLLUP/CUBE)
-Week 5: Labs 19-20 (JSON & MongoDB)
-
----
-
-## 📁 Additional Resources
-
-### Data Files
-All practice datasets are in the `/data` directory:
-- `IMDB-Movie-Data.csv` - Movie database
-- `employees.csv` - HR data
-- `drivers.sql` - Complete database example
-- `grades.csv` - Student performance
-- `cities.csv` - Geographic data
-- `airtravel.csv` - Flight data
-
-### Code Examples
-Programming examples in `/labs/code`:
-- Lab 6: Node.js examples
-- Lab 7: Express.js server
-- Lab 8: Web application
-
-### Jupyter Notebooks
-Interactive notebooks in `/labs/notebooks`:
-- Mysql-Jupyter.ipynb
-- Rollup.ipynb
-- Triggers.ipynb
-
----
-
-## 🎯 Lab Difficulty Levels
-
-| Level | Labs | Description |
-|-------|------|-------------|
-| 🟢 Beginner | 1-6 | Basic SQL, tables, joins |
-| 🟡 Intermediate | 7-9 | Advanced queries, window functions |
-| 🟠 Advanced SQL | 10-11 | Design, optimization |
-| 🔵 Programming | 12-14 | Integration with code |
-| 🟣 Expert | 15-18 | Triggers, transactions |
-| 🔴 Modern | 19-21 | NoSQL, Graph databases |
-
----
+- ✅ **Fast**: Learn SQL in 3-4 hours
+- ✅ **Practical**: Code examples you can run immediately
+- ✅ **Simple**: No information overload - just what you need
+- ✅ **Hands-on**: Practice exercises after each topic
+- ✅ **Reference**: Quick syntax reference included
-## 🔍 Search by Topic
+### Best For
-**Basic Operations**: Labs 1, 2
-**Joins**: Labs 2, 5, 6
-**Aggregations**: Labs 3, 15
-**Subqueries**: Labs 4, 7
-**Window Functions**: Lab 8
-**Views**: Lab 9
-**Database Design**: Labs 5, 10
-**Stored Procedures**: Lab 16
-**Triggers**: Lab 16
-**Transactions**: Labs 17, 18
-**Python**: Lab 13, 14
-**Java**: Lab 12
-**NoSQL**: Lab 20
-**Graph Databases**: Lab 21
-**JSON/XML**: Lab 19
+Complete beginners, fast learners, developers who prefer learning by doing, quick reference needs.
---
-## ✅ Recommended Order for Self-Study
+## 🚀 Getting Started
-1. Start with [Getting Started Guide](docs/GETTING_STARTED.md)
-2. Complete Labs 1-6 (Foundations)
-3. Continue with Labs 7-9 (Intermediate)
-4. Study Lab 10 (Design)
-5. Pick programming language: Lab 12 (Java) or Lab 13 (Python)
-6. Complete Labs 16-18 (Advanced concepts)
-7. Explore Labs 19-21 (Modern databases)
+1. Install MySQL or MariaDB
+2. Open the [SQL Quick Start Guide](SQL_Quick_Start_Guide.md)
+3. Follow along with examples
+4. Complete practice exercises
+5. Build your own databases!
---
-## 🆘 Need Help?
+## 📝 Additional Resources
-- 📖 Check [Getting Started Guide](docs/GETTING_STARTED.md)
-- 📝 Review [SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md)
-- 💬 Open an issue on GitHub
-- 🔍 Search existing issues
-- 📚 Consult external resources in each lab
+- [SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md) - Comprehensive SQL reference
+- [Getting Started Guide](docs/GETTING_STARTED.md) - Setup instructions
---
-**Happy Learning! 🚀**
+## 📄 License
-[Back to Main README](Readme.md)
+This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
diff --git a/Lab_Case_Expression.md b/Lab_Case_Expression.md
deleted file mode 100644
index 9255018..0000000
--- a/Lab_Case_Expression.md
+++ /dev/null
@@ -1,470 +0,0 @@
-# Lab: SQL CASE Expressions
-
-## 🎯 Learning Objectives
-
-By the end of this lab, you will be able to:
-- Understand and use SQL CASE expressions effectively
-- Compare CASE expressions with alternative query approaches
-- Apply CASE expressions in SELECT, WHERE, and HAVING clauses
-- Use CASE with aggregate functions for conditional counting
-- Understand when CASE expressions improve query readability and performance
-
-## 📋 Prerequisites
-
-- Understanding of basic SQL SELECT statements
-- Knowledge of aggregate functions (COUNT, SUM, AVG)
-- Familiarity with GROUP BY and HAVING clauses
-- Basic understanding of subqueries and CTEs (Common Table Expressions)
-
-## 📚 Introduction
-
-The **CASE expression** is one of SQL's most powerful and versatile tools. It allows you to implement conditional logic directly within your SQL queries, making your code more readable and often more efficient.
-
-### CASE Expression Syntax
-
-```sql
--- Simple CASE (comparing against a single column)
-CASE column_name
- WHEN value1 THEN result1
- WHEN value2 THEN result2
- ELSE default_result
-END
-
--- Searched CASE (more flexible with conditions)
-CASE
- WHEN condition1 THEN result1
- WHEN condition2 THEN result2
- ELSE default_result
-END
-```
-
-### Common Use Cases
-
-1. **Conditional Aggregation**: Count or sum only rows meeting specific criteria
-2. **Data Transformation**: Convert values or categorize data
-3. **Complex Filtering**: Implement sophisticated WHERE/HAVING conditions
-4. **Pivot Operations**: Transform rows into columns
-
-## 🚀 Getting Started
-
-### Step 1: Create the Database and Sample Data
-
-We'll work with an `app_events` table that tracks user interactions in a mobile application. This realistic scenario demonstrates how CASE expressions can analyze user behavior patterns.
-
-```sql
--- Create database
-DROP DATABASE IF EXISTS case_lab;
-CREATE DATABASE case_lab;
-USE case_lab;
-
--- Create app_events table
-CREATE TABLE app_events (
- event_id INT AUTO_INCREMENT PRIMARY KEY,
- session_id INT NOT NULL,
- user_id INT NOT NULL,
- event_type VARCHAR(20) NOT NULL,
- event_timestamp TIMESTAMP NOT NULL,
- INDEX idx_session (session_id),
- INDEX idx_user (user_id),
- INDEX idx_type (event_type)
-);
-
--- Insert sample data with various event types
-INSERT INTO app_events (session_id, user_id, event_type, event_timestamp) VALUES
--- Session 1: Active session with lots of scrolling, few clicks, no purchase
-(1, 101, 'scroll', '2024-01-15 10:00:00'),
-(1, 101, 'scroll', '2024-01-15 10:05:00'),
-(1, 101, 'scroll', '2024-01-15 10:10:00'),
-(1, 101, 'scroll', '2024-01-15 10:15:00'),
-(1, 101, 'scroll', '2024-01-15 10:20:00'),
-(1, 101, 'scroll', '2024-01-15 10:25:00'),
-(1, 101, 'scroll', '2024-01-15 10:30:00'),
-(1, 101, 'click', '2024-01-15 10:35:00'),
-(1, 101, 'scroll', '2024-01-15 10:40:00'),
-
--- Session 2: Short session, doesn't meet criteria
-(2, 102, 'scroll', '2024-01-15 11:00:00'),
-(2, 102, 'scroll', '2024-01-15 11:05:00'),
-(2, 102, 'click', '2024-01-15 11:08:00'),
-
--- Session 3: Session with purchase (should be excluded)
-(3, 103, 'scroll', '2024-01-15 12:00:00'),
-(3, 103, 'scroll', '2024-01-15 12:10:00'),
-(3, 103, 'scroll', '2024-01-15 12:20:00'),
-(3, 103, 'scroll', '2024-01-15 12:30:00'),
-(3, 103, 'scroll', '2024-01-15 12:40:00'),
-(3, 103, 'scroll', '2024-01-15 12:50:00'),
-(3, 103, 'click', '2024-01-15 12:55:00'),
-(3, 103, 'purchase', '2024-01-15 13:00:00'),
-
--- Session 4: Long session with many scrolls, few clicks, no purchase
-(4, 104, 'scroll', '2024-01-15 14:00:00'),
-(4, 104, 'scroll', '2024-01-15 14:08:00'),
-(4, 104, 'scroll', '2024-01-15 14:16:00'),
-(4, 104, 'scroll', '2024-01-15 14:24:00'),
-(4, 104, 'scroll', '2024-01-15 14:32:00'),
-(4, 104, 'scroll', '2024-01-15 14:40:00'),
-(4, 104, 'scroll', '2024-01-15 14:48:00'),
-(4, 104, 'scroll', '2024-01-15 14:56:00'),
-(4, 104, 'scroll', '2024-01-15 15:04:00'),
-(4, 104, 'click', '2024-01-15 15:12:00'),
-
--- Session 5: High scroll-to-click ratio session
-(5, 105, 'scroll', '2024-01-15 16:00:00'),
-(5, 105, 'scroll', '2024-01-15 16:07:00'),
-(5, 105, 'scroll', '2024-01-15 16:14:00'),
-(5, 105, 'scroll', '2024-01-15 16:21:00'),
-(5, 105, 'scroll', '2024-01-15 16:28:00'),
-(5, 105, 'scroll', '2024-01-15 16:35:00'),
-(5, 105, 'scroll', '2024-01-15 16:42:00'),
-(5, 105, 'scroll', '2024-01-15 16:49:00'),
-(5, 105, 'scroll', '2024-01-15 16:56:00'),
-(5, 105, 'scroll', '2024-01-15 17:03:00'),
-(5, 105, 'click', '2024-01-15 17:10:00');
-```
-
-## 🎓 Problem: Finding Browse-Heavy Sessions
-
-**Business Goal**: Identify user sessions that indicate a poor user experience - users who scroll a lot but don't click much and don't make purchases. These sessions may indicate:
-- Confusing UI/UX
-- Irrelevant content
-- Poor product recommendations
-- Potential bugs or performance issues
-
-### Criteria for Browse-Heavy Sessions:
-1. Session duration > 30 minutes
-2. At least 5 scroll events
-3. Click-to-scroll ratio < 0.2 (less than 20% clicks relative to scrolls)
-4. No purchase events
-
-## 💡 Solution 1: Using CASE Expressions (Clean & Efficient)
-
-This approach uses CASE expressions to conditionally count events directly within the query:
-
-```sql
--- Write your MySQL query statement below
-SELECT
- session_id,
- user_id,
- TIMESTAMPDIFF(MINUTE, MIN(event_timestamp), MAX(event_timestamp)) AS session_duration_minutes,
- COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) AS scroll_count
-FROM app_events
-GROUP BY session_id, user_id
-HAVING session_duration_minutes > 30
- AND scroll_count >= 5
- AND COUNT(CASE WHEN event_type = 'click' THEN 1 END) / scroll_count < 0.2
- AND COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) = 0
-ORDER BY scroll_count DESC, session_id;
-```
-
-### How This Query Works:
-
-1. **Conditional Counting with CASE**:
- ```sql
- COUNT(CASE WHEN event_type = 'scroll' THEN 1 END)
- ```
- - The CASE expression returns 1 only when event_type is 'scroll'
- - COUNT ignores NULL values, so only scroll events are counted
- - This is more readable than filtering with WHERE
-
-2. **Session Duration Calculation**:
- ```sql
- TIMESTAMPDIFF(MINUTE, MIN(event_timestamp), MAX(event_timestamp))
- ```
- - Calculates the difference between first and last event in minutes
-
-3. **Click-to-Scroll Ratio**:
- ```sql
- COUNT(CASE WHEN event_type = 'click' THEN 1 END) / scroll_count < 0.2
- ```
- - Divides click count by scroll count to get the ratio
-
-4. **No Purchase Condition**:
- ```sql
- COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) = 0
- ```
- - Ensures no purchase events exist in the session
-
-### Advantages of CASE Expression Approach:
-- ✅ **Concise**: Single query, easy to read
-- ✅ **Performant**: Single pass through the data
-- ✅ **Maintainable**: Logic is clear and straightforward
-- ✅ **Flexible**: Easy to add more conditions
-
-## 🔄 Solution 2: Using CTEs (Complex but Educational)
-
-This alternative approach uses Common Table Expressions to achieve the same result. While more verbose, it demonstrates how queries can be decomposed into logical steps:
-
-```sql
-WITH A AS (
- -- Count events by type for each session
- SELECT session_id, user_id, event_type, COUNT(*) AS c
- FROM app_events
- GROUP BY session_id, user_id, event_type
-),
-E AS (
- -- Ensure all sessions have a 'click' row (even if count is 0)
- SELECT * FROM A
- UNION
- SELECT session_id, user_id, 'click', 0
- FROM A
- WHERE session_id NOT IN (
- SELECT session_id FROM A WHERE event_type = 'click'
- )
-),
-T AS (
- -- Calculate session duration in seconds
- SELECT
- session_id,
- UNIX_TIMESTAMP(MAX(event_timestamp)) - UNIX_TIMESTAMP(MIN(event_timestamp)) AS d
- FROM app_events
- GROUP BY session_id
-),
-TT AS (
- -- Join everything together
- SELECT
- T.session_id,
- E_c.user_id,
- E_s.c AS scroll_count,
- E_c.c AS clicks,
- T.d AS duration
- FROM E E_c
- JOIN E E_s ON E_c.session_id = E_s.session_id
- JOIN T ON E_c.session_id = T.session_id
- WHERE E_s.event_type = 'scroll'
- AND E_c.event_type = 'click'
-)
-
--- Final selection with filters
-SELECT
- session_id,
- user_id,
- duration/60 AS session_duration_minutes,
- scroll_count
-FROM TT
-WHERE session_id NOT IN (
- SELECT session_id FROM E WHERE event_type = 'purchase'
-)
- AND duration > 30*60
- AND scroll_count >= 5
- AND clicks/scroll_count < 0.2
-ORDER BY scroll_count DESC, session_id;
-```
-
-### How This CTE Approach Works:
-
-1. **CTE A**: Groups events by type and counts them
-2. **CTE E**: Handles sessions with no clicks by adding a zero-count row
-3. **CTE T**: Calculates session duration in seconds
-4. **CTE TT**: Joins all CTEs together to create a comprehensive view
-5. **Final SELECT**: Applies filters and formats output
-
-### Comparison: CASE vs CTE Approach
-
-| Aspect | CASE Expression | CTE Approach |
-|--------|----------------|--------------|
-| **Lines of Code** | 10 lines | 40+ lines |
-| **Readability** | High - logic is clear | Medium - requires understanding multiple CTEs |
-| **Performance** | Better - single scan | Potentially slower - multiple scans/joins |
-| **Debugging** | Harder to debug intermediate steps | Easier - can query each CTE separately |
-| **Maintainability** | Better - less code | More complex - multiple dependencies |
-| **Use Case** | Production queries | Learning/debugging complex logic |
-
-## 🧪 Practice Exercises
-
-### Exercise 1: Basic CASE Usage
-Write a query to categorize sessions as 'short' (< 15 min), 'medium' (15-45 min), or 'long' (> 45 min):
-
-```sql
--- Your solution here
-```
-
-
-Solution
-
-```sql
-SELECT
- session_id,
- user_id,
- TIMESTAMPDIFF(MINUTE, MIN(event_timestamp), MAX(event_timestamp)) AS duration,
- CASE
- WHEN TIMESTAMPDIFF(MINUTE, MIN(event_timestamp), MAX(event_timestamp)) < 15 THEN 'short'
- WHEN TIMESTAMPDIFF(MINUTE, MIN(event_timestamp), MAX(event_timestamp)) <= 45 THEN 'medium'
- ELSE 'long'
- END AS session_category
-FROM app_events
-GROUP BY session_id, user_id;
-```
-
-
-### Exercise 2: Multiple Conditional Counts
-Write a query that shows for each session:
-- Total events
-- Number of scrolls
-- Number of clicks
-- Number of purchases
-- An engagement score (scrolls * 1 + clicks * 3 + purchases * 10)
-
-```sql
--- Your solution here
-```
-
-
-Solution
-
-```sql
-SELECT
- session_id,
- user_id,
- COUNT(*) AS total_events,
- COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) AS scroll_count,
- COUNT(CASE WHEN event_type = 'click' THEN 1 END) AS click_count,
- COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) AS purchase_count,
- (COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) * 1 +
- COUNT(CASE WHEN event_type = 'click' THEN 1 END) * 3 +
- COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) * 10) AS engagement_score
-FROM app_events
-GROUP BY session_id, user_id
-ORDER BY engagement_score DESC;
-```
-
-
-### Exercise 3: CASE in WHERE Clause
-Write a query to find sessions where:
-- If the session has any purchase, include it regardless of other criteria
-- If no purchase, only include if scroll_count >= 5 and duration > 20 minutes
-
-```sql
--- Your solution here
-```
-
-
-Solution
-
-```sql
-SELECT
- session_id,
- user_id,
- TIMESTAMPDIFF(MINUTE, MIN(event_timestamp), MAX(event_timestamp)) AS duration,
- COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) AS scroll_count,
- COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) AS purchase_count
-FROM app_events
-GROUP BY session_id, user_id
-HAVING
- CASE
- WHEN COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) > 0 THEN 1
- WHEN COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) >= 5
- AND TIMESTAMPDIFF(MINUTE, MIN(event_timestamp), MAX(event_timestamp)) > 20 THEN 1
- ELSE 0
- END = 1;
-```
-
-
-### Exercise 4: Convert CTE to CASE
-Try rewriting the following CTE query using CASE expressions:
-
-```sql
-WITH event_counts AS (
- SELECT
- session_id,
- user_id,
- SUM(CASE WHEN event_type = 'scroll' THEN 1 ELSE 0 END) AS scrolls,
- SUM(CASE WHEN event_type = 'click' THEN 1 ELSE 0 END) AS clicks
- FROM app_events
- GROUP BY session_id, user_id
-)
-SELECT * FROM event_counts WHERE scrolls > clicks * 2;
-```
-
-Can this be written more efficiently without the CTE?
-
-
-Solution
-
-```sql
-SELECT
- session_id,
- user_id,
- COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) AS scrolls,
- COUNT(CASE WHEN event_type = 'click' THEN 1 END) AS clicks
-FROM app_events
-GROUP BY session_id, user_id
-HAVING COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) >
- COUNT(CASE WHEN event_type = 'click' THEN 1 END) * 2;
-```
-
-
-## 🎓 Advanced Topics
-
-### Using CASE with SUM for Weighted Counts
-
-```sql
--- Calculate engagement score with different weights
-SELECT
- session_id,
- user_id,
- SUM(CASE
- WHEN event_type = 'scroll' THEN 1
- WHEN event_type = 'click' THEN 3
- WHEN event_type = 'purchase' THEN 10
- ELSE 0
- END) AS weighted_engagement
-FROM app_events
-GROUP BY session_id, user_id;
-```
-
-### CASE in ORDER BY for Custom Sorting
-
-```sql
--- Order by purchase first, then by scroll count
-SELECT
- session_id,
- user_id,
- COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) AS purchases,
- COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) AS scrolls
-FROM app_events
-GROUP BY session_id, user_id
-ORDER BY
- CASE WHEN COUNT(CASE WHEN event_type = 'purchase' THEN 1 END) > 0 THEN 0 ELSE 1 END,
- COUNT(CASE WHEN event_type = 'scroll' THEN 1 END) DESC;
-```
-
-## 📊 Performance Considerations
-
-### When to Use CASE:
-- ✅ When you need conditional aggregation
-- ✅ When transforming data in the same query
-- ✅ When the logic is straightforward
-- ✅ When performance is critical (single pass through data)
-
-### When CTEs Might Be Better:
-- ✅ When debugging complex logic step by step
-- ✅ When the same subquery is needed multiple times
-- ✅ When logic needs to be clearly separated for readability
-- ✅ For teaching/learning purposes
-
-## 🔑 Key Takeaways
-
-1. **CASE expressions** are powerful tools for conditional logic in SQL
-2. They can be used in SELECT, WHERE, HAVING, and ORDER BY clauses
-3. CASE with aggregate functions enables conditional counting/summing
-4. The CASE approach is often **more concise and performant** than alternatives
-5. CTEs can make complex queries more **readable for debugging**
-6. Choose the approach that best balances **performance and maintainability**
-
-## 📚 Additional Resources
-
-- [MySQL CASE Documentation](https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#operator_case)
-- [SQL CASE Expression Best Practices](https://mode.com/sql-tutorial/sql-case/)
-- [Aggregate Functions with CASE](https://learnsql.com/blog/case-when-with-aggregate-functions/)
-
-## 🎯 Summary
-
-In this lab, you learned:
-- How to use CASE expressions for conditional logic
-- The difference between simple and searched CASE
-- How CASE expressions work with aggregate functions
-- When to use CASE vs alternative approaches like CTEs
-- Real-world applications of CASE expressions in data analysis
-
-Practice these concepts with your own datasets to master conditional logic in SQL!
diff --git a/PROJECT_COMPLETION_REPORT.md b/PROJECT_COMPLETION_REPORT.md
deleted file mode 100644
index 512dcd0..0000000
--- a/PROJECT_COMPLETION_REPORT.md
+++ /dev/null
@@ -1,284 +0,0 @@
-# S26 Branch - Project Completion Report
-
-**Date**: February 7, 2026
-**Branch**: s26
-**Version**: 2.0.0
-**Status**: ✅ COMPLETE
-
----
-
-## Executive Summary
-
-Successfully completed a comprehensive revision and reorganization of the DBMS-SQL-Labs repository in the **s26 branch**. The project transformed from a collection of lab files into a professional, well-documented educational platform with nearly 100,000 characters of new documentation across 11 major files.
-
----
-
-## Deliverables - All Complete ✅
-
-### 1. Documentation Suite (10 New Documents)
-
-| # | Document | Characters | Status |
-|---|----------|-----------|---------|
-| 1 | Getting Started Guide | 8,617 | ✅ Complete |
-| 2 | Course Syllabus | 11,326 | ✅ Complete |
-| 3 | SQL Cheat Sheet | 14,359 | ✅ Complete |
-| 4 | Contributing Guide | 11,337 | ✅ Complete |
-| 5 | Lab Index | 12,066 | ✅ Complete |
-| 6 | Practice Exercises | 9,457 | ✅ Complete |
-| 7 | Project Roadmap | 7,613 | ✅ Complete |
-| 8 | Changelog | 5,995 | ✅ Complete |
-| 9 | Contributors | 4,023 | ✅ Complete |
-| 10 | FAQ | 8,711 | ✅ Complete |
-| 11 | S26 Summary | 9,818 | ✅ Complete |
-
-**Total**: 103,322 characters of professional documentation
-
-### 2. Repository Structure
-
-```
-✅ /docs/ - All documentation centralized
-✅ /labs/ - All labs organized (html_labs, notebooks, code)
-✅ /exercises/ - Practice problems
-✅ /solutions/ - Structure for solutions (ready for content)
-✅ /supplementary/ - Additional materials (ready for content)
-```
-
-### 3. Enhanced Files
-
-```
-✅ README.md - Updated with quick links and better structure
-✅ .gitignore - Enhanced with comprehensive exclusions
-✅ LAB_INDEX.md - Complete lab catalog with descriptions
-✅ CHANGELOG.md - Version history tracking
-✅ CONTRIBUTORS.md - Community recognition
-✅ S26_SUMMARY.md - Complete overview of changes
-```
-
-### 4. Content Organization
-
-```
-✅ 49+ lab files copied to /labs/html_labs/
-✅ 4 Jupyter notebooks copied to /labs/notebooks/
-✅ 3 code example directories copied to /labs/code/
-✅ All original files preserved for backward compatibility
-✅ Links in README updated to new locations
-```
-
----
-
-## Key Achievements
-
-### Documentation Coverage
-- **Before**: ~20% (basic README, a few markdown files)
-- **After**: ~95% (comprehensive documentation suite)
-- **Improvement**: +375%
-
-### Organization
-- **New Directories**: 6 (docs, labs, exercises, solutions, supplementary, labs/*)
-- **Reorganized Files**: 50+ lab files, notebooks, and examples
-- **Cross-References**: 100+ links between documents
-
-### User Experience
-- **Navigation Points**: Increased from 1 to 10+
-- **Entry Points**: Multiple (by skill, topic, goal)
-- **Support Resources**: FAQ, troubleshooting, cheat sheet
-- **Learning Paths**: 4 different paths for different goals
-
-### Professional Features
-- ✅ Complete 16-week curriculum
-- ✅ Assessment guidelines
-- ✅ Contribution standards
-- ✅ Version tracking
-- ✅ Community recognition
-- ✅ Future roadmap
-
----
-
-## What Was Created
-
-### For Students
-1. **Getting Started Guide** - Complete setup from zero to running
-2. **Lab Index** - All 21 labs with details, prerequisites, duration
-3. **SQL Cheat Sheet** - Every SQL command with examples
-4. **Practice Exercises** - Additional problems by topic
-5. **FAQ** - 40+ common questions answered
-6. **Learning Paths** - 4 paths for different goals
-
-### For Instructors
-1. **Course Syllabus** - 16-week curriculum ready to use
-2. **Weekly Schedule** - Topics, labs, assignments for each week
-3. **Grading Policy** - Complete assessment framework
-4. **Project Ideas** - 8 project suggestions with requirements
-5. **Lab Organization** - Clear structure for course delivery
-
-### For Contributors
-1. **Contributing Guide** - Professional contribution standards
-2. **Code Style Guidelines** - SQL, Python, Java standards
-3. **Commit Conventions** - Consistent commit messages
-4. **PR Process** - Clear pull request workflow
-5. **Roadmap** - Future work clearly defined
-6. **Recognition System** - Contributors get credit
-
-### For Project Management
-1. **Changelog** - Version history tracking
-2. **Roadmap** - Short/medium/long-term goals
-3. **Metrics** - Success tracking defined
-4. **Contributors File** - Community recognition
-5. **S26 Summary** - Complete overview of changes
-
----
-
-## Technical Details
-
-### Commits Made
-```
-1. dc550d1 - Add comprehensive S26 branch summary document
-2. e311617 - Add FAQ, Roadmap, Changelog, Contributors, and improved .gitignore
-3. 541ca35 - Add comprehensive documentation and reorganize repository structure
-4. d6d260f - Initial plan
-```
-
-### Files Added: 59
-- Documentation: 11 markdown files
-- Labs: 45 HTML files
-- Notebooks: 4 Jupyter notebooks
-- Code: 3 directories with examples
-- Misc: .gitignore updates
-
-### Lines of Documentation: ~3,500+
-### Total Characters: ~103,000
-
----
-
-## Quality Metrics
-
-### Completeness
-- ✅ All planned documentation created
-- ✅ All reorganization completed
-- ✅ All cross-references added
-- ✅ All README updates done
-- ✅ All badges and links working
-
-### Professionalism
-- ✅ Consistent formatting throughout
-- ✅ Clear table of contents
-- ✅ Proper markdown structure
-- ✅ Professional tone
-- ✅ Comprehensive coverage
-
-### Usability
-- ✅ Multiple entry points
-- ✅ Clear navigation
-- ✅ Helpful cross-references
-- ✅ Troubleshooting included
-- ✅ FAQ comprehensive
-
----
-
-## What's Next
-
-### Immediate (Already Planned)
-1. Testing all links work correctly
-2. Review formatting consistency
-3. Test SQL scripts
-4. Gather initial feedback
-
-### Short-term (Roadmap Q2 2026)
-1. Convert HTML labs to Markdown
-2. Add video tutorials
-3. Create interactive demos
-4. Build assessment rubrics
-
-### Long-term (Roadmap 2026-2027)
-1. Interactive SQL playground
-2. Auto-grading system
-3. Certification program
-4. Multi-language support
-
----
-
-## Impact Assessment
-
-### Expected Outcomes
-- **Adoption**: Easier for institutions to adopt
-- **Contributions**: Clear guidelines will increase contributions
-- **Learning**: Better structure improves learning outcomes
-- **Community**: Professional appearance attracts community
-- **Growth**: Scalable structure supports future growth
-
-### Measurable Goals
-- GitHub stars: Target 10,000+ (from ~500)
-- Active users: Target 50,000+/month
-- Course completions: Target 5,000+/year
-- Contributors: Target 100+
-- Institutions using: Target 500+
-
----
-
-## Branch Status
-
-### s26 Branch
-- **Status**: ✅ Complete and production-ready
-- **Commits**: 4 major commits
-- **Changes**: 59 files added/modified
-- **Ready for**: Merge to main branch
-
-### Backward Compatibility
-- ✅ All original files preserved
-- ✅ Original structure intact
-- ✅ New structure adds, doesn't replace
-- ✅ Links updated but old links still work (files exist in both places)
-
----
-
-## Acknowledgments
-
-### Project Team
-- **TeachingOW** - Project lead and content creator
-- **khalefa-ow** - Co-maintainer and technical guidance
-- **GitHub Copilot** - Assisted with documentation and organization
-
-### Tools Used
-- Git/GitHub - Version control and collaboration
-- Markdown - Documentation format
-- VS Code - Development environment
-- Tree command - Directory visualization
-
----
-
-## Conclusion
-
-The **s26 branch** successfully completes the mission to "revise the files and labs add more contents and organize the materials better." The repository has been transformed from a collection of lab files into a comprehensive, professional educational platform with:
-
-- ✅ **103,000+ characters** of new professional documentation
-- ✅ **11 major documents** covering all aspects of learning and contribution
-- ✅ **Complete reorganization** with logical directory structure
-- ✅ **Multiple entry points** for different user types
-- ✅ **Professional standards** throughout
-- ✅ **Future-ready structure** for growth and scaling
-
-The s26 branch is **complete, tested, and ready for production use**.
-
----
-
-**Version**: 2.0.0
-**Branch**: s26
-**Date**: February 7, 2026
-**Status**: ✅ COMPLETE
-
----
-
-## Sign-Off
-
-This project completion report certifies that all planned work for the s26 branch has been successfully completed and is ready for merge to the main branch.
-
-**Documentation**: ✅ Complete
-**Organization**: ✅ Complete
-**Quality**: ✅ Verified
-**Status**: ✅ Production Ready
-
----
-
-*For detailed changes, see [CHANGELOG.md](CHANGELOG.md)*
-*For usage instructions, see [S26_SUMMARY.md](S26_SUMMARY.md)*
-*For all documentation, see [/docs](docs/) directory*
diff --git a/Readme.md b/Readme.md
index d8f589a..82aa5a1 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,208 +1,70 @@
-# Database Management System (DBMS) SQL Labs
+# SQL Quick Start Guide - Learn SQL Fast
[](https://github.com/TeachingOW/DBMS-SQL-Labs)
[](LICENSE)
-[](docs/CONTRIBUTING.md)
-A comprehensive collection of hands-on SQL laboratories designed to teach database concepts from basic queries to advanced database management techniques. These labs provide practical experience with SQL, database design, and modern database technologies.
+A streamlined, beginner-friendly SQL learning resource. Master SQL fundamentals in just 3-4 hours with practical, hands-on examples.
-## 📋 Quick Links
+## 🎯 What You'll Learn
-- 🚀 **[Getting Started Guide](docs/GETTING_STARTED.md)** - Setup instructions and prerequisites
-- 📚 **[Complete Lab Index](LAB_INDEX.md)** - Detailed list of all labs with descriptions
-- 📖 **[Course Syllabus](docs/COURSE_SYLLABUS.md)** - 16-week structured curriculum
-- 📝 **[SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md)** - Quick reference for SQL commands
-- 🤝 **[Contributing Guide](docs/CONTRIBUTING.md)** - How to contribute to this project
-- 🌐 **[Project Website](https://teachingow.github.io/DBMS-SQL-Labs/)** - Additional resources
+This guide covers all essential SQL concepts in a concise, easy-to-follow format:
+- Create Tables
+- Single Table Queries
+- DISTINCT and ORDER BY
+- Foreign Keys
+- Multi-Table JOINs
+- Aggregate Functions
+- GROUP BY and HAVING
+- Set Operations
-## 🎯 Learning Objectives
+**Estimated Time:** 3-4 hours
+**Prerequisites:** MySQL or MariaDB installed
-By completing these labs, students will:
-- Master fundamental SQL operations (SELECT, INSERT, UPDATE, DELETE)
-- Understand database design principles and normalization
-- Learn advanced SQL concepts (joins, subqueries, window functions)
-- Gain experience with database programming and interfaces
-- Explore modern database technologies (NoSQL, Graph databases)
-- Understand transaction management and concurrency control
+## 📚 Getting Started
-## 📚 Lab Structure
+### Quick Start
+Jump straight into the guide: **[SQL Quick Start Guide](SQL_Quick_Start_Guide.md)** ⭐
-### Foundational Labs (SQL Basics)
+### HTML Version
+Prefer web format? Check out the **[HTML Version](labs/html_labs/SQL_Quick_Start_Guide.html)**
-| Lab | Topic | Description | Resource |
-|-----|-------|-------------|----------|
-| 1 | Database Creation & Basic Queries | Learn to create databases, tables, and perform simple SELECT operations | [Lab 1](labs/html_labs/InClassExercises.html) |
-| 2 | JOINs and Multi-Table Queries | Master multi-table queries, INNER/LEFT/RIGHT joins | [Lab 2](labs/html_labs/Lab2_Part1_Joins.html) |
-| 3 | Aggregate Functions & GROUP BY | Learn COUNT, SUM, AVG, GROUP BY, and HAVING clauses | [Lab 3](labs/html_labs/Lab2_Part2_Aggregates.html) |
-| 4 | Set Operations & Advanced Queries | Master UNION, division, and complex nested queries | [Lab 4](labs/html_labs/Lab2_Part3_SetOperations.html) |
-| 5 | Foreign Keys & Relationships | Understand referential integrity and table relationships | [Lab 5](labs/html_labs/Foreign_Keys.html) |
-| 6 | Multi-Table Operations | Practice complex joins and relationship queries | [Lab 6](labs/html_labs/Multi_Tables.html) |
+## 💡 Why This Guide?
-### Intermediate Labs (Advanced SQL)
+- ✅ **Fast**: Learn SQL in just 3-4 hours
+- ✅ **Practical**: Real examples you can run immediately
+- ✅ **Simple**: No information overload - just what you need
+- ✅ **Hands-on**: Practice exercises after each topic
+- ✅ **Reference**: Quick syntax reference included
-| Lab | Topic | Description | Resource |
-|-----|-------|-------------|----------|
-| 7 | CASE Expressions | Master conditional logic in SQL with CASE statements | [Lab 7](Lab_Case_Expression.md) ⭐ |
-| 8 | Window Functions & Recursive Query | Learn advanced analytical functions and partitioning | [Lab 8](labs/html_labs/Lab4.html) |
-| 9 | Views & Virtual Tables | Create and manage database views for data abstraction | [Lab 9](labs/html_labs/Lab5_views.html) |
+## 📖 Topics Covered
-### Database Design Labs
+1. **Create Tables** - Database and table creation
+2. **Single Table Query** - SELECT with WHERE and filtering
+3. **DISTINCT** - Removing duplicates
+4. **ORDER BY** - Sorting results
+5. **Foreign Key** - Linking tables
+6. **Multi Table** - JOINs
+7. **Aggregate Functions** - COUNT, SUM, AVG, MAX, MIN
+8. **GROUP BY** - Grouping data
+9. **HAVING** - Filtering groups
+10. **Set Operations** - UNION
-| Lab | Topic | Description | Resource |
-|-----|-------|-------------|----------|
-| 10 | Database Normalization | Learn 1NF, 2NF, 3NF and database design principles | [Lab 10](labs/html_labs/Lab3_Normal_forms.html) |
-| 11 | Advanced SQL Techniques | Practice complex queries and optimization | [Lab 11](labs/html_labs/Lab4_sql.html) |
+## 🚀 Getting Started
-### Programming Integration Labs
+1. Install MySQL or MariaDB
+2. Open [SQL Quick Start Guide](SQL_Quick_Start_Guide.md)
+3. Follow along with the examples
+4. Complete practice exercises
+5. Start building your own databases!
-| Lab | Topic | Description | Resource |
-|-----|-------|-------------|----------|
-| 12 | Java Database Interface | Connect Java applications to databases | [Lab 12](labs/html_labs/lab_java_3.html) |
-| 13 | Python Database Interface | Connect Python applications to databases using connectors | [Lab 13](labs/html_labs/Lab_Python.html) |
-| 14 | Jupyter Notebook Integration | Interactive database analysis with Jupyter notebooks | [Lab 14](https://nbviewer.org/github/teachingow/DBMS-SQL-Labs/blob/main/inclass/Mysql-Jupyter.ipynb)|
+## 📝 Quick Reference
-### Advanced Database Concepts
-
-| Lab | Topic | Description | Resource |
-|-----|-------|-------------|----------|
-| 15 | Analytical Functions | Master ROLLUP, CUBE, and advanced grouping operations | [Lab 15](https://nbviewer.org/github/teachingow/DBMS-SQL-Labs/blob/main/inclass/Rollup.ipynb) |
-| 16 | Triggers & Stored Procedures | Implement database automation and business logic | [Lab 16](labs/html_labs/Triggers.html) |
-| 17 | Transaction Management | Understand ACID properties and concurrency control | [Lab 17](labs/html_labs/Transactions.html) |
-| 18 | Isolation Levels | Learn about database isolation and consistency | [Lab 18](labs/html_labs/Isolation_Levels.html) |
-
-### Modern Database Technologies
-
-| Lab | Topic | Description | Resource |
-|-----|-------|-------------|----------|
-| 19 | JSON & XML Processing | Handle semi-structured data in relational databases | [Lab 19](labs/html_labs/Lab_JSON-XML.html) |
-| 20 | MongoDB (NoSQL) | Introduction to document-based databases | [Lab 20](labs/html_labs/Lab10_mongoDB.html) |
-| 21 | Neo4j (Graph Database) | Explore graph database concepts and Cypher queries | [Lab 21](labs/html_labs/Lab11_neo4j.html) |
-
-## 🗃️ Data Sets
-
-The repository includes several real-world datasets for hands-on practice:
-
-| Dataset | Description | Use Cases |
-|---------|-------------|-----------|
-| [IMDB Movie Data](data/IMDB-Movie-Data.csv) | Movie information including ratings, genres, and revenue | Complex queries, aggregations, data analysis |
-| [Air Travel Data](data/airtravel.csv) | Flight and passenger information | Time-series analysis, grouping operations |
-| [Cities Data](data/cities.csv) | Geographic and demographic information | Joins, geographic queries |
-| [Employee Data](data/employees.csv) | HR database with employee information | Relationship modeling, hierarchical queries |
-| [Student Grades](data/grades.csv) | Academic performance data | Statistical analysis, ranking functions |
-| [Drivers Database](data/drivers.sql) | Complete database schema with sample data | Full database operations, complex relationships |
-
-
-## Quick Reference
-
-- 📝 **[SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md)** - Comprehensive SQL commands reference
-- 🔗 [MySQL Cheat Sheet (External)](https://gemini.google.com/share/d3fa0a47a9d0)
-
-## 🛠️ Tools and Technologies
-
-### Database Systems
-- **MySQL/MariaDB**: Primary database system for most labs
-- **MongoDB**: NoSQL document database (Lab 18)
-- **Neo4j**: Graph database system (Lab 19)
-
-### Programming Languages
-- **SQL**: Standard query language for relational databases
-- **Python**: Database connectivity and data analysis
-- **Cypher**: Query language for Neo4j graph database
-
-### Development Environment
-- **Jupyter Notebooks**: Interactive data analysis and visualization
-- **Command Line Tools**: Direct database interaction
-- **Database Clients**: GUI tools for database management
-
-## 📖 Additional Learning Resources
-
-### Interactive Tutorials
-- [SQLZoo](https://sqlzoo.net/wiki/SQL_Tutorial) - Interactive SQL tutorial with exercises
-- [W3Schools SQL Tutorial](https://www.w3schools.com/sql/) - Comprehensive SQL reference
-- [MySQL Tutorial](https://dev.mysql.com/doc/mysql-tutorial-excerpt/8.0/en/) - Official MySQL documentation
-
-### Advanced Topics
-- [Database Design Principles](https://www.lucidchart.com/pages/database-diagram/database-design) - ER modeling and normalization
-- [SQL Performance Tuning](https://use-the-index-luke.com/) - Query optimization techniques
-- [NoSQL Databases](https://www.mongodb.com/nosql-explained) - Understanding document and graph databases
-
-### Practice Platforms
-- [DataLemur](https://datalemur.com/)
-- [HackerRank SQL](https://www.hackerrank.com/domains/sql) - SQL coding challenges
-- [LeetCode Database](https://leetcode.com/problemset/database/) - Database problem solving
-- [SQLBolt](https://sqlbolt.com/) - Interactive SQL lessons
+- 📝 **[SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md)** - SQL commands reference
## 🤝 Contributing
-We welcome contributions to improve these labs! Please read our **[Contributing Guide](docs/CONTRIBUTING.md)** for detailed information.
-
-**Quick Start:**
-1. Fork the repository
-2. Create a feature branch
-3. Make your improvements
-4. Submit a pull request
-
-### Areas for Contribution
-- Additional practice exercises
-- New dataset examples
-- Improved explanations and documentation
-- Bug fixes and corrections
-
-
-
-
-## 🌐 Project Website
-
-Visit the project website at [https://teachingow.github.io/DBMS-SQL-Labs/](https://teachingow.github.io/DBMS-SQL-Labs/) for additional resources and updates.
-
----
-
-## 📚 Documentation
-
-This repository now includes comprehensive documentation to help you learn effectively:
-
-### For Students
-- **[Getting Started Guide](docs/GETTING_STARTED.md)** - Complete setup instructions, prerequisites, and troubleshooting
-- **[Lab Index](LAB_INDEX.md)** - Detailed catalog of all labs with learning objectives and prerequisites
-- **[SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md)** - Quick reference for all SQL commands and syntax
-- **[Course Syllabus](docs/COURSE_SYLLABUS.md)** - 16-week structured curriculum with weekly topics
-
-### For Instructors
-- **[Course Syllabus](docs/COURSE_SYLLABUS.md)** - Complete course structure with grading policy
-- **Weekly schedule** with topics, labs, and assessments
-- **Project ideas** and deliverables
-
-### For Contributors
-- **[Contributing Guide](docs/CONTRIBUTING.md)** - Guidelines for contributing code, content, and documentation
-- Code style guidelines
-- Pull request process
-
----
-
-## 🎓 How to Use This Repository
-
-### For Complete Beginners
-1. Start with the [Getting Started Guide](docs/GETTING_STARTED.md)
-2. Set up your MySQL environment
-3. Begin with Lab 1 and progress sequentially
-4. Complete the in-class exercise after Lab 1
-5. Use the [SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md) as reference
-
-### For Self-Paced Learning
-1. Review the [Lab Index](LAB_INDEX.md) to understand all available labs
-2. Choose a learning path that matches your goals
-3. Work through labs at your own pace
-4. Practice with the provided datasets in `/data` directory
-
-### For Instructors
-1. Review the [Course Syllabus](docs/COURSE_SYLLABUS.md)
-2. Adapt the 16-week schedule to your needs
-3. Use the labs sequentially or mix-and-match
-4. Assign projects from the syllabus
-5. Encourage students to contribute back via [Contributing Guide](docs/CONTRIBUTING.md)
-
----
+Found an issue or want to improve the guide? Feel free to open an issue or submit a pull request!
-## 🌐 Project Website
+## 📄 License
-Visit the project website at [https://teachingow.github.io/DBMS-SQL-Labs/](https://teachingow.github.io/DBMS-SQL-Labs/) for additional resources and updates.
+This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
diff --git a/S26_SUMMARY.md b/S26_SUMMARY.md
deleted file mode 100644
index 0ecee5b..0000000
--- a/S26_SUMMARY.md
+++ /dev/null
@@ -1,293 +0,0 @@
-# S26 Branch - Major Repository Revision Summary
-
-## Overview
-
-The **s26 branch** represents a major revision and reorganization of the DBMS-SQL-Labs repository. This update transforms the repository from a collection of lab files into a comprehensive, well-documented, and professionally organized educational resource.
-
-## What's New in S26?
-
-### 🎉 Major Additions
-
-#### 1. Comprehensive Documentation Suite (10 New Documents)
-
-| Document | Size | Purpose |
-|----------|------|---------|
-| **Getting Started Guide** | 8,617 chars | Complete setup instructions, troubleshooting, and prerequisites |
-| **Course Syllabus** | 11,326 chars | 16-week curriculum with weekly schedule and assessments |
-| **SQL Cheat Sheet** | 14,359 chars | Complete reference for all SQL commands and syntax |
-| **Contributing Guide** | 11,337 chars | Guidelines for contributors with code style standards |
-| **Lab Index** | 12,066 chars | Complete catalog of all 21 labs with descriptions |
-| **Practice Exercises** | 9,457 chars | Additional exercises by topic and difficulty |
-| **Project Roadmap** | 7,613 chars | Short, medium, and long-term project goals |
-| **Changelog** | 5,995 chars | Version history and notable changes |
-| **Contributors** | 4,023 chars | Recognition of all contributors |
-| **FAQ** | 8,711 chars | Answers to frequently asked questions |
-
-**Total: ~93,500 characters of new documentation**
-
-#### 2. Reorganized Directory Structure
-
-```
-DBMS-SQL-Labs/
-├── docs/ # NEW - All documentation
-│ ├── GETTING_STARTED.md
-│ ├── COURSE_SYLLABUS.md
-│ ├── SQL_CHEAT_SHEET.md
-│ ├── CONTRIBUTING.md
-│ ├── FAQ.md
-│ └── ROADMAP.md
-│
-├── labs/ # NEW - Organized labs
-│ ├── html_labs/ # All HTML lab files
-│ ├── notebooks/ # Jupyter notebooks
-│ └── code/ # Programming examples
-│
-├── exercises/ # NEW - Practice problems
-│ └── PRACTICE_EXERCISES.md
-│
-├── solutions/ # NEW - For future solutions
-├── supplementary/ # NEW - Additional materials
-│
-├── LAB_INDEX.md # NEW - Complete lab catalog
-├── CHANGELOG.md # NEW - Version history
-├── CONTRIBUTORS.md # NEW - Contributor recognition
-└── Readme.md # UPDATED - Enhanced with quick links
-```
-
-#### 3. Enhanced Main README
-
-- Added badges (stars, license, PRs welcome)
-- Quick links section at the top
-- Better organization and structure
-- Cross-references to all new documentation
-- "How to Use This Repository" section
-- Improved navigation
-
-#### 4. Improved .gitignore
-
-Added exclusions for:
-- Mac OS files (.DS_Store)
-- Python cache files
-- Node modules
-- IDE files (.vscode, .idea)
-- Credentials and secrets
-- Build artifacts
-- Temporary files
-
-### 📚 Key Features of New Documentation
-
-#### Getting Started Guide
-- Installation instructions for MySQL, Python, Java, Node.js, MongoDB, Neo4j
-- Troubleshooting section with common issues and solutions
-- Quick start guides for different skill levels (Beginner, Intermediate, Advanced)
-- Testing instructions to verify setup
-
-#### Course Syllabus
-- Complete 16-week curriculum
-- 5 modules covering all topics
-- Weekly schedule with topics, labs, and assignments
-- Grading policy and assessment criteria
-- Project ideas and deliverables
-- Course policies and expectations
-
-#### SQL Cheat Sheet
-- Comprehensive reference organized by topic
-- Database operations (CREATE, DROP, USE)
-- Table operations (CREATE, ALTER, DROP)
-- Data manipulation (INSERT, UPDATE, DELETE)
-- Querying (SELECT, WHERE, JOIN, etc.)
-- Aggregate functions and GROUP BY
-- Subqueries and CTEs
-- Window functions
-- Transactions and indexes
-- Views, stored procedures, and triggers
-- Performance tips and best practices
-
-#### Lab Index
-- Detailed descriptions of all 21 labs
-- Learning objectives for each lab
-- Prerequisites clearly stated
-- Duration estimates
-- Difficulty levels (🟢 Beginner, 🟡 Intermediate, 🟠 Advanced, 🔴 Expert)
-- Multiple learning paths for different goals
-- Search by topic feature
-
-#### Contributing Guide
-- How to report bugs
-- How to suggest enhancements
-- Code style guidelines for SQL, Python, and Java
-- Commit message conventions
-- Pull request process
-- Recognition system
-
-#### Practice Exercises
-- Additional exercises beyond the labs
-- Organized by topic (Basic SQL, Joins, Aggregates, etc.)
-- Challenge problems for advanced learners
-- Difficulty ratings
-- Links to external practice platforms
-
-#### FAQ
-- Answers to 40+ common questions
-- Organized by category (General, Getting Started, Technical Issues, etc.)
-- Troubleshooting tips
-- Links to relevant documentation
-
-#### Project Roadmap
-- Vision for the project
-- Current status
-- Short-term goals (3 months)
-- Medium-term goals (3-6 months)
-- Long-term goals (6-12 months)
-- Future considerations (1-2 years)
-- Success metrics
-- How to contribute to roadmap
-
-### 🔄 Migration from Old to New Structure
-
-The s26 branch maintains backward compatibility while adding new organization:
-
-| Old Location | New Location | Status |
-|--------------|--------------|--------|
-| `/html_labs/*.html` | `/labs/html_labs/*.html` | Copied (originals preserved) |
-| `/inclass/*.ipynb` | `/labs/notebooks/*.ipynb` | Copied (originals preserved) |
-| `/code/*` | `/labs/code/*` | Copied (originals preserved) |
-| Root level docs | `/docs/` | New organization |
-
-**Note**: Original files are preserved for backward compatibility. Links in README updated to new locations.
-
-### 🎯 Benefits of S26 Changes
-
-#### For Students
-- ✅ Clear getting started instructions
-- ✅ Comprehensive learning paths
-- ✅ Quick reference materials
-- ✅ Troubleshooting help
-- ✅ FAQ for common questions
-- ✅ Additional practice exercises
-
-#### For Instructors
-- ✅ Complete 16-week curriculum
-- ✅ Weekly schedule ready to use
-- ✅ Assessment guidelines
-- ✅ Project ideas
-- ✅ Grading policies
-- ✅ Structured content
-
-#### For Contributors
-- ✅ Clear contributing guidelines
-- ✅ Code style standards
-- ✅ Pull request process
-- ✅ Recognition system
-- ✅ Roadmap for future work
-
-#### For the Project
-- ✅ Professional appearance
-- ✅ Better discoverability
-- ✅ Easier maintenance
-- ✅ Scalable structure
-- ✅ Community-ready
-- ✅ Version tracking
-
-### 📈 Metrics
-
-**Documentation Growth:**
-- Files added: 10 major documents + reorganization
-- Total new content: ~93,500 characters
-- Documentation coverage: Increased from ~20% to ~95%
-
-**Organization Improvements:**
-- New directories: 4 (docs/, labs/, exercises/, solutions/)
-- Reorganized files: 50+ HTML labs, notebooks, and code examples
-- Updated references: All links in README
-
-**User Experience:**
-- Navigation improved: Quick links, cross-references
-- Accessibility: Multiple entry points (by skill level, topic, etc.)
-- Support: Troubleshooting, FAQ, contributing guides
-
-### 🚀 What This Means
-
-The s26 branch transforms DBMS-SQL-Labs from a **collection of labs** into a **complete educational platform** with:
-
-1. **Professional Documentation** - Industry-standard docs that rival commercial courses
-2. **Better Organization** - Clear structure makes content easy to find
-3. **Learning Support** - Multiple resources help students at every level
-4. **Community Ready** - Clear guidelines encourage contributions
-5. **Instructor Friendly** - Complete curriculum ready to use in classes
-6. **Future Proof** - Scalable structure supports future growth
-
-### 📋 Checklist of Changes
-
-- [x] Create comprehensive Getting Started guide
-- [x] Create 16-week course syllabus
-- [x] Create SQL cheat sheet reference
-- [x] Create contributing guidelines
-- [x] Create complete lab index
-- [x] Add practice exercises
-- [x] Create project roadmap
-- [x] Create changelog
-- [x] Create contributors file
-- [x] Create FAQ
-- [x] Reorganize directory structure
-- [x] Update main README
-- [x] Improve .gitignore
-- [x] Add cross-references throughout
-- [x] Create learning paths
-
-### 🎓 How to Use S26 Branch
-
-#### For New Users
-1. Start with [Getting Started Guide](docs/GETTING_STARTED.md)
-2. Review [Lab Index](LAB_INDEX.md) to understand what's available
-3. Follow the beginner learning path
-4. Reference [SQL Cheat Sheet](docs/SQL_CHEAT_SHEET.md) as needed
-5. Check [FAQ](docs/FAQ.md) for common questions
-
-#### For Instructors
-1. Review [Course Syllabus](docs/COURSE_SYLLABUS.md)
-2. Adapt the 16-week schedule to your needs
-3. Use labs sequentially or customize
-4. Assign projects from syllabus
-5. Encourage students to contribute
-
-#### For Contributors
-1. Read [Contributing Guide](docs/CONTRIBUTING.md)
-2. Check [Roadmap](docs/ROADMAP.md) for planned work
-3. Pick an area to contribute
-4. Submit pull request
-5. Get recognized in [Contributors](CONTRIBUTORS.md)
-
-### 🔮 What's Next?
-
-See the [Roadmap](docs/ROADMAP.md) for future plans:
-- Convert HTML labs to Markdown
-- Add video tutorials
-- Create interactive SQL playground
-- Implement auto-grading
-- Multi-language support
-- Certification program
-
-### 📞 Questions?
-
-- See [FAQ](docs/FAQ.md)
-- Check [Contributing Guide](docs/CONTRIBUTING.md)
-- Open an issue on GitHub
-- Review other documentation in `/docs`
-
----
-
-## Conclusion
-
-The **s26 branch** represents a complete transformation of DBMS-SQL-Labs into a professional, comprehensive, and well-documented educational resource. With nearly 100,000 characters of new documentation, reorganized structure, and enhanced user experience, this update positions the project for significant growth and impact in the database education community.
-
-**Version**: 2.0.0
-**Branch**: s26
-**Release Date**: February 7, 2026
-**Status**: ✅ Complete and Ready for Use
-
----
-
-*For detailed changes, see [CHANGELOG.md](CHANGELOG.md)*
-*For the main README, see [Readme.md](Readme.md)*
-*For all documentation, see [/docs](docs/)*
diff --git a/SQL_Quick_Start_Guide.md b/SQL_Quick_Start_Guide.md
new file mode 100644
index 0000000..0113c2f
--- /dev/null
+++ b/SQL_Quick_Start_Guide.md
@@ -0,0 +1,568 @@
+# SQL Quick Start Guide
+
+> **A straightforward, beginner-friendly introduction to SQL fundamentals**
+
+## 🎯 What You'll Learn
+
+This guide covers 10 essential SQL topics in order. Each section is concise with practical examples you can run immediately.
+
+**Estimated Time:** 3-4 hours
+
+**Prerequisites:** MySQL or MariaDB installed
+
+---
+
+## 📋 Table of Contents
+
+1. [Create Tables](#1-create-tables)
+2. [Single Table Query](#2-single-table-query)
+3. [DISTINCT](#3-distinct)
+4. [ORDER BY](#4-order-by)
+5. [Foreign Key](#5-foreign-key)
+6. [Multi Table](#6-multi-table)
+7. [Aggregate Functions](#7-aggregate-functions)
+8. [GROUP BY](#8-group-by)
+9. [HAVING](#9-having)
+10. [Set Operations](#10-set-operations)
+11. [Subqueries and Nested Queries](#11-subqueries-and-nested-queries)
+
+---
+
+## 1. Create Tables
+
+### Setup Database
+
+```sql
+CREATE DATABASE store;
+USE store;
+```
+
+### Create Your First Table
+
+```sql
+CREATE TABLE products (
+ id INT PRIMARY KEY,
+ name VARCHAR(50),
+ price DECIMAL(10,2),
+ category VARCHAR(30)
+);
+```
+
+**Key Points:**
+- `PRIMARY KEY`: Unique identifier
+- `VARCHAR(n)`: Text up to n characters
+- `DECIMAL(10,2)`: Numbers with 2 decimal places
+
+### Add Data
+
+```sql
+INSERT INTO products VALUES
+(1, 'Laptop', 999.99, 'Electronics'),
+(2, 'Mouse', 25.50, 'Electronics'),
+(3, 'Desk', 299.99, 'Furniture'),
+(4, 'Chair', 199.99, 'Furniture'),
+(5, 'Monitor', 349.99, 'Electronics');
+```
+
+### ✏️ Practice
+Create a `customers` table with: id, name, email, city.
+
+---
+
+## 2. Single Table Query
+
+### Select All Data
+
+```sql
+SELECT * FROM products;
+```
+
+### Select Specific Columns
+
+```sql
+SELECT name, price FROM products;
+```
+
+### Filter with WHERE
+
+```sql
+-- Products under $300
+SELECT * FROM products WHERE price < 300;
+
+-- Products in Electronics category
+SELECT * FROM products WHERE category = 'Electronics';
+
+-- Multiple conditions with AND
+SELECT * FROM products
+WHERE category = 'Electronics' AND price < 500;
+
+-- Multiple conditions with OR
+SELECT * FROM products
+WHERE category = 'Electronics' OR category = 'Furniture';
+```
+
+### Pattern Matching with LIKE
+
+```sql
+-- Products starting with 'M'
+SELECT * FROM products WHERE name LIKE 'M%';
+
+-- Products containing 'top'
+SELECT * FROM products WHERE name LIKE '%top%';
+```
+
+### ✏️ Practice
+Find all furniture items priced between $100 and $300.
+
+---
+
+## 3. DISTINCT
+
+### Get Unique Values
+
+```sql
+-- List all unique categories
+SELECT DISTINCT category FROM products;
+
+-- Count unique categories
+SELECT COUNT(DISTINCT category) FROM products;
+```
+
+**When to use:** Eliminate duplicate rows from results.
+
+### ✏️ Practice
+Find all unique price values in the products table.
+
+---
+
+## 4. ORDER BY
+
+### Sort Results
+
+```sql
+-- Sort by price (ascending)
+SELECT * FROM products ORDER BY price;
+
+-- Sort by price (descending)
+SELECT * FROM products ORDER BY price DESC;
+
+-- Sort by multiple columns
+SELECT * FROM products ORDER BY category, price DESC;
+```
+
+**Tips:**
+- `ASC` = ascending (default)
+- `DESC` = descending
+- Can sort by multiple columns
+
+### ✏️ Practice
+List all products sorted by category (A-Z) and then by price (high to low).
+
+---
+
+## 5. Foreign Key
+
+### Why Foreign Keys?
+Foreign keys link tables together and ensure data integrity.
+
+### Create Related Tables
+
+```sql
+-- Suppliers table (parent)
+CREATE TABLE suppliers (
+ id INT PRIMARY KEY,
+ name VARCHAR(50),
+ country VARCHAR(30)
+);
+
+-- Products with foreign key (child)
+CREATE TABLE products_fk (
+ id INT PRIMARY KEY,
+ name VARCHAR(50),
+ price DECIMAL(10,2),
+ supplier_id INT,
+ FOREIGN KEY (supplier_id) REFERENCES suppliers(id)
+);
+```
+
+### Add Data
+
+```sql
+-- Add suppliers first
+INSERT INTO suppliers VALUES
+(1, 'TechCorp', 'USA'),
+(2, 'FurnitureCo', 'Canada');
+
+-- Add products that reference suppliers
+INSERT INTO products_fk VALUES
+(1, 'Laptop', 999.99, 1),
+(2, 'Desk', 299.99, 2);
+```
+
+**Important:** You must insert parent records (suppliers) before child records (products).
+
+### ✏️ Practice
+Try inserting a product with a supplier_id that doesn't exist. What happens?
+
+---
+
+## 6. Multi Table
+
+### JOIN Tables
+
+```sql
+-- Show products with their supplier information
+SELECT
+ p.name AS product_name,
+ p.price,
+ s.name AS supplier_name,
+ s.country
+FROM products_fk p
+INNER JOIN suppliers s ON p.supplier_id = s.id;
+```
+
+### Types of JOINs
+
+**INNER JOIN** - Only matching rows
+```sql
+SELECT p.name, s.name
+FROM products_fk p
+INNER JOIN suppliers s ON p.supplier_id = s.id;
+```
+
+**LEFT JOIN** - All from left table, matching from right
+```sql
+SELECT p.name, s.name
+FROM products_fk p
+LEFT JOIN suppliers s ON p.supplier_id = s.id;
+```
+
+**Tip:** Start with INNER JOIN. It's the most common.
+
+### ✏️ Practice
+Join customers and orders tables (create these tables first).
+
+---
+
+## 7. Aggregate Functions
+
+### Common Functions
+
+```sql
+-- Count all products
+SELECT COUNT(*) FROM products;
+
+-- Sum of all prices
+SELECT SUM(price) FROM products;
+
+-- Average price
+SELECT AVG(price) FROM products;
+
+-- Highest price
+SELECT MAX(price) FROM products;
+
+-- Lowest price
+SELECT MIN(price) FROM products;
+```
+
+### All in One Query
+
+```sql
+SELECT
+ COUNT(*) AS total_products,
+ SUM(price) AS total_value,
+ AVG(price) AS average_price,
+ MAX(price) AS highest_price,
+ MIN(price) AS lowest_price
+FROM products;
+```
+
+### ✏️ Practice
+Calculate the total value of all electronics products.
+
+---
+
+## 8. GROUP BY
+
+### Group Data
+
+```sql
+-- Count products by category
+SELECT category, COUNT(*) AS count
+FROM products
+GROUP BY category;
+
+-- Average price by category
+SELECT category, AVG(price) AS avg_price
+FROM products
+GROUP BY category;
+
+-- Multiple aggregations
+SELECT
+ category,
+ COUNT(*) AS count,
+ AVG(price) AS avg_price,
+ MAX(price) AS max_price
+FROM products
+GROUP BY category;
+```
+
+**Rule:** Every column in SELECT must be either in GROUP BY or an aggregate function.
+
+### ✏️ Practice
+Find the total value of products in each category.
+
+---
+
+## 9. HAVING
+
+### Filter Grouped Results
+
+**WHERE** filters rows before grouping
+**HAVING** filters groups after aggregation
+
+```sql
+-- Categories with more than 2 products
+SELECT category, COUNT(*) AS count
+FROM products
+GROUP BY category
+HAVING COUNT(*) > 2;
+
+-- Categories with average price over $300
+SELECT category, AVG(price) AS avg_price
+FROM products
+GROUP BY category
+HAVING AVG(price) > 300;
+```
+
+### Combined Example
+
+```sql
+-- Electronics products, grouped by category,
+-- only show groups with avg price > $100
+SELECT category, AVG(price) AS avg_price
+FROM products
+WHERE category = 'Electronics'
+GROUP BY category
+HAVING AVG(price) > 100;
+```
+
+### ✏️ Practice
+Find categories that have at least 1 product and average price under $250.
+
+---
+
+## 10. Set Operations
+
+### UNION - Combine Results
+
+```sql
+-- Combine two queries
+SELECT name FROM products WHERE category = 'Electronics'
+UNION
+SELECT name FROM products WHERE price > 500;
+```
+
+**UNION** removes duplicates
+**UNION ALL** keeps duplicates
+
+```sql
+-- Keep all rows including duplicates
+SELECT category FROM products WHERE price < 300
+UNION ALL
+SELECT category FROM products WHERE price > 200;
+```
+
+**Rules:**
+- Same number of columns in each SELECT
+- Compatible data types
+- Column names from first SELECT are used
+
+### ✏️ Practice
+Combine a list of product names under $100 with product names in the Furniture category.
+
+---
+
+## 11. Subqueries and Nested Queries
+
+### What are Subqueries?
+
+A subquery (or nested query) is a query inside another query. Subqueries can be used in WHERE, FROM, or HAVING clauses.
+
+### Basic Subquery
+
+```sql
+-- Find products more expensive than the average price
+SELECT name, price
+FROM products
+WHERE price > (SELECT AVG(price) FROM products);
+```
+
+### IN Operator with Subquery
+
+**IN** checks if a value exists in a list or result set.
+
+```sql
+-- Find products in Electronics or Furniture categories
+SELECT * FROM products
+WHERE category IN ('Electronics', 'Furniture');
+
+-- Using subquery: Find products from USA suppliers
+SELECT * FROM products
+WHERE supplier_id IN (
+ SELECT id FROM suppliers WHERE country = 'USA'
+);
+```
+
+### NOT IN Operator
+
+**NOT IN** finds values that are NOT in a list or result set.
+
+```sql
+-- Find products NOT from USA suppliers
+SELECT * FROM products
+WHERE supplier_id NOT IN (
+ SELECT id FROM suppliers WHERE country = 'USA'
+);
+
+-- Find products that haven't been ordered
+-- (assuming we have an orders table)
+SELECT name FROM products
+WHERE id NOT IN (SELECT DISTINCT product_id FROM orders);
+```
+
+### EXISTS Operator
+
+**EXISTS** checks if a subquery returns any rows (returns TRUE/FALSE).
+
+```sql
+-- Find suppliers that have at least one product
+SELECT name FROM suppliers s
+WHERE EXISTS (
+ SELECT 1 FROM products p
+ WHERE p.supplier_id = s.id
+);
+
+-- Find categories that have expensive products (over $500)
+SELECT DISTINCT category FROM products p1
+WHERE EXISTS (
+ SELECT 1 FROM products p2
+ WHERE p2.category = p1.category AND p2.price > 500
+);
+```
+
+### NOT EXISTS Operator
+
+**NOT EXISTS** checks if a subquery returns no rows.
+
+```sql
+-- Find suppliers with NO products listed
+SELECT name FROM suppliers s
+WHERE NOT EXISTS (
+ SELECT 1 FROM products p
+ WHERE p.supplier_id = s.id
+);
+```
+
+### Complex Nested Query Example
+
+```sql
+-- Find products made by suppliers who also make laptops
+SELECT name, price FROM products
+WHERE supplier_id IN (
+ SELECT supplier_id FROM products
+ WHERE name = 'Laptop'
+)
+AND name != 'Laptop';
+```
+
+### When to Use Each
+
+- **IN/NOT IN**: When comparing against a list of values
+- **EXISTS/NOT EXISTS**: When checking for existence (often faster for large datasets)
+- **Subquery in SELECT**: For calculated columns
+- **Subquery in FROM**: To create temporary result sets
+
+### ✏️ Practice
+1. Find all products that cost more than the average price
+2. Find suppliers from Canada who have products listed
+3. Find categories with no products under $100
+
+---
+
+## 🎓 Quick Reference Summary
+
+### Create & Insert
+```sql
+CREATE TABLE table_name (column datatype constraints);
+INSERT INTO table_name VALUES (val1, val2, ...);
+```
+
+### Query
+```sql
+SELECT columns FROM table WHERE condition ORDER BY column;
+```
+
+### Join
+```sql
+SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
+```
+
+### Aggregate & Group
+```sql
+SELECT column, COUNT(*), AVG(column2)
+FROM table
+WHERE condition
+GROUP BY column
+HAVING COUNT(*) > value;
+```
+
+### Combine
+```sql
+SELECT columns FROM table1
+UNION
+SELECT columns FROM table2;
+```
+
+---
+
+## 📚 Next Steps
+
+**You've learned:**
+✅ Creating tables and inserting data
+✅ Querying and filtering data
+✅ Sorting and removing duplicates
+✅ Linking tables with foreign keys
+✅ Joining multiple tables
+✅ Calculating statistics
+✅ Grouping and filtering groups
+✅ Combining query results
+
+**Continue learning:**
+- Views and Virtual Tables
+- Subqueries and Nested Queries
+- Indexes and Performance
+- Transactions and ACID
+- Stored Procedures and Triggers
+
+---
+
+## 💡 Tips for Success
+
+1. **Practice by typing** - Don't copy/paste. Type the SQL yourself.
+2. **Use real data** - Create your own tables with data you care about.
+3. **Read error messages** - They tell you exactly what's wrong.
+4. **Start simple** - Master SELECT before complex JOINs.
+5. **Draw your tables** - Sketch table relationships on paper.
+
+---
+
+## 🔗 Resources
+
+- [MySQL Documentation](https://dev.mysql.com/doc/)
+- [SQL Tutorial - W3Schools](https://www.w3schools.com/sql/)
+- [SQLZoo Interactive Tutorial](https://sqlzoo.net/)
+
+---
+
+**Ready to code? Start with Section 1 and work your way through!** 🚀
diff --git a/_layouts/default.html b/_layouts/default.html
deleted file mode 100644
index 274ef82..0000000
--- a/_layouts/default.html
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
-
- {{ page.title | default: "My GitHub Pages" }}
-
-
-
-
-
-
-
-
-
-
-
- {{ content }}
-
-
-
-
-
-
diff --git a/bank.md b/bank.md
deleted file mode 100644
index 37c9103..0000000
--- a/bank.md
+++ /dev/null
@@ -1,97 +0,0 @@
-
-### Assignment: Implement Overdraft Fees in a Bank Account System
-
-#### Background:
-
-You are tasked with simulating the transactions of a bank account. You have been given a starting schema that keeps track of user transactions, including deposits and withdrawals, and automatically calculates the running balance for each user.
-
-#### Task:
-
-Currently, when a user withdraws money from their account, the balance is updated accordingly. However, if a withdrawal causes the balance to go below zero, an **overdraft fee** should be applied. The overdraft fee should be added to the transaction table as a separate line item.
-
-You are required to implement the following:
-
-1. **Overdraft Fee Logic**: If a user’s account balance goes below zero after a withdrawal, an overdraft fee of $25.00 should be charged.
-2. **Separate Overdraft Transaction**: The overdraft fee should appear as a separate transaction with a type of `'overdraft_fee'` and a negative amount in the transaction table.
-
-#### Given Schema:
-
-You are provided with the following code to get started. This code creates the necessary table (`TR`) to store transactions and a trigger that calculates the running balance after each transaction.
-
-```sql
-CREATE TABLE TR (
- tid INT AUTO_INCREMENT PRIMARY KEY,
- userid INT,
- amount DECIMAL(10,2),
- type CHAR(10)
-);
-
-ALTER TABLE TR ADD COLUMN balance DECIMAL(10,2);
-
-DELIMITER //
-CREATE TRIGGER running_balance
-BEFORE INSERT ON TR
-FOR EACH ROW
-BEGIN
-DECLARE user_balance DECIMAL(10,2);
-
-SELECT balance INTO user_balance FROM TR WHERE userid=NEW.userid ORDER BY tid DESC LIMIT 1;
-IF user_balance IS NULL THEN
-SET user_balance=0;
-END IF;
-IF NEW.type='withdraw' THEN
-SET user_balance=user_balance -NEW.amount;
-END IF;
-
-IF NEW.type='deposit' THEN
- SET user_balance=user_balance + NEW.amount;
-END IF;
-
-SET NEW.balance=user_balance;
-
-END //
-DELIMITER ;
-
-INSERT INTO TR (userid, amount, type) VALUES (1,20,'deposit');
-INSERT INTO TR (userid, amount, type) VALUES (2,30,'deposit');
-INSERT INTO TR (userid, amount, type) VALUES (2,10,'withdraw');
-INSERT INTO TR (userid, amount, type) VALUES (2,30,'withdraw');
-
-SELECT * FROM TR;
-```
-
-#### Instructions:
-
-1. **Modify the Trigger**: Update the `running_balance` trigger to check if the account balance goes below zero after a withdrawal. If it does, add an overdraft fee transaction.
-
-2. **Overdraft Fee Transaction**: Add a new transaction with:
-
- * A type of `'overdraft_fee'`
- * A negative amount of `-25.00` (this represents the fee charged for overdrafting).
-
-3. **Test Your Implementation**: Insert several transactions, including withdrawals that will cause the balance to go negative, and verify that the overdraft fee is correctly applied as a separate transaction.
-
-#### Example:
-
-After running the following series of transactions:
-
-```sql
-INSERT INTO TR (userid, amount, type) VALUES (1, 50, 'deposit'); -- User 1 deposits $50
-INSERT INTO TR (userid, amount, type) VALUES (1, 70, 'withdraw'); -- User 1 withdraws $70
-INSERT INTO TR (userid, amount, type) VALUES (1, 10, 'withdraw'); -- User 1 withdraws another $10 (total balance -30)
-```
-
-The expected output in the `TR` table should look like:
-
-| tid | userid | amount | type | balance |
-| --- | ------ | ------ | ------------- | ------- |
-| 1 | 1 | 50.00 | deposit | 50.00 |
-| 2 | 1 | 70.00 | withdraw | -20.00 |
-| 3 | 1 | 10.00 | withdraw | -30.00 |
-| 4 | 1 | 25.00 | overdraft_fee | -55.00 |
-
-#### Submission:
-
-Submit the SQL code for the trigger and any necessary modifications to the schema. Be sure to include sample test cases that demonstrate how your solution works.
-
----
diff --git a/bank_trigger.sql b/bank_trigger.sql
deleted file mode 100644
index 19986af..0000000
--- a/bank_trigger.sql
+++ /dev/null
@@ -1,108 +0,0 @@
--- CREATE the user TABLE
-DROP TABLE IF EXISTS user;
-DROP TABLE IF EXISTS transactions;
-DROP TABLE IF EXISTS overdraft_fees;
-
-DROP TRIGGER IF EXISTS check_transaction_trigger;
-DROP EVENT IF EXISTS process_overdraft_fees;
-
-
-CREATE TABLE user (
- id INT AUTO_INCREMENT PRIMARY KEY,
- name VARCHAR(50) NOT NULL,
- balance DECIMAL(10, 2) DEFAULT 0.00 -- Balance WITH two DECIMAL places
-);
-
--- CREATE the transactions TABLE
-CREATE TABLE transactions (
- id INT AUTO_INCREMENT PRIMARY KEY,
- userid INT NOT NULL,
- amount DECIMAL(10, 2) NOT NULL, -- Positive FOR deposits, negative FOR withdrawals
- type INT DEFAULT 0, -- 0 FOR non-automatic, 1 FOR automatic
- FOREIGN KEY (userid) REFERENCES user(id) ON DELETE CASCADE
-);
-
--- TABLE FOR tracking overdraft fees to be processed
-CREATE TABLE overdraft_fees (
- userid INT NOT NULL,
- fee_amount DECIMAL(10, 2) DEFAULT -30.00,
- processed BOOLEAN DEFAULT FALSE
-);
-
-DELIMITER $$
-
-CREATE TRIGGER check_transaction_trigger
-AFTER INSERT ON transactions
-FOR EACH ROW
-BEGIN
- DECLARE balance_after_transaction DECIMAL(10, 2);
-
- -- Step 1: UPDATE the user's balance based ON TRANSACTION amount
- UPDATE user
- SET balance = balance + NEW.amount
- WHERE id = NEW.userid;
-
- -- Step 2: CHECK the balance AFTER the TRANSACTION
- SELECT balance INTO balance_after_transaction FROM user WHERE id = NEW.userid;
-
- -- Step 3: INSERT INTO overdraft_fees IF balance IS below zero AFTER a non-automatic withdrawal
- IF balance_after_transaction < 0 AND NEW.amount < 0 AND NEW.type = 0 THEN
- INSERT INTO overdraft_fees (userid) VALUES (NEW.userid);
-
- -- Deduct the $30 fee FROM the user's balance
- UPDATE user
- SET balance = balance - 30
- WHERE id = NEW.userid;
- END IF;
-
-END$$
-
-DELIMITER ;
-
-
-DELIMITER $$
-
-CREATE EVENT process_overdraft_fees
-ON SCHEDULE EVERY 1 MINUTE
-DO
-BEGIN
- DECLARE done INT DEFAULT FALSE;
- DECLARE overdraft_userid INT;
-
- -- CURSOR to iterate through unprocessed overdraft fees
- DECLARE fee_cursor CURSOR FOR
- SELECT userid FROM overdraft_fees WHERE processed = FALSE;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-
- OPEN fee_cursor;
-
- read_loop: LOOP
- FETCH fee_cursor INTO overdraft_userid;
- IF done THEN
- LEAVE read_loop;
- END IF;
-
- -- INSERT the fee TRANSACTION INTO the transactions TABLE
- INSERT INTO transactions (userid, amount, type)
- VALUES (overdraft_userid, -30.00, 1);
-
- -- Mark the fee AS processed
- UPDATE overdraft_fees
- SET processed = TRUE
- WHERE userid = overdraft_userid;
- END LOOP;
-
- CLOSE fee_cursor;
-END$$
-
-DELIMITER ;
-
-
--- INSERT sample users INTO the user TABLE
-INSERT INTO user (name, balance) VALUES ('Alice', 500.00);
-INSERT INTO user (name, balance) VALUES ('Bob', 1000.00);
-INSERT INTO user (name, balance) VALUES ('Charlie', 50.00);
-INSERT INTO user (name, balance) VALUES ('Diana', 0.00);
-INSERT INTO user (name, balance) VALUES ('Eve', 250.00);
-
-INSERT INTO transactions(userid, amount) VALUES (1,-300);
diff --git a/code/.DS_Store b/code/.DS_Store
deleted file mode 100644
index 0ee8899..0000000
Binary files a/code/.DS_Store and /dev/null differ
diff --git a/code/Lab6/credentials.json b/code/Lab6/credentials.json
deleted file mode 100644
index 0c2b119..0000000
--- a/code/Lab6/credentials.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-"user" : "you",
-"password": "password"
-}
diff --git a/code/Lab6/showDatabases.js b/code/Lab6/showDatabases.js
deleted file mode 100644
index e69de29..0000000
diff --git a/code/Lab6/summarize-db.js b/code/Lab6/summarize-db.js
deleted file mode 100644
index e69de29..0000000
diff --git a/code/Lab7/.DS_Store b/code/Lab7/.DS_Store
deleted file mode 100644
index f844224..0000000
Binary files a/code/Lab7/.DS_Store and /dev/null differ
diff --git a/code/Lab7/lab7server.js b/code/Lab7/lab7server.js
deleted file mode 100644
index 9b7dfe6..0000000
--- a/code/Lab7/lab7server.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var express=require('express'),
-app = express(),
-port = process.env.PORT || 1337;
-
-var buttons=[{"buttonID":1,"left":10,"top":70,"width":100,"label":"hotdogs","invID":1},{"buttonID":2,"left":110,"top":70,"width":100,"label":"hambugers","invID":2},{"buttonID":3,"left":210,"top":70,"width":100,"label":"bannanas","invID":3},{"buttonID":4,"left":10,"top":120,"width":100,"label":"milkduds","invID":4}]; //static buttons
-
-app.use(express.static(__dirname + '/public')); //Serves the web pages
-app.get("/buttons",function(req,res){ // handles the /buttons API
- res.send(buttons);
-});
-
-app.listen(port);
diff --git a/code/Lab7/public/buttons.js b/code/Lab7/public/buttons.js
deleted file mode 100644
index 2de0d2f..0000000
--- a/code/Lab7/public/buttons.js
+++ /dev/null
@@ -1,41 +0,0 @@
-angular.module('buttons',[])
- .controller('buttonCtrl',ButtonCtrl)
- .factory('buttonApi',buttonApi)
- .constant('apiUrl','http://localhost:1337'); // CHANGED for the lab 2017!
-
-function ButtonCtrl($scope,buttonApi){
- $scope.buttons=[]; // Initially all was still
- $scope.errorMessage='';
- $scope.isLoading=isLoading;
- $scope.refreshButtons=refreshButtons;
-
- var loading = false;
-
- function isLoading(){
- return loading;
- }
-
- function refreshButtons(){
- loading=true;
- $scope.errorMessage='';
- buttonApi.getButtons()
- .success(function(data){
- $scope.buttons=data;
- loading=false;
- })
- .error(function () {
- $scope.errorMessage="Unable to load Buttons: API request failed";
- loading=false;
- });
- }
- refreshButtons();
-}
-
-function buttonApi($http,apiUrl){
- return{
- getButtons: function(){
- var url = apiUrl + '/buttons';
- return $http.get(url);
- }
- };
-}
diff --git a/code/Lab7/public/index.html b/code/Lab7/public/index.html
deleted file mode 100644
index 1596714..0000000
--- a/code/Lab7/public/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- Cash Register
-
-
-
-
-
-
-
Cash Register
-
-
-
-
-
-
-
-
-
diff --git a/code/Lab8/.DS_Store b/code/Lab8/.DS_Store
deleted file mode 100644
index f844224..0000000
Binary files a/code/Lab8/.DS_Store and /dev/null differ
diff --git a/code/Lab8/express.js b/code/Lab8/express.js
deleted file mode 100644
index 9a318ea..0000000
--- a/code/Lab8/express.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var express=require('express'),
-mysql=require('mysql'),
-credentials=require('./credentials.json'),
-app = express(),
-port = process.env.PORT || 1337;
-
-credentials.host='ids.morris.umn.edu'; //setup database credentials
-
-var connection = mysql.createConnection(credentials); // setup the connection
-
-connection.connect(function(err){if(err){console.log(error)}});
-
-app.use(express.static(__dirname + '/public'));
-app.get("/buttons",function(req,res){
- var sql = 'SELECT * FROM test.till_buttons';
- connection.query(sql,(function(res){return function(err,rows,fields){
- if(err){console.log("We have an error:");
- console.log(err);}
- res.send(rows);
- }})(res));
-});
-app.get("/click",function(req,res){
- var id = req.param('id');
- var sql = 'YOUR SQL HERE'
- console.log("Attempting sql ->"+sql+"<-");
-
- connection.query(sql,(function(res){return function(err,rows,fields){
- if(err){console.log("We have an insertion error:");
- console.log(err);}
- res.send(err); // Let the upstream guy know how it went
- }})(res));
-});
-// Your other API handlers go here!
-
-app.listen(port);
diff --git a/code/Lab8/public/click.js b/code/Lab8/public/click.js
deleted file mode 100644
index 96f0275..0000000
--- a/code/Lab8/public/click.js
+++ /dev/null
@@ -1,54 +0,0 @@
-angular.module('buttons',[])
- .controller('buttonCtrl',ButtonCtrl)
- .factory('buttonApi',buttonApi)
- .constant('apiUrl','http://localhost:1337'); // CHANGED for the lab 2017!
-
-function ButtonCtrl($scope,buttonApi){
- $scope.buttons=[]; //Initially all was still
- $scope.errorMessage='';
- $scope.isLoading=isLoading;
- $scope.refreshButtons=refreshButtons;
- $scope.buttonClick=buttonClick;
-
- var loading = false;
-
- function isLoading(){
- return loading;
- }
- function refreshButtons(){
- loading=true;
- $scope.errorMessage='';
- buttonApi.getButtons()
- .success(function(data){
- $scope.buttons=data;
- loading=false;
- })
- .error(function () {
- $scope.errorMessage="Unable to load Buttons: Database request failed";
- loading=false;
- });
- }
- function buttonClick($event){
- $scope.errorMessage='';
- buttonApi.clickButton($event.target.id)
- .success(function(){})
- .error(function(){$scope.errorMessage="Unable click";});
- }
- refreshButtons(); //make sure the buttons are loaded
-
-}
-
-function buttonApi($http,apiUrl){
- return{
- getButtons: function(){
- var url = apiUrl + '/buttons';
- return $http.get(url);
- },
- clickButton: function(id){
- var url = apiUrl+'/click?id='+id;
-// console.log("Attempting with "+url);
- return $http.get(url); // Easy enough to do this way
- }
- };
-}
-
diff --git a/code/Lab8/public/index.html b/code/Lab8/public/index.html
deleted file mode 100644
index fc118d0..0000000
--- a/code/Lab8/public/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- Cash Register
-
-
-
-
-
-
-
Cash Register (with buttons)
-
-
-
-
-
-
-
{{errorMessage}}
-
-
-
-
-
-
diff --git a/convert_html.py b/convert_html.py
deleted file mode 100644
index 4cfa64a..0000000
--- a/convert_html.py
+++ /dev/null
@@ -1,336 +0,0 @@
-#!/usr/bin/env python3
-"""
-Script to enhance HTML files:
-1. Fix markdown links (.md to .html)
-2. Convert markdown headings in paragraphs (### to
)
-3. Convert bold markdown (**text** to text)
-4. Convert markdown tables to HTML tables
-5. Add copy buttons to code blocks
-6. Add CSS to prevent code blocks from spanning full page width
-"""
-
-import re
-import os
-import sys
-from pathlib import Path
-
-
-def convert_markdown_table_to_html(markdown_table):
- """Convert a markdown table to HTML table format."""
- lines = [line.strip() for line in markdown_table.strip().split('\n') if line.strip()]
-
- if len(lines) < 2:
- return markdown_table # Not a valid table
-
- # Check if it's a markdown table (should have | characters)
- if not all('|' in line for line in lines):
- return markdown_table
-
- html_parts = ['
']
-
- # Process header row
- header_cells = [cell.strip() for cell in lines[0].split('|') if cell.strip()]
- if header_cells:
- html_parts.append(' ')
- html_parts.append('
')
- for cell in header_cells:
- html_parts.append(f'
{cell}
')
- html_parts.append('
')
- html_parts.append(' ')
-
- # Skip separator row (line with dashes)
- start_row = 2 if len(lines) > 1 and re.match(r'^[\s\|:\-]+$', lines[1]) else 1
-
- # Process body rows
- if start_row < len(lines):
- html_parts.append(' ')
- for line in lines[start_row:]:
- cells = [cell.strip() for cell in line.split('|') if cell.strip()]
- if cells:
- html_parts.append('
')
- return '\n'.join(html_parts)
-
-
-def add_copy_buttons_to_code_blocks(html_content):
- """Add copy buttons to code blocks in HTML content."""
-
- # Pattern to match
'
-
- html_content = re.sub(pattern, replacer, html_content)
-
- # Clean up any
tags that are now empty or just have closing tags
- html_content = re.sub(r'
\s*
', '', html_content)
-
- return html_content
-
-
-def fix_markdown_links(html_content):
- """Convert .md links to .html links in HTML files."""
- # Replace href="*.md" with href="*.html"
- # Handle both regular links and links with paths
- html_content = re.sub(r'href="([^"]*?)\.md"', r'href="\1.html"', html_content)
- return html_content
-
-
-def convert_markdown_tables_in_html(html_content):
- """Find and convert markdown tables in HTML content."""
-
- # Pattern to find markdown tables (multiple lines starting with |)
- # This pattern matches blocks of lines that start with |
- lines = html_content.split('\n')
- result_lines = []
- i = 0
-
- while i < len(lines):
- line = lines[i]
-
- # Check if this line starts a markdown table
- if line.strip().startswith('|') and '|' in line:
- # Check if the line before ends with
without closing
- if result_lines and '
' in result_lines[-1] and '
' not in result_lines[-1]:
- # Close the paragraph before the table
- result_lines[-1] = result_lines[-1] + ''
-
- # Collect all consecutive table lines
- table_lines = []
- j = i
- while j < len(lines):
- stripped = lines[j].strip()
- if stripped.startswith('|'):
- # Remove any trailing from table line
- cleaned = stripped.replace('', '').strip()
- table_lines.append(cleaned)
- j += 1
- elif stripped == '':
- # Skip standalone after table
- j += 1
- break
- else:
- break
-
- # Convert the table if we have at least 2 lines (header + separator or header + data)
- if len(table_lines) >= 2:
- markdown_table = '\n'.join(table_lines)
- html_table = convert_markdown_table_to_html(markdown_table)
- result_lines.append(html_table)
- i = j
- else:
- result_lines.append(line)
- i += 1
- else:
- result_lines.append(line)
- i += 1
-
- return '\n'.join(result_lines)
-
-
-def add_css_and_js(html_content):
- """Add CSS for copy buttons and JS for copy functionality."""
-
- # CSS for copy button and code block wrapper
- css = """
- /* Code block wrapper with copy button */
- .code-block-wrapper {
- position: relative;
- margin: 20px 0;
- max-width: 100%;
- }
-
- .code-block-wrapper pre {
- margin: 0;
- overflow-x: auto;
- max-width: 100%;
- }
-
- .copy-button {
- position: absolute;
- top: 8px;
- right: 8px;
- padding: 6px 8px;
- background-color: rgba(255, 255, 255, 0.9);
- border: 1px solid #ddd;
- border-radius: 4px;
- cursor: pointer;
- opacity: 0.7;
- transition: opacity 0.2s, background-color 0.2s;
- display: flex;
- align-items: center;
- gap: 4px;
- }
-
- .copy-button:hover {
- opacity: 1;
- background-color: #fff;
- }
-
- .copy-button:active {
- background-color: #e0e0e0;
- }
-
- .copy-button.copied {
- background-color: #4caf50;
- color: white;
- border-color: #4caf50;
- }
-
- .copy-button svg {
- display: block;
- }
- """
-
- # JavaScript for copy functionality
- js = """
- function copyCode(button) {
- const wrapper = button.closest('.code-block-wrapper');
- const codeBlock = wrapper.querySelector('code');
- const text = codeBlock.textContent;
-
- // Copy to clipboard
- navigator.clipboard.writeText(text).then(() => {
- // Show success feedback
- button.classList.add('copied');
- const originalHTML = button.innerHTML;
- button.innerHTML = '';
-
- // Reset after 2 seconds
- setTimeout(() => {
- button.classList.remove('copied');
- button.innerHTML = originalHTML;
- }, 2000);
- }).catch(err => {
- console.error('Failed to copy:', err);
- alert('Failed to copy code');
- });
- }
- """
-
- # Insert CSS before or
- if '' in html_content:
- html_content = html_content.replace('', f'{css}\n ')
- elif '' in html_content:
- html_content = html_content.replace('', f'\n')
-
- # Insert JS before