SQL - The Complete Developer's Guide (MySQL, PostgreSQL)

From data definition to manipulation (CRUD, relations, JOIN): Learn SQL for MySQL, Postgresql & more from the ground up!

SQL - The Complete Developer's Guide (MySQL, PostgreSQL)

Course Overview

About This Course

You’ve probably bumped into SQL in job posts, tutorials, or at work—and it can feel like everyone assumes you already “just know” how to query a database. Maybe you can copy a query, but writing your own (or understanding why it works) still feels shaky.

This course gives you a clear, detailed path to real confidence with SQL, without requiring any prior database or programming experience. You can follow the full step-by-step route or take the quick summary path when you need the essentials fast—and you’ll see everything demonstrated in both MySQL and PostgreSQL.

By the end, you’ll be able to set up your database environment, create solid table structures, and work with data of different shapes and complexity. You’ll confidently write your own queries—from straightforward lookups to more involved requests—and you’ll know how to structure and optimize databases so they stay maintainable as they grow.

What You'll Learn

You’ll practice the same SQL ideas in both MySQL and PostgreSQL, so you can move between database systems without feeling like you’re starting over.

  • Write SQL confidently

    Use core SQL syntax to write commands from scratch instead of relying on copy/paste. You’ll understand what SQL is doing and how to express what you want the database to return.

  • Install database setups

    Install MySQL and PostgreSQL and connect through different clients. You’ll be able to get a working environment running so you can execute queries and manage databases locally.

  • Perform CRUD operations

    Create, read, update, and delete data using SQL in a controlled way. You’ll insert records into tables and safely change or remove data when requirements evolve.

  • Query and filter data

    Retrieve exactly the rows you need with simple and complex queries. You’ll filter results and shape outputs so they match real questions you need to answer from your data.

  • Design normalized tables

    Split data across multiple tables to avoid duplication and keep your database clean. You’ll create and structure tables with appropriate data types for the kind of data you store.

  • Join and aggregate results

    Merge data from multiple tables into combined result sets and summarize it with grouping and aggregation. You’ll also use built-in functions for numbers, text, and dates to produce useful outputs.

Ready to get started?

See enrollment options

Prerequisites

  • No prior SQL or database knowledge is required.

  • No programming experience is required.

Who Is This Course For?

  • SQL beginners

    You’re new to databases and want a structured way to stop guessing and start understanding. You want to build a foundation that makes future learning (and job requirements) feel approachable.

  • Web developers

    You build applications and need to incorporate a relational database without feeling blocked by query writing. You want to be able to work comfortably with SQL in MySQL or PostgreSQL depending on the project.

  • Data analysts

    You work with data (or want to) and keep running into SQL as a must-have skill. You want to pull, combine, and summarize data yourself instead of waiting on someone else to write queries.

Curriculum Overview

Start Now

