MySQL - Tabelle temporanee

Le tabelle temporanee potrebbero essere molto utili in alcuni casi per conservare i dati temporanei. La cosa più importante che dovrebbe essere nota per le tabelle temporanee è che verranno eliminate al termine della sessione client corrente.

Cosa sono le tabelle temporanee?

Le tabelle temporanee sono state aggiunte nella versione 3.23 di MySQL. Se usi una versione precedente di MySQL alla 3.23, non puoi usare le tabelle temporanee, ma puoi usareHeap Tables.

Come affermato in precedenza, le tabelle temporanee dureranno solo finché la sessione è attiva. Se esegui il codice in uno script PHP, la tabella temporanea verrà distrutta automaticamente al termine dell'esecuzione dello script. Se sei connesso al server di database MySQL tramite il programma client MySQL, la tabella temporanea esisterà fino a quando non chiuderai il client o distruggerai manualmente la tabella.

Esempio

Il seguente programma è un esempio che mostra l'utilizzo della tabella temporanea. Lo stesso codice può essere utilizzato negli script PHP utilizzando l'estensionemysql_query() funzione.

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)

Quando emetti un file SHOW TABLEScomando, quindi la tua tabella temporanea non sarebbe elencata nell'elenco. Ora, se ti disconnetti dalla sessione MySQL e poi emetti un fileSELECTcomando, quindi non troverai dati disponibili nel database. Anche la tua tabella temporanea non esisterà.

Eliminazione di tabelle temporanee

Per impostazione predefinita, tutte le tabelle temporanee vengono eliminate da MySQL quando la connessione al database viene terminata. Tuttavia, se desideri eliminarli nel mezzo, lo fai emettendo ilDROP TABLE comando.

Il seguente programma è un esempio su come eliminare una tabella temporanea:

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