MySQL - tabele tymczasowe
Tabele tymczasowe mogą być bardzo przydatne w niektórych przypadkach do przechowywania danych tymczasowych. Najważniejszą rzeczą, o której należy wiedzieć w przypadku tabel tymczasowych, jest to, że zostaną one usunięte po zakończeniu bieżącej sesji klienta.
Co to są tabele tymczasowe?
Tabele tymczasowe zostały dodane w MySQL w wersji 3.23. Jeśli używasz starszej wersji MySQL niż 3.23, nie możesz używać tabel tymczasowych, ale możesz użyćHeap Tables.
Jak wspomniano wcześniej, tymczasowe tabele będą działać tylko tak długo, jak długo trwa sesja. Jeśli uruchomisz kod w skrypcie PHP, tabela tymczasowa zostanie automatycznie zniszczona po zakończeniu wykonywania skryptu. Jeśli łączysz się z serwerem bazy danych MySQL za pośrednictwem programu klienta MySQL, tabela tymczasowa będzie istnieć do momentu zamknięcia klienta lub ręcznego zniszczenia tabeli.
Przykład
Poniższy program jest przykładem pokazującym użycie tabeli tymczasowej. Ten sam kod może być używany w skryptach PHP przy użyciu rozszerzeniamysql_query() funkcjonować.
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)
Kiedy wydajesz SHOW TABLESpolecenie, twoja tymczasowa tabela nie zostanie wymieniona na liście. Teraz, jeśli wylogujesz się z sesji MySQL, a następnie wydasz plikSELECTpolecenie, to nie znajdziesz żadnych danych dostępnych w bazie danych. Nawet twój tymczasowy stół nie będzie istniał.
Upuszczanie tabel tymczasowych
Domyślnie wszystkie tabele tymczasowe są usuwane przez MySQL po zakończeniu połączenia z bazą danych. Jeśli jednak chcesz je usunąć w międzyczasie, możesz to zrobić, wydając plikDROP TABLE Komenda.
Poniższy program jest przykładem usuwania tymczasowej tabeli -
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