Databases · DBC-38

SQL Essentials with MariaDB

SQL Essentials with MariaDB is a hands-on course in SQL on MariaDB, from SELECT, joins and subqueries to CTEs, window functions and JSON, plus creating tables with constraints, indexes, views and transactions. It suits people starting a database career, developers and data analysts who work with MariaDB or MySQL and want practical, modern SQL skills.

Updated
From 12,150 THB / person 13,500 −10% excl. VAT 7% · group rates available
PDFDownload the course outline
  • Duration18 hours · 3 days
  • FormatOnsite / live online
  • Next roundOn request
  • CertificateIncluded

Course overview

SQL is still the most important basic skill for anyone who works with data, whether developer, data analyst or system administrator. MariaDB is a widely used open source database that runs websites, business systems and many systems migrated from MySQL. Yet many people can only write basic statements, and when a task calls for summarising several tables, ranking results or calculating running totals, they export the data to Excel and finish it there, even though modern SQL can do it in a single statement.

This course builds a solid SQL foundation on MariaDB 12.3 LTS, with hands-on practice in every topic. Learners install MariaDB with Docker and use database management tools, write SELECT queries with conditions, sorting, grouping, joins and subqueries, then move on to string, numeric and date functions, CTEs, window functions and JSON data. They go on to create databases and tables with constraints, use indexes and EXPLAIN, build views, manage data with INSERT, UPDATE and DELETE with RETURNING, and control transactions. The course ends with a workshop that answers business questions with SQL against a sample online store database. (3 days, 6 hours per day, 18 hours in total, Beginner to Intermediate level.)

What you’ll gain

  • Install MariaDB 12.3 LTS with Docker and use the mariadb client, DBeaver or HeidiSQL
  • Write SELECT queries with conditions, sorting, LIMIT, aggregates, GROUP BY and HAVING
  • Retrieve data from several tables correctly with JOIN, UNION and subqueries
  • Use string, numeric, date and time functions, including CASE and NULL handling
  • Write CTEs and window functions, and read JSON data with SQL
  • Create and alter databases, tables, constraints, indexes and views
  • Insert, update and delete data and control transactions with COMMIT, ROLLBACK and SAVEPOINT

Who this course is for

  • Beginners who want to start a career in databases or data
  • Web and app developers who use MariaDB or MySQL and want to write deeper SQL
  • Data analysts who need to pull and summarise data from databases themselves
  • Database administrators who want a solid SQL foundation before moving into DBA work

Prerequisites

  • A basic understanding of databases, such as tables, rows and columns
  • Basic computer skills and typing commands; no programming is required
  • No previous MariaDB or MySQL experience is required
  • A Windows, macOS or Linux laptop that can run Docker Desktop, with permission to install software

Curriculum

Course Details

This course is the 2026 edition of SQL Essentials with MariaDB, updated for MariaDB 12.3, the latest LTS release. It runs for 3 days, 6 hours per day (18 hours in total, 09:00-16:00), as lectures with labs on a single sample online store database throughout. Beginner to Intermediate level. Day one covers SELECT, GROUP BY, joins and subqueries, day two covers functions, CTEs, window functions

and JSON, and day three covers creating tables, constraints, indexes, views, data changes and transactions. Every lab runs on the learner's own machine with Docker and free tools. The course focuses on writing SQL; learners who want to administer MariaDB, including backup and replication, can continue with the institute's MariaDB DBA course. Learners take home a docker-compose file, the sample database and the SQL files for every lab.

Day 1 Getting Started with MariaDB and SELECT

Section 1: Lab: Setting Up MariaDB 12.3 LTS and Tools

  • What MariaDB is, how it relates to MySQL, and the current LTS release
  • Run MariaDB 12.3 with Docker Compose and a data volume
  • Use the mariadb client and connect through DBeaver or HeidiSQL
  • SQL writing rules: case sensitivity, quotes, statement terminators and comments
  • Lab: load the sample online store database and explore the tables

Section 2: Lab: Basic SELECT

  • SELECT, FROM and column aliases
  • WHERE with comparison and logical operators
  • IN, BETWEEN, LIKE and testing for NULL
  • ORDER BY on several columns, and arithmetic expressions with operator precedence
  • Lab: find products and customers that match different conditions

Section 3: Lab: LIMIT, Aggregates and GROUP BY

  • DISTINCT, LIMIT and OFFSET for paging
  • COUNT, SUM, AVG, MIN and MAX
  • GROUP BY, HAVING and WITH ROLLUP for subtotals
  • UNION, UNION ALL, INTERSECT and EXCEPT
  • Lab: summarise sales by product category and month

Section 4: Lab: Joining Several Tables

  • Cartesian products and why joins need conditions
  • INNER JOIN, LEFT JOIN and RIGHT JOIN
  • JOIN ON compared with USING, and the pitfalls of NATURAL JOIN
  • Table aliases, self joins and multi-table joins
  • Lab: an order report with customer names and line items

Section 5: Lab: Subqueries

  • Scalar subqueries in SELECT and WHERE
  • Subqueries with IN, EXISTS and NOT EXISTS
  • Correlated subqueries and their effect on performance
  • Derived tables in FROM
  • Lab: find customers who have never ordered and products selling above average
Day 2 Functions and Advanced Queries

Section 6: Lab: Numeric and String Functions

  • ROUND, TRUNCATE, CEILING, FLOOR and MOD
  • CONCAT, SUBSTRING, REPLACE, TRIM and LPAD
  • Search with REGEXP, and utf8mb4 collations for Thai text
  • Convert data types with CAST and CONVERT
  • Lab: standardise product codes and customer names

