dal 2015 - visita n. 961
Tabelle temporanee e cloni
Tabelle temporanee e cloni

 

Tabelle temporanee

Le tabelle temporanee tornano molto utili quando serve memorizzare dei dati temporaneamente, e la cosa più importante è che esse verranno eliminate al termine della sessione client corrente.

Le tabelle temporanee sono stati aggiunte con la versione 3.23 di MySQL. Con le versioni precedenti di MySQL si utilizzavano le tabelle heap.

Come affermato in precedenza, le tabelle temporanee dureranno solo fino a quando è attiva la sessione. Se si esegue il codice in uno script PHP, la tabella temporanea verrà distrutta automaticamente quando lo script terminerà la sua esecuzione. Quindi se si è connessi al server MySQL attraverso un programma client, la tabella temporanea esisterà finché non si chiuderà il client o fin quando non verrà distrutta intenzionalmente.

Esempio

Ecco un esempio che mostra come usare una tabella temporanea. Lo stesso codice potrà essere utilizzato in uno script PHP tramite la funzione mysql_query().

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
    -> ('carote', 100.25, 90, 2);

mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| carote       |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.02 sec)

Quando si invia il comando SHOW TABLES la tabella temporanea non viene inclusa nell'elenco. Poi quando si esce dalla sessione MySQL e si emette il comando SELECT, non si troveranno più i dati disponibili nella banca dati. Neanche la tabella temporanea esisterà più.


Eliminazione di tabelle temporanee

Per impostazione predefinita, tutte le tabelle temporanee vengono eliminate da MySQL quando la connessione al database viene interrotta, ma se si desidera eliminarle esplicitamente lo si può fare con il comando DROP TABLE.

Ecco un esempio su come fare:

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
    -> ('carote', 100.25, 90, 2);

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


Tabelle cloni

Possono esserci delle situazioni in cui si ha bisogno di una copia esatta di una tabella e la sequenza CREATE TABLE ... SELECT non può raggiungere pienamente gli obiettivi in quanto la copia deve includere gli stessi indici, i valori di default, e così via.

Il problema si risolve allora così in 3 fasi:

Esempio

Provare a clonare la tabella dbprova_tbl.

Abbiamo finalmente ottenuto la copia esatta della tabella originale.


















Introduzione
Installazione
Amministrazione
MySQL e PHP
Gestione database
Tipi di dati
Gestione tabelle
Query insert
Query select
Query update e delete
Clausola where
Clausola like e regexp
Clausola order by
Clausola join
Il valore NULL
Le transazioni
Il comando ALTER
Gli indici
Tabelle temporanee e cloni
Info sul database
Generazione di sequenze
Gestione dei duplicati
Iniezione di codice SQL
Export / Import



Labile e' il ricordo dei benefici ricevuti; tenace quello delle ingiurie.
Seneca

Valid CSS!
pagina generata in 0.001 secondi