Comment créer une table temporaire en SQL
Introduction aux tables temporaires
- La table temporaire est une table utilisée pour stocker des données temporaires pouvant être utilisées ultérieurement dans la même session client.
- Par défaut, la table temporaire est supprimée une fois la session client terminée.
- La table temporaire peut être supprimée explicitement à l'aide de l'instruction "DROP TABLE". Ce tableau n'est accessible qu'à son créateur.
- Plusieurs tables temporaires peuvent exister dans la même session, mais elles doivent contenir des noms différents si elles se trouvent dans la même session. Mais si les tables temporaires sont dans une session différente, alors les tables peuvent exister avec les mêmes noms.
- Les tables temporaires peuvent avoir le même nom que les tables normales dans la même base de données. Si une telle condition existe, après la création de la table temporaire, toutes les requêtes exécutées feront désormais référence à la table temporaire au lieu de la table normale. Mais une fois que cette table temporaire créée avec le même nom est supprimée, la table normale est accessible et maintenant les requêtes feront référence à la table normale.
- Créer une table temporaire
Syntaxe :
CREATE TEMPORARY TABLE TABLENAME (type de données nom_colonne1 (taille), type de données nom_colonne2 (taille), type de données nom_colonneN (taille) );
Exemple :
Nous avons déjà une base de données avec le nom "employeedb" et une table avec le nom "employee" dans cette base de données. Nous allons maintenant créer une table temporaire avec le même nom "employé".
mysql> USE employeedb; Database changed mysql> CREATE TEMPORARY TABLE employee(Emp_ID INT, Emp_Name VARCHAR(20),Emp_Salary INT); Query OK, 0 rows affected (0.32 sec) mysql> SELECT *FROM employee; Empty set (0.00 sec) mysql> INSERT INTO employee VALUES(1,"Mayuri",45000); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO employee VALUES(2,"Sakshi",50000); Query OK, 1 row affected (0.04 sec) mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 45000 | | 2 | Sakshi | 50000 | +--------+----------+------------+ 2 rows in set (0.00 sec)
- Nous avons maintenant créé une nouvelle table nommée "employee" dans la base de données "employeedb".
- Ainsi, juste après la création de la table temporaire lorsque nous essayons de récupérer les données de la table des employés, nous avons obtenu un ensemble de résultats vide. Cela se produit car la table des employés spécifiée dans la requête SELECT fait désormais référence à la table temporaire nouvellement créée « employé » et non à la table existante « employé ».
- Après cela, lorsque nous avons exécuté la requête INSERT sur la table des employés, cette requête est également exécutée sur la table temporaire "employé" car nous exécutons cette requête après la création de la table temporaire.
- Supprimer une table temporaire
Syntaxe :
DROP TABLE TABLENAME;
Exemple :
Nous allons maintenant supprimer une table temporaire nommée "employé".
mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 45000 | | 2 | Sakshi | 50000 | +--------+----------+------------+ 2 rows in set (0.00 sec) mysql> DROP TABLE employee; Query OK, 0 rows affected (0.08 sec) mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 40000 | | 2 | Mayuri | 40000 | | 3 | Mayuri | 40000 | | 4 | Mayuri | 40000 | | 5 | Mayuri | 40000 | +--------+----------+------------+ 5 rows in set (0.09 sec)
- Lorsque nous exécutons la requête SELECT, nous obtenons deux enregistrements en sortie car nous avons exécuté cette requête après la création de la table temporaire. Ainsi, cette requête SELECT est opérée sur la table temporaire.
- Après cela, nous avons exécuté la requête drop. À l'aide de la commande DROP, la table des employés nouvellement créée (table temporaire) sera supprimée.
- Encore une fois, lorsque nous exécutons la requête SELECT, elle sera désormais opérée sur notre table des employés (table d'origine) et non sur la table temporaire car la table temporaire est déjà supprimée de la base de données.