MySQL - Versions

Bonjour, futurs passionnés de bases de données ! Je suis ravi de vous guider à travers le monde passionnant des versions de MySQL. En tant qu'enseignant en informatique de quartier expérimenté, je m'assurerai que nous naviguons dans ce sujet avec facilité et amusement. Alors, prenez vos cahiers virtuels, et plongeons dedans !

MySQL - Versions

Versions de MySQL

MySQL, comme un bon vin, s'améliore avec l'âge. Depuis sa création en 1995, il a subi de nombreuses mises à jour et améliorations. prenons un rapide voyage à travers quelques-unes des versions majeures :

MySQL 3.23 (2001)

Cette version a été un véritable jeu-changer, introduisant des fonctionnalités telles que :

  • L'indexation full-text
  • La réplication
  • Le cache de requêtes

MySQL 4.0 (2003)

Cette version a apporté des ajouts passionnants :

  • Les requêtes UNION
  • Les sous-requêtes
  • Les fonctions GIS

MySQL 5.0 (2005)

Une étape majeure, introduisant :

  • Les procédures stockées
  • Les vues
  • Les déclencheurs

MySQL 5.5 (2010)

Cette version s'est concentrée sur les améliorations des performances :

  • InnoDB comme moteur de stockage par défaut
  • La réplication semi-synchrone

MySQL 5.6 (2013)

Améliorant les performances et la scalabilité :

  • Les opérations DDL en ligne
  • Les performances améliorées de la réplication

MySQL 5.7 (2015)

Une mise à jour significative avec :

  • Le support JSON
  • Les fonctionnalités de sécurité améliorées
  • Les améliorations du schéma de performance

MySQL 8.0 (2018)

La dernière version majeure, que nous explorerons en plus de détails prochaînement !

Fonctionnalités Ajoutées dans MySQL 8.0

MySQL 8.0 est comme le super-héros des versions de bases de données, rempli de nouveaux pouvoirs et capacités. Explorons quelques-unes de ses fonctionnalités les plus impressionnantes :

1. Dépôt de Documents

MySQL prend maintenant en charge le stockage et la requête de documents JSON, le rendant hybride entre une base de données relationnelle et documentaire. Voici un exemple simple :

CREATE TABLE products (
id INT PRIMARY KEY,
details JSON
);

INSERT INTO products VALUES (1, '{"name": "Laptop", "price": 999.99, "specs": {"RAM": "16GB", "CPU": "i7"}}');

SELECT JSON_EXTRACT(details, '$.name') AS product_name
FROM products
WHERE JSON_EXTRACT(details, '$.price') < 1000;

Ce code crée une table avec une colonne JSON, insère un produit avec des détails imbriqués, puis le requête en fonction d'une propriété JSON.

2. Fonctions Fenêtres

Les fonctions fenêtres vous permettent d'effectuer des calculs sur un ensemble de lignes liées à la ligne actuelle. Voici un exemple :

SELECT
product_name,
category,
price,
AVG(price) OVER (PARTITION BY category) AS avg_category_price
FROM products;

Cette requête calcule le prix moyen pour chaque catégorie à côté des prix individuels des produits.

3. Expressions de Table Communes (CTE)

Les CTE rendent les requêtes complexes plus lisibles. Voici un exemple simple :

WITH high_value_customers AS (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 10000
)
SELECT c.name, c.email
FROM customers c
JOIN high_value_customers hvc ON c.id = hvc.customer_id;

Cette requête definit d'abord une CTE pour les clients à haute valeur, puis l'utilise dans la requête principale.

4. Indexes Invisible

Vous pouvez maintenant rendre des indexes invisibles à des fins de test :

ALTER TABLE customers ALTER INDEX idx_email INVISIBLE;

Cela vous permet de tester l'impact d'un index sans le supprimer physiquement.

5. Rôles SQL Améliorés

MySQL 8.0 introduit un contrôle d'accès basé sur des rôles plus robuste :

CREATE ROLE 'app_developer', 'app_read', 'app_write';

GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';

GRANT 'app_read', 'app_write' TO 'app_developer';

CREATE USER 'jane'@'localhost' IDENTIFIED BY 'password123';
GRANT 'app_developer' TO 'jane'@'localhost';

Cet exemple crée des rôles avec différents permissions et les attribue à un utilisateur.

Fonctionnalités Dépréciées dans MySQL 8.0

Alors que MySQL évolue, certaines fonctionnalités deviennent obsolètes. C'est comme nettoyer votre placard - parfois, vous devez faire de la place pour les nouvelles choses ! Voici quelques fonctionnalités dépréciées dans MySQL 8.0 :

Fonctionnalité Dépréciée Remplacement/Alternative
Option --skip-symbolic-links --skip-symlink
Fonction ENCRYPT() Utilisez AES_ENCRYPT()
Fonctions DES_ENCRYPT() et DES_DECRYPT() Utilisez AES_ENCRYPT() et AES_DECRYPT()
Fonction FOUND_ROWS() Utilisez la clause SELECT avec LIMIT
SQL_CALC_FOUND_ROWS Utilisez SELECT COUNT(*)

Rappelez-vous, "déprécié" ne signifie pas que ces fonctionnalités ont disparu du jour au lendemain. C'est plutôt un avertissement amical qu'elles pourraient ne pas être disponibles dans les versions futures, il est donc préférable de commencer à utiliser les alternatives.

En conclusion, MySQL 8.0 est comme un couteau suisse pour la gestion des bases de données - rempli d'outils puissants tout en simplifiant certains des anciens. Comme vous continuez votre voyage avec MySQL, souvenez-vous que chaque version apporte de nouvelles possibilités et améliorations. Restez curieux, continuez à expérimenter, et surtout, amusez-vous avec vos bases de données !

Credits: Image by storyset