The
SQL
Workshop

Built by a team of experts to help you unlock your next promotion, reboot your career, or kick off your latest side project.

Get Started Today

You'll be up and running with SQL in no time at all.

  • Free

    FreeThe SQL Workshop

    Unlock one year of full, unlimited access and get started right away!
    Learn for Free

Engineered for Success

Nobody likes going through hundreds of pages of dry theory, or struggling with uninteresting examples that don’t compile. We've got you covered. Any time, any device.

  • Learn by doing real-world development, supported by detailed step-by-step examples, screencasts and knowledge checks.

  • Become a verified practitioner, building your credentials by completing exercises, activities and assessment checks.

  • Manage your learning based on your personal schedule, with content structured to easily let you pause and progress at will.

Learn By Doing

You already know you want to learn SQL, and a smarter way to learn SQL is to learn by doing.

The SQL Workshop focuses on building up your SQL database management skills so that you can easily store and retrieve data and become the in-house expert on complex queries. You'll learn from real examples that lead to real results.

On Your Terms

Build up and reinforce key skills in a way that feels rewarding.

You won't have to sit through any unnecessary theory. If you're short on time you can jump into a single exercise each day or spend an entire weekend learning about third-party libraries. It's your choice.

An Ideal Start

Fast-paced and direct, The SQL Workshop is the ideal companion for SQL beginners.

You'll build and iterate on your code like a software developer, learning along the way. This process means that you'll find that your new skills stick, embedded as best practice. A solid foundation for the years ahead.

Begin Your Journey

A simple, straightforward and pain-free way to learn SQL.

  • Free

    FreeThe SQL Workshop

    Unlock one year of full, unlimited access and get started right away!
    Learn for Free

Everything You Need

Every Workshop includes access to dedicated support, course discussions and a wider learning community. Ask questions, share answers and work with the community to expand your learning.

  • Engage and participate in live user discussions, baked right into your course from start to finish. Share, learn and grow together.

  • Get live updates and interact directly with the product development, editorial and authoring teams across the Packt network.

  • Create, showcase and share your own learning outcomes and motivational stories across the entire workshop community.

Get Build-Ready

Every Workshop includes a whole host of features that work together to help you get the job done. You’ll be ready to tackle real-world development in no time.
  • Hack Your Brain

    We've applied the latest pedagogical techniques to deliver a truly multimodal experience. It'll keep you engaged and make the learning stick. It's science!

  • Build Real Things

    Nobody likes wasting their time. We cut right to the action and get you building real skills that real, working developers value. The perfect approach for a career move.

  • Learn From Experts

    We've paired technical experts with top editorial talent. They've worked hard to deliver you the maximum impact for each minute you spend learning. It's our secret sauce.

  • Verify Your Credentials

    You can become a verified practitioner. Complete the course to get a certificate. It's perfect for sharing on social media. Hello LinkedIn!

  • Receive Free Updates

    Technology keeps changing, and so do we. We keep versions updated independently, so you'll always have access. No more worrying about third-party release cycles.

  • Access Anywhere

    All you need is an internet connection. We've built every course so that it works on desktop and mobile, giving you options that fit within your schedule.

What's Inside

