poniedziałek, 3 września 2018

SQL - tymczasowe tabele


SQL - tymczasowe tabele

Czym są tymczasowe tabele?

Istnieją RDBMS, które obsługują tabele tymczasowe. Tabele tymczasowe to wspaniała funkcja, która umożliwia przechowywanie i przetwarzanie wyników pośrednich przy użyciu tych samych opcji selekcji, aktualizacji i łączenia, które można wykorzystać w typowych tabelach SQL Server.
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.
Tabele tymczasowe są dostępne w wersji MySQL od 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ć tabel heap.
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
Oto przykład pokazujący użycie tabeli tymczasowej.
mysql> create temporary table sprzedaz_suma(
    -> nazwa_produktu varchar(50) not null,
    -> wartosc_sprzedaz decimal(12,2) not null default 0.00,
    -> srednia_cena decimal(7,2) not null default 0.00,
    -> ilosc_sprzedanych int unsigned not null default 0);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into sprzedaz_suma
    -> (nazwa_produktu, wartosc_sprzedaz, srednia_cena,ilosc_sprzedanych)
    -> values
    -> ('ogórek',100.25,90,2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from sprzedaz_suma;
+----------------+------------------+--------------+-------------------+
| nazwa_produktu | wartosc_sprzedaz | srednia_cena | ilosc_sprzedanych |
+----------------+------------------+--------------+-------------------+
| 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, nie znajdziesz żadnych danych dostępnych w bazie danych. Nawet Twoja tabela tymczasowa nie będzie istnieć.

Usuwanie tymczasowych tabel

Domyślnie wszystkie tymczasowe tabele są usuwane przez MySQL po zerwaniu połączenia z bazą danych. Jeśli jednak chcesz je usunąć, możesz to zrobić, wydając polecenie DROP TABLE .
Poniżej znajduje się przykład usunięcia tabeli tymczasowej.
mysql> create temporary table sprzedaz_suma(
    -> nazwa_produktu varchar(50) not null,
    -> wartosc_sprzedaz decimal(12,2) not null default 0.00,
    -> srednia_cena decimal(7,2) not null default 0.00,
    -> ilosc_sprzedanych int unsigned not null default 0);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into sprzedaz_suma
    -> (nazwa_produktu, wartosc_sprzedaz, srednia_cena,ilosc_sprzedanych)
    -> values
    -> ('ogórek',100.25,90,2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from sprzedaz_suma;
+----------------+------------------+--------------+-------------------+
| nazwa_produktu | wartosc_sprzedaz | srednia_cena | ilosc_sprzedanych |
+----------------+------------------+--------------+-------------------+
| ogórek         |           100.25 |        90.00 |                 2 |
+----------------+------------------+--------------+-------------------+
1 row in set (0.00 sec)
mysql> drop table sprzedaz_suma;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from sprzedaz_suma;
ERROR 1146 (42S02): Table 'test.sprzedaz_suma' doesn't exist


Brak komentarzy:

Prześlij komentarz