Tables temporaires MySQL et données de session

MySQLBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à travailler avec les tables temporaires dans MySQL, en vous concentrant sur leur création et leur utilisation au sein d'une seule session. Vous commencerez par vous connecter au serveur MySQL et créer une table temporaire nommée temp_employees.

Tout au long du laboratoire, vous insérerez des données dans cette table, vous l'interrogerez pour récupérer des informations et explorerez sa portée spécifique à la session en essayant d'y accéder depuis une session différente. Enfin, vous apprendrez comment supprimer explicitement une table temporaire et comprendrez son processus de nettoyage automatique. Ce laboratoire vous donnera une compréhension pratique de la manière dont les tables temporaires peuvent être utilisées pour la manipulation de données spécifiques à la session.

Se connecter à MySQL et créer une table temporaire

Dans cette étape, vous allez vous connecter au serveur MySQL et créer votre première table temporaire. Les tables temporaires sont des tables spéciales qui n'existent que pendant la durée d'une seule session client. Elles sont automatiquement supprimées à la fin de la session, ce qui les rend utiles pour stocker des résultats intermédiaires ou des données qui ne sont nécessaires que pendant une courte période.

Tout d'abord, ouvrez un terminal dans la VM LabEx. Connectez-vous au serveur MySQL en tant qu'utilisateur root en utilisant la commande suivante.

sudo mysql -u root

Après avoir exécuté la commande, vous devriez voir l'invite MySQL, qui ressemble à mysql>. Cela indique que vous êtes connecté avec succès au serveur MySQL et que vous pouvez maintenant exécuter des commandes SQL.

Avant de créer la table, vous devez sélectionner une base de données. Nous utiliserons la base de données test, qui est disponible par défaut pour les tests. Si elle n'existe pas, la commande suivante la créera.

CREATE DATABASE IF NOT EXISTS test;
USE test;

Ensuite, créez une table temporaire nommée temp_employees. La syntaxe est similaire à la création d'une table régulière, mais vous devez inclure le mot-clé TEMPORARY.

Exécutez la commande SQL suivante dans l'invite mysql> :

CREATE TEMPORARY TABLE temp_employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    department VARCHAR(255)
);

