MySQL Courses - domflannery/mysql-sandbox GitHub Wiki

MySQL Developer - Querying For Data - $25.99 The course is entirely dedicated to querying for data in MySQL. I've created it for everyone from a developer to QA or even people whose jobs require a little knowledge of MySQL even if it's not a main part of their focus. To make things simpler on the student, I use a custom sandbox that I wrote that makes the setup of MySQL much easier and consistent with what you'll see in the course. If you follow along with the setup of the sandbox and enter them same few commands exactly as I do, then you're setup and configuration will be the same as mine.

After the sandbox is set up, we'll first look at writing your first query to get you familiar with the syntax. Once you've seen the syntax of a MySQL query, we'll quickly start building upon the basic syntax and looking at things like EXPLAIN, which will tell you how the query will perform. We'll discuss comparison operators in MySQL as well as indexes and why they're important. I'll discuss what the information_schema is, how to query it as well as how it can help you get a better understanding of the structure of the database.

We'll then take a look at Subqueries, JOINs and UNIONs in MySQL. We'll discuss what a subquery is, how and when to use it. After that, we'll discuss things such as INNER JOIN, LEFT JOIN and what a STRAIGHT_JOIN is. We'll discuss index hinting and how they can help or hurt your queries. We'll talk about what a derived table is as well as how to avoid writing cartesian joins. After that, we'll discuss what UNIONs are as well as how to write them.

In the section for control flow functions, I'll walk you through how to use conditional logic such as IF(), NULLIF(), IFNULL() and CASE...WHEN...THEN to control the flow of your query. We'll then move on to the section about grouping and aggregating data in MySQL. Grouping and aggregating is essential part of writing report type queries.

Towards the end of the course, we'll discuss lots of different built in functions of MySQL including date/time functions to add and subtract dates, formatting of date and times. We'll also take a look at manipulating dates and times. After that we'll look at string functions to learn how we can join strings together using CONCAT(). We'll learn about comparing strings, replacing strings and modifying strings.

MySQL Replication (Beginner) $25.00 - In the MySQL Replication course, I use my custom sandbox to make it much quicker and easier to setup different virtual servers using Vagrant, VirtualBox and Ansible. It's essential in this course that you follow along with the different setups at the beginning of each section to ensure that you're setup is the exact same as mine.

Once you understand the sandbox, we'll work through the basics of MySQL replication starting with a simple master/slave setup using statement based replication. We'll discuss what asynchronous replication is, we'll briefly go over what the binlogs and relay logs are. We'll take a look at how you can setup different user permissions on a master vs a replica. We'll also discuss things like how a non-deterministic function using statement based replication can cause you different results on your master and replica. We'll finish the section by looking at some examples that can cause things like accidental data drift.

After that, we'll walk through the same setup as before, only this time, we'll use ROW based replication. I do this to show how ROW based replication can be a much better choice if you're concerned about things like non-deterministic functions or accidental data drift. We'll also cover the disadvantages of ROW based replication vs. Statement based replication.

Finally, we'll walk through setting up ROW based replication when the database already has data. We'll learn how to lock the tables, get the backup to restore on the replica as well as starting replication. We'll finish this section and the course by taking a deep dive into seconds_behind_master and what it truly means. You'll likely be surprised at what you learn in this section and I use tools to demonstrate how network latency can make it look like your replica isn't behind, when in reality it really is.