From A to Z, we've got you covered!

  • Introduction and Setup

    • Welcome to The SQL Workshop
    • Installation and Setup
    • Credits
  • 1. SQL Basics

    • Overview
    • Understanding Data
    • Exercise 1.01: Building the PACKT_ONLINE_SHOP Database
    • Exercise 1.01: Building the PACKT_ONLINE_SHOP Database
    • Exercise 1.02: Inserting Values into the Customers Table of the PACKT_ONLINE_SHOP Database
    • Exercise 1.02: Inserting Values into the Customers Table of the PACKT_ONLINE_SHOP Database
    • Activity 1.01: Inserting Values into the Products Table in the PACKT_ONLINE_SHOP Database
    • Summary
  • 2. Manipulating Data

    • Overview
    • The INSERT Operation
    • Exercise 2.01: Inserting One Row of Data into a Table
    • Exercise 2.01: Inserting One Row of Data into a Table
    • Exercise 2.02: Specifying Default Values
    • Exercise 2.02: Specifying Default Values
    • Exercise 2.03: Deleting a record from a table
    • Exercise 2.03: Deleting a record from a table
    • Exercise 2.04: Manipulating the Auto-Increment Values in a Table
    • Exercise 2.04: Manipulating the Auto-Increment Values in a Table
    • The UPDATE Operation
    • Exercise 2.05: UPDATE Using Computed Values
    • Exercise 2.05: UPDATE Using Computed Values
    • Activity 2.01: Inserting Additional values to the Products table
    • Summary
    • Survey 1
  • 3. Normalization

    • Overview
    • Primary Key Constraints
    • Preserving Data Integrity
    • Normal Forms
    • Exercise 3.01: Building a Relationship between Two Tables
    • Exercise 3.01: Building a Relationship between Two Tables
    • Activity 3.01: Building a Relationship between the Orders and the Order Items table
    • Summary
  • 4. The SELECT Statement

    • Overview
    • What Does the SELECT Statement Do?
    • Exercise 4.01: Selecting Columns from a Table
    • Exercise 4.01: Selecting Columns from a Table
    • Exercise 4.02: Aliasing the Column Headers
    • Exercise 4.02: Aliasing the Column Headers
    • Activity 4.01: Displaying Particular Columns from the Table
    • Ordering Results
    • Exercise 4.03: Using the LIMIT Keyword
    • Exercise 4.03: Using the LIMIT Keyword
    • Exercise 4.04: Calculating the Line Item Total
    • Exercise 4.04: Calculating the Line Item Total
    • Exercise 4.05: Calculating Discount
    • Exercise 4.05: Calculating Discount
    • Activity 4.02: Extracting the Top Five Highest Priced Items
    • Summary
  • 5. Shaping Data with the WHERE Clause

    • Overview
    • The WHERE Clause Syntax
    • Exercise 5.01: Implementing Logical Operators in the WHERE Clause
    • Exercise 5.01: Implementing Logical Operators in the WHERE Clause
    • Exercise 5.02: Using the BETWEEN Operator
    • Exercise 5.02: Using the BETWEEN Operator
    • Exercise 5.03: Using the != and <> Operators
    • Exercise 5.03: Using the != and <> Operators
    • Exercise 5.04: Using the LIKE Operator to Check a Pattern at the Beginning of a String
    • Exercise 5.04: Using the LIKE Operator to Check a Pattern at the Beginning of a String
    • Exercise 5.05: Using the LIKE Operator to Check for a Specified Length
    • Exercise 5.05: Using the LIKE Operator to Check for a Specified Length
    • Exercise 5.06: Searching for NULL Values
    • Exercise 5.06: Searching for NULL Values
    • Exercise 5.07: Querying Multiple Conditions
    • Exercise 5.07: Querying Multiple Conditions
    • Activity 5.01: Combining Conditions to Extract Store Data
    • Summary
  • 6. JOINS

    • Overview
    • Exercise 6.01: Extracting Orders and Purchaser Information
    • Exercise 6.01: Extracting Orders and Purchaser Information
    • Exercise 6.02: Implementing RIGHT JOIN
    • Exercise 6.02: Implementing RIGHT JOIN
    • Exercise 6.03: Implementing LEFT JOIN
    • Exercise 6.03: Implementing LEFT JOIN
    • Exercise 6.04: Implementing CROSS JOINS
    • Exercise 6.04: Implementing CROSS JOINS
    • Exercise 6.05: Implementing a UNION JOIN
    • Exercise 6.05: Implementing a UNION JOIN
    • Activity 6.01: Implementing JOINS
    • Summary
    • Survey 2
  • 7. Subqueries, Cases, and Views

    • Overview
    • Subqueries
    • Exercise 7.01: Working with Subqueries
    • Exercise 7.01: Working with Subqueries
    • Activity 7.01: Finding the Product Category Name Using a Subquery
    • Exercise 7.02: Using Case Statements
    • Exercise 7.02: Using Case Statements
    • Activity 7.02: Categorizing the Shipments Using CASE Statements
    • Exercise 7.03: Building a View
    • Exercise 7.03: Building a SQL View
    • Activity 7.03: Building a View
    • Summary
  • 8. SQL Programming

    • Overview
    • Programming for SQL Products – The Basics
    • Stored Procedures
    • Exercise 8.01: Building a SQL Server Stored Procedure That Returns a List of Packt Online Shop Order Details
    • Exercise 8.01: Building a SQL Server Stored Procedure That Returns a List of Packt Online Shop Order Details
    • Exercise 8.02: Altering a SQL Server Stored Procedure
    • Exercise 8.02: Altering a SQL Server Stored Procedure
    • Activity 8.01: Building a Stored Procedure
    • Functions
    • Exercise 8.03: Build a MySQL Function
    • Exercise 8.03: Build a MySQL Function
    • Activity 8.02: Working with MySQL Functions
    • Triggers
    • Exercise 8.04: Build a MySQL Trigger
    • Exercise 8.04: Build a MySQL Trigger
    • Activity 8.03: Building a Trigger
    • Summary
  • 9. Security

    • Overview
    • Exercise 9.01: Creating New MYSQL Users
    • Exercise 9.01: Creating New MYSQL Users
    • Exercise 9.02: Granting EXECUTE permission in MySQL
    • Exercise 9.02: Granting EXECUTE permission in MySQL
    • Activity 9.01: Grant UPDATE permission on a table in MySQL
    • Summary
    • Survey 3
  • 10. Aggregate Functions

    • Overview
    • Aggregate Functions (SUM, COUNT, AVG, MIN, and MAX) and the GROUP BY Clause
    • Exercise 10.01: Implementing Aggregate Functions
    • Exercise 10.01: Implementing Aggregate Functions
    • The HAVING Clause
    • Exercise 10.02: Implementing the HAVING Clause
    • Exercise 10.02: Implementing the HAVING Clause
    • The Differences between the SQL HAVING and WHERE Clauses
    • SQL OVER and PARTITION BY
    • Exercise 10.03: Implementing RANK
    • Exercise 10.03: Implementing RANK
    • Activity 10.01: Working with Aggregates
    • Summary
  • 11. Advanced SQL

    • Overview
    • Exercise 11.01: Building a MySQL Query that Returns the OrderID, Quantity, and Notes Columns
    • Exercise 11.01: Building a MySQL Query that Returns the OrderID, Quantity, and Notes Columns
    • Exercise 11.02: Using LIKE in a Stored Procedure
    • Exercise 11.02: Using LIKE in a Stored Procedure
    • Activity 11.01: Implementing the LIKE Operator
    • Exercise 11.03: Using the COALESCE Function to Handle a NULL Value in a Combined Set of Values
    • Exercise 11.03: Using the COALESCE Function to Handle a NULL Value in a Combined Set of Values
    • Activity 11.02: Using Transactions
    • Finding Duplicate Table Rows
    • Summary
  • Activity Solutions

    • Activity 1.01: Inserting Values into the Products Table in the PACKT_ONLINE_ SHOP Database
    • Activity 1.01: Inserting Values into the Products Table in the PACKT_ONLINE_ SHOP Database
    • Activity 2.01: Inserting Additional values to the Products Table
    • Activity 2.01: Inserting Additional values to the Products Table
    • Activity 3.01: Building a Relationship between the Orders and the OrderItems table
    • Activity 3.01: Building a Relationship between the Orders and the OrderItems table
    • Activity 4.01: Displaying Particular Columns from the Table
    • Activity 4.01: Displaying Particular Columns from the Table
    • Activity 4.02: Extracting the Top Five Highest Paid Items
    • Activity 4.02: Extracting the Top Five Highest Paid Items
    • Activity 5.01: Combining Conditions to Extract Store Data
    • Activity 5.01: Combining Conditions to Extract Store Data
    • Activity 6.01: Implementing JOINS
    • Activity 6.01: Implementing JOINS
    • Activity 7.01: Finding the Product Category Name Using a Subquery
    • Activity 7.01: Finding the Product Category Name Using a Subquery
    • Activity 7.02: Categorizing the Shipments Using CASE Statements
    • Activity 7.02: Categorizing the Shipments Using CASE Statements
    • Activity 7.03: Building a View
    • Activity 7.03: Building a View
    • Activity 8.01: Building a Stored Procedure
    • Activity 8.01: Building a Stored Procedure
    • Activity 8.02: Working with MySQL Functions
    • Activity 8.02: Working with MySQL Functions
    • Activity 8.03: Building a Trigger
    • Activity 8.03: Building a Trigger
    • Activity 9.01: Grant UPDATE permission on a table in MySQL
    • Activity 9.01: Grant UPDATE permission on a table in MySQL
    • Activity 10.01: Working with Aggregates
    • Activity 10.01: Working with Aggregates
    • Activity 11.01: Implementing the LIKE Operator
    • Activity 11.01: Implementing the LIKE Operator
    • Activity 11.02: Using Transactions
    • Activity 11.02: Using Transactions

Get Verified

Complete The SQL Workshop to unlock your certificate.

You can unlock the certificate by completing the course. The credentials are easy to share, and are ideal for displaying on your LinkedIn profile.
A copy of a certificate for The PHP Workshop

Take A Step Forward

There has never been a better time to start learning SQL.

  • Free

    FreeThe SQL Workshop

    Unlock one year of full, unlimited access and get started right away!
    Learn for Free

Already Know SQL?

Don't worry, we've got your back with other languages and frameworks too!

Show me my options!