Cette commande crée une table temporaire avec trois colonnes :

  • id : un entier qui sert de clé primaire et s'incrémente automatiquement pour chaque nouvelle ligne.
  • name : une chaîne de caractères (jusqu'à 255 caractères) pour stocker le nom d'un employé.
  • department : une chaîne de caractères (jusqu'à 255 caractères) pour stocker le département d'un employé.

Pour confirmer que la table temporaire a été créée avec succès dans votre session actuelle, utilisez la commande DESCRIBE.

DESCRIBE temp_employees;

La sortie affichera la structure de la table temp_employees, confirmant ses colonnes et ses types de données :

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | YES  |     | NULL    |                |
| department | varchar(255) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Cette sortie confirme que la table temp_employees est prête à être utilisée dans votre session MySQL actuelle.

Insérer et interroger des données dans la table temporaire

Maintenant que vous avez créé la table temp_employees, vous pouvez interagir avec elle comme avec une table régulière. Dans cette étape, vous y insérerez des données, puis vous interrogerez ces données.

Vous devriez toujours être dans la session MySQL de l'étape précédente, avec l'invite mysql> visible.

Insérons quelques lignes de données dans la table temp_employees en utilisant l'instruction INSERT INTO. Exécutez ces commandes une par une :

INSERT INTO temp_employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Charlie Brown', 'IT');

Ces commandes ajoutent trois enregistrements d'employés à votre table temporaire.

Pour visualiser les données que vous venez d'insérer, utilisez l'instruction SELECT. L'astérisque (*) est un caractère générique qui signifie "toutes les colonnes".

SELECT * FROM temp_employees;

Cette commande récupère toutes les colonnes et toutes les lignes de la table temp_employees. La sortie devrait afficher les données que vous avez insérées :

+----+---------------+------------+
| id | name          | department |
+----+---------------+------------+
|  1 | Alice Smith   | Sales      |
|  2 | Bob Johnson   | Marketing  |
|  3 | Charlie Brown | IT         |
+----+---------------+------------+
3 rows in set (0.00 sec)

Vous pouvez également filtrer les résultats en utilisant une clause WHERE. Par exemple, pour ne trouver que les employés du département 'IT', exécutez la requête suivante :

SELECT name FROM temp_employees WHERE department = 'IT';

La sortie affichera uniquement le nom de l'employé qui correspond à la condition :

+---------------+
| name          |
+---------------+
| Charlie Brown |
+---------------+
1 row in set (0.00 sec)

Cela démontre que les opérations standard de manipulation et d'interrogation de données fonctionnent comme prévu sur les tables temporaires.

Comprendre la portée des tables temporaires

Une caractéristique clé des tables temporaires est leur portée spécifique à la session. Cela signifie qu'une table temporaire créée dans une session MySQL n'est pas visible ou accessible dans une autre, même si les deux sessions sont connectées à la même base de données. Cette étape démontrera ce comportement.

Gardez votre session MySQL actuelle ouverte dans la première fenêtre de terminal.

Maintenant, ouvrez une nouvelle fenêtre de terminal. Vous pouvez le faire en cliquant avec le bouton droit de la souris sur le fond d'écran et en sélectionnant "Ouvrir un terminal ici".

Dans ce nouveau terminal, connectez-vous à nouveau au serveur MySQL. Cela créera une deuxième session indépendante.

sudo mysql -u root

Après avoir exécuté la commande, vous devriez voir l'invite MySQL, qui ressemble à mysql>. Cela indique que vous êtes connecté avec succès au serveur MySQL et que vous pouvez maintenant exécuter des commandes SQL.

Ensuite, sélectionnez la base de données test.

USE test;

Vous avez maintenant deux terminaux distincts, chacun avec sa propre session MySQL. Dans cette nouvelle session, essayez d'interroger la table temp_employees que vous avez créée dans la première session :

SELECT * FROM temp_employees;

Vous recevrez un message d'erreur car cette session n'a aucune connaissance de la table temporaire créée dans l'autre session.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Cette erreur confirme que la table temp_employees est isolée à la session dans laquelle elle a été créée. Vous pouvez également essayer de décrire la table, ce qui entraînera la même erreur.

DESCRIBE temp_employees;
ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Ce comportement est fondamental dans le fonctionnement des tables temporaires et c'est ce qui les rend sûres pour stocker des données temporaires sans interférer avec d'autres utilisateurs ou processus.

Vous pouvez maintenant fermer cette nouvelle fenêtre de terminal et retourner à votre terminal d'origine.

Supprimer la table temporaire et terminer la session

Les tables temporaires sont automatiquement supprimées lorsque la session MySQL se termine. Cependant, vous pouvez également en supprimer une explicitement à l'aide de l'instruction DROP TEMPORARY TABLE. C'est une bonne pratique si vous avez terminé d'utiliser la table avant la fin de votre session, car cela libère des ressources.

Vous devriez être de retour dans votre fenêtre de terminal d'origine, où la table temp_employees existe.

Pour supprimer explicitement la table temporaire, utilisez la commande suivante à l'invite mysql> :

DROP TEMPORARY TABLE temp_employees;

Après une suppression réussie, vous verrez un message Query OK. Pour confirmer que la table a été supprimée, essayez de l'interroger à nouveau :

SELECT * FROM temp_employees;

Vous devriez maintenant recevoir l'erreur "Table doesn't exist", confirmant que la table n'est plus disponible dans cette session.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Enfin, pour terminer votre session MySQL, tapez exit et appuyez sur Entrée.

exit

Cela fermera la connexion au serveur MySQL et vous ramènera à l'invite de terminal normale. Si vous n'aviez pas explicitement supprimé la table temporaire, elle aurait été automatiquement supprimée à ce stade.

Résumé

Dans ce laboratoire, vous avez appris les bases du travail avec les tables temporaires dans MySQL. Vous vous êtes connecté avec succès au serveur MySQL, avez créé une table temporaire à l'aide de CREATE TEMPORARY TABLE et l'avez remplie de données à l'aide de INSERT INTO. Vous avez ensuite pratiqué la récupération de ces données avec des requêtes SELECT.

De manière cruciale, vous avez exploré la portée spécifique à la session des tables temporaires en démontrant qu'elles sont invisibles aux autres sessions. Enfin, vous avez appris comment supprimer explicitement une table temporaire avec DROP TEMPORARY TABLE et avez compris qu'elles sont automatiquement nettoyées lorsque la session se termine. Les tables temporaires sont un outil précieux pour gérer les données spécifiques à la session et les résultats intermédiaires dans vos flux de travail de base de données.