What's New in MySQL 8.4 & 9.7 LTS
MySQL version numbers confuse many learners. Job posts mention 8.0, hosting panels offer 8.4, the newest downloads say 9.7, and there is now a release called 26.7.0. Which one should you learn, and which one should a new project use?
This lesson explains how MySQL releases work today, what happened to MySQL 8.0, what the two current long-term support versions are, and which modern features you can rely on in every supported version. The good news first: everything in this course works on all of them.
Two kinds of releases: LTS and Innovation
Oracle now publishes MySQL in two tracks:
- LTS (Long-Term Support) releases are for production systems. Once an LTS line is out, it receives bug fixes and security fixes but its behaviour stays stable, so your application keeps working after every update.
- Innovation releases bring new features sooner. They are for developers who want to try what is coming, and for teams that are happy to upgrade often.
Think of LTS as the dependable family car and Innovation as the test drive of next year's model. Most businesses, colleges and hosting companies run an LTS version.
The versions you will meet
| Version | Type | Released | Status in late 2026 |
|---|---|---|---|
| MySQL 8.0 | Older series | 2018 | End of life since April 2026: no more fixes |
| MySQL 8.4 | LTS | April 2024 | Supported |
| MySQL 9.7 | LTS | April 2026 | Supported; the newest LTS |
| MySQL 26.7.0 | Innovation | July 2026 | Newest features |
Innovation releases now use calendar versions: the number tells you when the release came out. 26.7.0 was released in July 2026, so read it as "year 26, month 7". This makes it easy to see how recent a release is at a glance.
MySQL 8.0 has reached end of life
MySQL 8.0 was the version most tutorials and servers used for years, and it introduced most of the modern SQL you have learned in this course. Its life ended in April 2026. End of life means no more bug fixes and, most importantly, no more security fixes. A server still running 8.0 will stay exposed to every security problem found from now on.
If you run or inherit a MySQL 8.0 server, plan an upgrade to 8.4 LTS or 9.7 LTS. A safe upgrade follows a simple routine:
- Take a full backup and test that it restores (see Users, Privileges & Backups).
- Read the official release notes for the version you are moving to, looking for removed or changed features.
- Restore a copy of the data on the new version and run your application's important pages and reports against it.
- Check that your application's database driver or connector supports the new server.
- Upgrade production at a quiet time, with the backup ready.
Which version should you use?
| Situation | Choose |
|---|---|
| Starting a new production project | MySQL 9.7 LTS |
| Your host or company standardises on 8.4 | MySQL 8.4 LTS (fully supported) |
| Still on MySQL 8.0 | Upgrade to 8.4 or 9.7 LTS |
| You want to try the newest features | The latest Innovation release, on a test machine |
| Learning on XAMPP | Its bundled MariaDB is fine for this course |
To see which version a server runs, ask it:
SELECT VERSION();It returns a version string such as 8.4.x or 9.7.x. On XAMPP you will see a MariaDB version instead.
Modern SQL you can rely on
Because every supported MySQL version is now 8.4 or newer, features that were once "new in MySQL 8" are simply standard. You can use them freely in new projects:
- Window functions such as
RANK()and running totals withSUM() OVER. - Common Table Expressions, including recursive ones.
CHECKconstraints that are actually enforced (since 8.0.16), see Constraints & Keys.INTERSECTandEXCEPT(since 8.0.31), see UNION.utf8mb4as the default character set, with theutf8mb4_0900_ai_cicollation.- InnoDB as the default engine, with transactions and foreign keys.
Older tutorials written for MySQL 5.7 work around the missing features with user variables, self-joins and long subqueries. You no longer need those tricks. This query combines a CTE and a window function to rank cities by revenue, something that was awkward to write before MySQL 8:
WITH city_sales AS (
SELECT c.city, SUM(oi.quantity * oi.unit_price) AS revenue
FROM customers c
JOIN orders o ON o.customer_id = c.customer_id
JOIN order_items oi ON oi.order_id = o.order_id
WHERE o.status <> 'cancelled'
GROUP BY c.city
)
SELECT city, revenue,
RANK() OVER (ORDER BY revenue DESC) AS rank_no
FROM city_sales
ORDER BY rank_no, city
LIMIT 5;city | revenue | rank_no ---------+---------+-------- Delhi | 32797 | 1 Rohtak | 19242 | 2 Jaipur | 16899 | 3 Mumbai | 14397 | 4 Gurugram | 8695 | 5 (5 rows)
And EXCEPT answers "which states have customers but no delivered order yet?" in one short statement:
SELECT state FROM customers
EXCEPT
SELECT c.state
FROM customers c
JOIN orders o ON o.customer_id = c.customer_id
WHERE o.status = 'delivered'
ORDER BY state;state ---------- Tamil Nadu Telangana (2 rows)
The VECTOR data type
The biggest new data type in the 9.x series is VECTOR. A vector is a list of numbers. AI models turn text, images or products into such lists, called embeddings, so that similar things have similar numbers. Storing embeddings next to your normal data lets an application find, for example, products similar to the one a customer is viewing.
CREATE TABLE product_embeddings (
product_id INT PRIMARY KEY,
embedding VECTOR(768) NOT NULL,
FOREIGN KEY (product_id) REFERENCES products (product_id)
);The number in brackets is how many values each vector holds, which depends on the AI model you use. You do not need vectors for ordinary business databases, but it is useful to know the type exists when you start building AI features.
Key points
- MySQL has LTS releases for stable production use and Innovation releases for new features.
- The current LTS versions are MySQL 8.4 (April 2024) and MySQL 9.7 (April 2026).
- MySQL 8.0 reached end of life in April 2026; servers on it should be upgraded.
- Innovation releases use calendar versions: 26.7.0 came out in July 2026.
- Window functions, CTEs, enforced
CHECK,INTERSECT/EXCEPTandutf8mb4work on every supported version. - MySQL 9.x added a
VECTORtype for AI embeddings; XAMPP's MariaDB is a close relative, not the same product.
Exercise
Your company's server reports version 8.0. Write a short upgrade plan of four or five steps for moving the shop database to MySQL 9.7 LTS, including the exact mysqldump command you would use for the backup and the query you would run afterwards to confirm the new version.
Show solution
mysqldump -u root -p --single-transaction --routines shop > shop-before-upgrade.sqlSELECT VERSION();A good plan: (1) back up with the mysqldump command above and test the restore on another machine; (2) read the 9.7 release notes for removed or changed features; (3) restore the copy on a 9.7 test server and run the important pages and reports; (4) confirm the application's database driver supports 9.7; (5) upgrade production at a quiet time and run SELECT VERSION(); to confirm it reports 9.7.
Quick Quiz
1. Which MySQL release type is meant for stable production systems?
LTS lines get bug and security fixes while keeping their behaviour stable.
2. What does the Innovation release number 26.7.0 tell you?
Innovation releases use calendar versions: year 26, month 7.
3. Why should a MySQL 8.0 server be upgraded now?
End of life means newly found security problems will never be fixed.
4. What is the VECTOR data type in MySQL 9.x used for?
Embeddings let applications find similar items, such as related products.
Learn SQL with a mentor
Free lessons get you started. Our PHP & MySQL Development training adds real projects and code reviews from working developers.
- Project-based learning
- Mentor code reviews
- Free counselling call
