środa, 19 września 2018

MySQL – tymczasowe tabele

MySQL – tymczasowe tabele

Tabele tymczasowe mogą być bardzo przydatne w niektórych przypadkach do przechowywania tymczasowych danych. Najważniejszą rzeczą, która powinna być znana z tabel tymczasowych, jest to, że zostaną one usunięte po zakończeniu bieżącej sesji klienta.

Czym są tymczasowe tabele?

Tabele tymczasowe zostały dodane w wersji MySQL 3.23. Jeśli używasz starszej wersji MySQL niż 3.23, nie możesz korzystać z tabel tymczasowych, ale możesz użyć Heap Tables.
Jak wspomniano wcześniej, tymczasowe tabele będą obowiązywać tylko tak długo, jak długo sesja będzie żyła. Jeśli uruchomisz kod w skrypcie PHP, tabela tymczasowa zostanie automatycznie zniszczona po zakończeniu wykonywania skryptu. Jeśli jesteś połączony z serwerem baz danych MySQL za pośrednictwem programu klienckiego 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żyty w skryptach PHP przy użyciu funkcji mysql_query().
mysql> CREATE TEMPORARY TABLE PodsumowanieSprzedazy(
   -> nazwa_produktu VARCHAR(50) NOT NULL
   -> , total_sprzedaz DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , srednia_cena DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , sprzedaz_calkowita INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO PodsumowanieSprzedazy
   -> (nazwa_produktu, total_sprzedaz, srednia_cena, sprzedaz_calkowita)
   -> VALUES
   -> ('ogórek', 100.25, 90, 2);

mysql> SELECT * FROM PodsumowanieSprzedazy;
+--------------+-------------+----------------+------------------+
|nazwa_produktu|total_sprzedaz|srednia_cena   |sprzedaz_calkowita|
+--------------+-------------+----------------+------------------+
|   ogórek     |   100.25    |     90.00      |         2        |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

Po wydaniu komendy SHOW TABLES tabela tymczasowa nie będzie wyświetlana na liście. Teraz, jeśli wylogujesz się z sesji MySQL, a następnie wydasz polecenie SELECT, wtedy nie znajdziesz żadnych danych dostępnych w bazie danych. Twoja tabela tymczasowa nie istnieje.

Usuwanie tymczasowych tabel

Domyślnie wszystkie tymczasowe tabele są usuwane przez MySQL po zerwaniu połączenia z bazą danych. Jeśli chcesz je usunąć samodzielnie, robisz to, wydając polecenie DROP TABLE.
Poniższy program jest przykładem na usunięcie tabeli tymczasowej -
mysql> CREATE TEMPORARY TABLE PodsumowanieSprzedazy(
   -> nazwa_produktu VARCHAR(50) NOT NULL
   -> , total_sprzedaz DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , srednia_cena DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , sprzedaz_calkowita INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO PodsumowanieSprzedazy
   -> (nazwa_produktu, total_sprzedaz, srednia_cena, sprzedaz_calkowita)
   -> VALUES
   -> ('ogórek', 100.25, 90, 2);

mysql> SELECT * FROM PodsumowanieSprzedazy;
+--------------+-------------+----------------+------------------+
|nazwa_produktu|total_sprzedaz|srednia_cena   |sprzedaz_calkowita|
+--------------+-------------+----------------+------------------+
|   ogórek     |   100.25    |     90.00      |         2        |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE PodsumowanieSprzedazy;
mysql>  SELECT * FROM PodsumowanieSprzedazy;
ERROR 1146: Table KURS.PodsumowanieSprzedazy' doesn't exist


Brak komentarzy:

Prześlij komentarz