Preview the structure and pacing of this course before you begin.

  • Getting Started8 lectures23m
    • 01Welcome To The Course!2:24 min
    • 02What Is SQL?6:04 min
    • 03A Closer Look At SQL & Databases6:10 min
    • 04Course Content3:35 min
    • 05There Are Two Ways Of Taking This Course!2:15 min
    • 06How To Get The Most Out Of This Course3:05 min
    • 07Course Code & Resources0:00 min
    • 08The Academind Pro Referral Program0:00 min
  • SQL Basics: Syntax & Core Features5 lectures18m
    • 01Module Introduction0:48 min
    • 02Understanding The Core SQL Syntax6:36 min
    • 03SQL in Action3:33 min
    • 04The Core SQL Rules3:49 min
    • 05Data Definition vs Data Manipulation3:32 min
  • Course Setup: Installing MySQL & Postgresql13 lectures1h 20m
    • 01Module Introduction2:42 min
    • 02Installing Different Database Management Systems2:58 min
    • 03What We Need To Install7:12 min
    • 04You Can Skip The Next Lectures!0:00 min
    • 05MySQL Setup Overview & macOS Setup10:34 min
    • 06MySQL Windows Setup8:09 min
    • 07Postgresql Setup Overview & macOS Setup6:14 min
    • 08Postgresql Windows Setup4:31 min
    • 09Starting & Stopping Servers + Uninstalling Database Systems0:00 min
    • 10Connecting To Database Servers (MySQL & Postgresql) With Various Clients15:29 min
    • 11Setting Up Visual Studio Code With The SQLTools Extension (Course Environment)10:43 min
    • 12Configuring VS Code & Exploring SQLTools11:58 min
    • 13More On VS Code & SQLTools0:00 min
  • Data Definition: Managing Tables & Working With Data Types41 lectures3h 39m
    • 01Module Introduction2:01 min
    • 02Key Terms When Working With Data Definition Statements & Commands2:42 min
    • 03Introducing The Course Section Example2:23 min
    • 04Introducing Key Data Definition Clauses3:11 min
    • 05Creating a new Database (CREATE DATABASE)9:56 min
    • 06Deleting Databases & IF NOT EXISTS0:00 min
    • 07The Importance Of Data Types (Value Types)5:21 min
    • 08Introducing Key Text Value Types6:37 min
    • 09Introducing Numeric Values, Date Types & More5:50 min
    • 10An Overview Of Numeric Value Types0:00 min
    • 11How Do You Store Files?3:36 min
    • 12Getting Started With The CREATE TABLE Statement & Syntax5:16 min
    • 13Creating a First Text Column3:49 min
    • 14Creating a Numeric Value Column9:03 min
    • 15Working with Enums & Finishing Table Creation7:06 min
    • 16Inserting Data Into The Created Table (INSERT INTO)6:19 min
    • 17Inserting & Querying More Data4:02 min
    • 18Working With Fixed Point & Floating Point Numbers8:53 min
    • 19Adding Boolean Value Types1:58 min
    • 20Creating a new Table with Text & Timestamp Data5:10 min
    • 21Inserting Data Into The New Tables7:32 min
    • 22What About Time Zones?0:00 min
    • 23Introducing Default Column Values3:13 min
    • 24Deleting (Dropping) Tables & Inserting Data With Default Values5:21 min
    • 25Updating Tables & Columns8:57 min
    • 26Dealing With "No Data" (NULL) vs "0"6:27 min
    • 27NULL Values, Inserting (No) Data & Default Values0:00 min
    • 28Exploring the NOT NULL Constraint9:23 min
    • 29Exploring the CHECK Constraint12:34 min
    • 30We Need Unique Values & Identifiers!11:39 min
    • 31SERIAL in MySQL vs SERIAL in Postgresql0:00 min
    • 32Working With Auto Incrementing IDs & Primary Keys10:20 min
    • 33Auto-IDs, Primary Keys & Inserting Data0:00 min
    • 34Constraints - Summary2:45 min
    • 35Understanding Text Encoding & Collation7:35 min
    • 36Temporary Tables & Tables From Other Tables2:40 min
    • 37Creating Generated Columns7:48 min
    • 38Module Summary3:02 min
    • 39Time To Practice: Problem3:59 min
    • 40Time To Practice: Solution (1/2)13:48 min
    • 41Time To Practice: Solution (2/2)8:55 min
  • Data Manipulation & Querying: CRUD Operations With SQL26 lectures1h 37m
    • 01Module Introduction1:21 min
    • 02What Are CRUD Operations?2:33 min
    • 03Inserting Data: Theory2:34 min
    • 04Selecting Data: Theory1:24 min
    • 05Updating Data: Theory1:37 min
    • 06Deleting Data: Theory1:22 min
    • 07Introducing The Section Example3:33 min
    • 08Setting Up An Example Database & Table7:46 min
    • 09Example: Inserting Data7:26 min
    • 10Inserting More (Dummy) Data1:11 min
    • 11Updating In Action5:22 min
    • 12Deleting In Action2:08 min
    • 13Selecting Data - The Basics4:42 min
    • 14SELECT, Column Names & Data Expressions5:02 min
    • 15Filtering with WHERE: Available Comparison Operators & Variations4:23 min
    • 16Filtering In Action (WHERE In Action)3:39 min
    • 17Combining Comparisons With AND & OR3:36 min
    • 18Greater, Smaller & Ranges7:15 min
    • 19Filtering Text Values4:29 min
    • 20Working With Dates & Date Differences5:16 min
    • 21Filtering Conditions Without Hard-Coded Values0:00 min
    • 22Introducing ORDER BY & LIMIT2:09 min
    • 23Ordering & Limiting Results In Action7:23 min
    • 24Looking For DISTINCT Values1:41 min
    • 25Subqueries & Views7:05 min
    • 26Module Summary2:33 min
  • Data Normalization & Relationships: Splitting & JOINing Data32 lectures3h 15m
    • 01Module Introduction1:45 min
    • 02A First Look At Related Data4:09 min
    • 03Data Normalization - First Steps4:03 min
    • 04Splitting Data Into Tables9:48 min
    • 05Forms Of Data Normalization3:05 min
    • 06Our First Section Example4:09 min
    • 07Creating Tables With Relations10:23 min
    • 08Inserting Related Data8:11 min
    • 09Joining Data & Introducing INNER JOIN4:06 min
    • 10Using INNER JOIN8:10 min
    • 11Combining Multiple JOINs4:13 min
    • 12Data Joining & Filtering3:48 min
    • 13Introducing LEFT JOIN2:10 min
    • 14Using LEFT JOIN3:57 min
    • 15Combining Multiple LEFT JOINs2:40 min
    • 16What About RIGHT JOIN?1:23 min
    • 17Example Time & INNER JOIN vs LEFT JOIN12:10 min
    • 18Introducing CROSS JOIN1:43 min
    • 19UNION & Why It's Different8:51 min
    • 20What's Wrong With Our Foreign Keys?5:07 min
    • 21Introducing Foreign Key Constraints4:06 min
    • 22Diving Deeper Into Foreign Key Constraints5:35 min
    • 23Updating & Removing Foreign Key Constraints0:00 min
    • 24Foreign Key Constraints In Action12:05 min
    • 25Data Relationship Types: One-to-Many, Many-to-Many, One-to-ONe4:34 min
    • 26A Bigger Example5:39 min
    • 27Example: Adding First Tables & Relations16:56 min
    • 28Example: Adding More Tables & Data11:10 min
    • 29Many-to-Many Relationships & Intermediate Tables ("Linking Tables")7:18 min
    • 30Querying The Example Data8:57 min
    • 31Practicing JOINs With Filtering9:13 min
    • 32Experimenting With Referential Integrity6:00 min
  • More On Primary & Foreign Keys9 lectures39m
    • 01Module Introduction1:30 min
    • 02Remember: Primary Keys Don't Have To Be Auto-Incrementing IDs!2:51 min
    • 03Primary Keys: When To Use Which Column0:00 min
    • 04Introducing Composite Primary Keys7:52 min
    • 05Defining Composite Primary Keys (Composite Keys In Action)2:36 min
    • 06Composite Foreign Keys4:47 min
    • 07Composite Keys In Action2:51 min
    • 08Self-Referencing Relationships (Self-Referential Relationships)9:24 min
    • 09Self-Referencing Many To Many Relationships7:58 min
  • Grouping & Aggregate Functions15 lectures1h 46m
    • 01Module Introduction1:27 min
    • 02The Module Project4:37 min
    • 03What are Aggregate Functions - Theory4:23 min
    • 04Understanding COUNT()10:55 min
    • 05Working with MIN() & MAX() and Adding Aliases to Aggregate Functions7:38 min
    • 06Using SUM(), AVG() & ROUND()6:16 min
    • 07Working with Filters & Joining Tables11:34 min
    • 08Theory Time - Understanding GROUP BY5:03 min
    • 09Applying GROUP BY in Practice4:40 min
    • 10GROUP BY & Joined Queries6:11 min
    • 11Understanding WHERE vs HAVING10:00 min
    • 12Applying HAVING in Practice7:29 min
    • 13Working with Nested Subqueries11:00 min
    • 14Introducing Window Functions8:18 min
    • 15Understanding ORDER BY and RANK()7:00 min

And 5 more sections in the full course.

Ready to Get Started?

Choose the option that works best for you.

Single Course

SQL - The Complete Developer's Guide (MySQL, PostgreSQL)

One Payment. Lifetime Access.

$69one-time

  • One-time payment
  • All future updates for this course
  • Downloadable resources & code
  • Certificate of completion
  • Hands-on exercises & projects
  • Self-paced learning
  • English captions on all videos
  • Lifetime access