SQL - Tables temporaires

Que sont les tables temporaires?

Il existe des SGBDR, qui prennent en charge les tables temporaires. Les tables temporaires sont une fonctionnalité intéressante qui vous permetstore and process intermediate results en utilisant les mêmes fonctionnalités de sélection, de mise à jour et de jointure que vous pouvez utiliser avec les tables SQL Server classiques.

Les tables temporaires peuvent être très utiles dans certains cas pour conserver des données temporaires. La chose la plus importante à savoir pour les tables temporaires est qu'elles seront supprimées à la fin de la session cliente en cours.

Les tables temporaires sont disponibles à partir de MySQL version 3.23. Si vous utilisez une version plus ancienne de MySQL que la 3.23, vous ne pouvez pas utiliser de tables temporaires, mais vous pouvez utiliserheap tables.

Comme indiqué précédemment, les tables temporaires ne dureront que tant que la session est active. Si vous exécutez le code dans un script PHP, la table temporaire sera détruite automatiquement lorsque le script aura fini de s'exécuter. Si vous êtes connecté au serveur de base de données MySQL via le programme client MySQL, la table temporaire existera jusqu'à ce que vous fermiez le client ou détruisiez manuellement la table.

Exemple

Voici un exemple vous montrant l'utilisation d'une table temporaire.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

Lorsque vous émettez une commande SHOW TABLES, votre table temporaire ne sera pas répertoriée dans la liste. Désormais, si vous vous déconnectez de la session MySQL, puis émettez une commande SELECT, vous ne trouverez aucune donnée disponible dans la base de données. Même votre table temporaire n'existera pas.

Suppression de tables temporaires

Par défaut, toutes les tables temporaires sont supprimées par MySQL lorsque votre connexion à la base de données est interrompue. Si vous souhaitez les supprimer entre les deux, vous pouvez le faire en émettant unDROP TABLE commander.

Voici un exemple de suppression d'une table temporaire.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE SALESSUMMARY;
mysql>  SELECT * FROM SALESSUMMARY;
ERROR 1146: Table 'TUTORIALS.SALESSUMMARY' doesn't exist