Section 7: Lab: Dates, Times and Conditions

  • How DATE, DATETIME and TIMESTAMP differ
  • DATE_FORMAT, NOW, CURDATE and extracting date parts
  • DATE_ADD, DATEDIFF and TIMESTAMPDIFF
  • CASE, IF, COALESCE and NULLIF
  • Lab: a weekly sales report and order ageing

Section 8: Lab: CTEs and Recursive CTEs

  • WITH to break complex queries into readable steps
  • Chaining several CTEs
  • Recursive CTEs for hierarchical data
  • Generate a continuous date series so reports have no missing days
  • Lab: a multi-level product category tree

Section 9: Lab: Window Functions

  • OVER, PARTITION BY and ORDER BY
  • ROW_NUMBER, RANK and DENSE_RANK
  • LAG and LEAD for comparing with the previous row
  • Running totals and moving averages with window frames
  • Lab: rank best-selling products in each category and compare with last month

Section 10: Lab: JSON Data in MariaDB

  • Store JSON in a column and validate the data
  • JSON_VALUE, JSON_EXTRACT and JSON_OBJECT
  • Turn JSON into rows with JSON_TABLE
  • When to use JSON and when to split data into columns
  • Lab: search products by attributes stored as JSON
Day 3 Creating Tables, Managing Data and Transactions

Section 11: Lab: Creating Databases and Tables

  • CREATE DATABASE with the utf8mb4 character set
  • Choose data types: numbers, text, dates and UUID
  • AUTO_INCREMENT compared with sequences
  • ALTER TABLE to add, change and drop columns, with SHOW CREATE TABLE
  • Copy, rename and drop tables, and temporary tables

Section 12: Lab: Constraints and Data Integrity

  • Primary keys, UNIQUE, NOT NULL and DEFAULT
  • Foreign keys with ON DELETE and ON UPDATE
  • CHECK constraints for business rules
  • Generated columns for values calculated from other columns
  • Lab: design an orders table that blocks bad data from the start

Section 13: Lab: Indexes, EXPLAIN and Views

  • What an index is, and creating, reviewing and dropping indexes
  • Composite indexes and column order
  • Read EXPLAIN output to see whether a query uses an index
  • Create views, view restrictions and dropping views
  • Lab: speed up a sales report query and hide its complexity behind a view

Section 14: Lab: Managing Data and Transactions

  • Multi-row INSERT, INSERT ... SELECT and INSERT ... RETURNING
  • REPLACE and INSERT ... ON DUPLICATE KEY UPDATE
  • UPDATE, DELETE ... RETURNING and TRUNCATE
  • COMMIT, ROLLBACK, SAVEPOINT and implicit commits
  • Lab: record an order and reduce stock in a single transaction

Section 15: Workshop: Answering Business Questions with SQL

  • Take business questions from the sales and stock teams
  • Write queries with joins, CTEs and window functions to answer them
  • Use an AI assistant to draft SQL, then check the results against real data
  • Create a read-only user with GRANT for the analysis team
  • Present the results and wrap up with good SQL writing practice

Schedule & training options

For individuals — public rounds

No public rounds are open right now. Join the waiting list and we will contact you first when the next round opens, or ask us on LINE. Or call 02-570-8449 or 088-807-9770

For organisations — in-house / private

  • Tailor the content to your team’s tools and projects
  • Your dates, at your office or live online
  • Quotation with tax ID for procurement
Corporate training quote

Instructors

Frequently asked questions

What is the difference between WHERE and HAVING in SQL?

WHERE filters rows before grouping, so it works on individual row values but cannot use aggregate functions such as SUM or COUNT. HAVING filters after GROUP BY, so it can test each group's totals. For example, WHERE status = 'paid' keeps only paid orders, then GROUP BY customer_id with HAVING SUM(amount) > 10000 keeps only customers whose total exceeds the threshold.

What are window functions in MariaDB used for, and how do they differ from GROUP BY?

GROUP BY collapses many rows into one per group, while a window function calculates across rows and keeps every row. That makes it ideal for ranking with ROW_NUMBER or RANK, comparing with the previous row using LAG, and running totals such as SUM(amount) OVER (PARTITION BY customer_id ORDER BY order_date). Note that you cannot use a window function in WHERE; calculate it in a subquery or CTE first, then filter the result.

What is a view in MariaDB, and how does it differ from a table?

A view is a saved query given a name so it can be used like a table, created with CREATE VIEW name AS SELECT. It stores no data itself: each time you query it, it reads the latest data from the underlying tables, whereas a table holds data on disk. Views hide complex queries and can limit users to certain columns or rows. Only simple views can be used to update data.

Who is the SQL Essentials with MariaDB course for, and what should I know beforehand?

It suits people starting a database career, developers who use MariaDB or MySQL, data analysts who pull data themselves and administrators who want a solid SQL foundation. You should understand tables, rows and columns. No programming or previous MariaDB experience is needed, and you need a laptop that can run Docker Desktop.

What will I be able to do after the SQL Essentials with MariaDB course?

You will be able to install MariaDB with Docker, write SELECT queries with conditions and grouping, use joins and subqueries, apply string, numeric and date functions, write CTEs and window functions, read JSON data, create and alter tables, constraints, indexes and views, and insert, update and delete data with RETURNING and transactions using COMMIT, ROLLBACK and SAVEPOINT. Participants who complete the training receive a Certificate of Completion with its own number, which can be verified online.

Can the SQL Essentials with MariaDB course be run in-house for our team?

Yes. It can be run in-house for your team, with examples adapted to your own work, such as writing queries against table structures similar to the systems your team uses. You can request a quotation from this page, or contact us on LINE @itgenius or by phone on 02-570-8449.

Related articles

Articles are published in Thai.