What is MySQL?
The world's most-deployed open-source relational database.
MySQL is an open-source Relational Database Management System (RDBMS) that stores data in structured tables and speaks the SQL language. Originally released in 1995 by MySQL AB (Sweden), today it is owned by Oracle and powers a staggering chunk of the public internet — WordPress, Facebook, YouTube, Booking.com, and Shopify all run MySQL (or its drop-in fork, MariaDB) at scale.
Under the hood MySQL is a long-running server process (mysqld) that accepts TCP connections (default port 3306). Each client connection sends SQL strings; the server parses them, builds an execution plan, runs the plan against the chosen storage engine (usually InnoDB), and streams rows back. Because the engine layer is pluggable, MySQL can mix transactional tables (InnoDB), in-memory tables (MEMORY), and archive tables (ARCHIVE) inside the same schema.
sqlSELECT VERSION();
(Run in MySQL Workbench or `mysql` CLI — values depend on your data.)
MySQL is the default first database every backend engineer learns. Knowing it cold unlocks 80% of web-stack jobs (LAMP, LEMP, MERN with MySQL replacing Mongo). Every cloud provider ships a managed MySQL — AWS RDS, Google Cloud SQL, Azure Database for MySQL — so the skills travel with you everywhere.
- MySQL is a product; SQL is the language it speaks — don't confuse the two.
- Default storage engine is InnoDB (since 5.5) — full ACID + row-level locking + foreign keys.
- Connects over TCP/3306 — every client (CLI, Workbench, Python, Node) speaks the same wire protocol.
- Open-source Community Edition is free forever; Oracle sells an Enterprise tier with extra tools.
- MariaDB is a popular community fork — drop-in compatible for almost every workload.
- Run
SELECT VERSION();on any MySQL server — note the major.minor.patch. - Open MySQL Workbench, connect to localhost, list databases via
SHOW DATABASES;. - Spin up a free MySQL on db4free.net or PlanetScale and create your first database.
- Always run
SHOW ENGINE INNODB STATUS\Gwhen debugging a deadlock — it dumps the offending transactions. - Use
mysqlsh(MySQL Shell) for serious work — it supports SQL, JavaScript, and Python modes in one terminal. - Pin your server's character set to
utf8mb4at install time — the legacyutf8only stores 3-byte chars (no emoji).
Run any SELECT, INSERT, JOIN or GROUP BY against the seeded users · products · orders tables — your changes are sandboxed and reset whenever you click Reset DB.
// see seed schema (3 tables · 8 users · 8 products · 12 orders)
users (id, name, email, country, age, created_at) products (id, name, price, stock, category) orders (id, user_id → users.id, product_id → products.id, qty, total, created_at)
Each challenge is auto-graded — write the SQL, click Submit answer, and we'll compare your result-set to the canonical one.
Quick recap quiz?
We'll generate 5 MCQs from this lesson and check your understanding instantly. Takes ~30 seconds.
