Jak utworzyć tabelę tymczasową w SQL
Wprowadzenie do tabel tymczasowych
- Tabela tymczasowa to tabela służąca do przechowywania danych tymczasowych, które mogą być dalej używane w tej samej sesji klienta.
- Domyślnie tabela tymczasowa jest usuwana po zakończeniu sesji klienta.
- Tabela tymczasowa może zostać wyraźnie usunięta za pomocą instrukcji „DROP TABLE”. Ta tabela jest dostępna tylko dla jej twórcy.
- W tej samej sesji może istnieć więcej niż jedna tabela tymczasowa, ale muszą one zawierać różne nazwy, jeśli znajdują się w tej samej sesji. Ale jeśli tabele tymczasowe znajdują się w innej sesji, mogą istnieć tabele o tych samych nazwach.
- Tabele tymczasowe mogą mieć taką samą nazwę jak zwykłe tabele w tej samej bazie danych. Jeśli taki warunek istnieje, to po utworzeniu tabeli tymczasowej wszystkie wykonywane zapytania będą odnosić się do tabeli tymczasowej, a nie do normalnej. Ale kiedy ta tymczasowa tabela utworzona o tej samej nazwie zostanie usunięta, normalna tabela będzie dostępna i teraz zapytania będą odwoływać się do normalnej tabeli.
- Tworzenie tymczasowego stołu
Składnia:
CREATE TEMPORARY TABLE TABLENAME (nazwa_kolumny1 typ danych (rozmiar), nazwa_kolumny2 typ danych (rozmiar), nazwa_kolumnyN typ danych (rozmiar));
Przykład:
Mamy już bazę danych o nazwie „employeedb” oraz tabelę o nazwie „pracownik” w tej bazie. Teraz utworzymy tabelę tymczasową o tej samej nazwie „pracownik”.
mysql> USE employeedb; Database changed mysql> CREATE TEMPORARY TABLE employee(Emp_ID INT, Emp_Name VARCHAR(20),Emp_Salary INT); Query OK, 0 rows affected (0.32 sec) mysql> SELECT *FROM employee; Empty set (0.00 sec) mysql> INSERT INTO employee VALUES(1,"Mayuri",45000); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO employee VALUES(2,"Sakshi",50000); Query OK, 1 row affected (0.04 sec) mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 45000 | | 2 | Sakshi | 50000 | +--------+----------+------------+ 2 rows in set (0.00 sec)
- Teraz utworzyliśmy nową tabelę o nazwie „pracownik” w bazie danych „pracownik”.
- Zaraz po utworzeniu tabeli tymczasowej, gdy próbujemy pobrać dane z tabeli pracowników, otrzymaliśmy pusty zestaw wyników. Dzieje się tak, ponieważ teraz tabela pracowników określona w zapytaniu SELECT odwołuje się do nowo utworzonej tabeli tymczasowej „pracownik”, a nie do istniejącej tabeli „pracownik”.
- Po tym, kiedy wykonaliśmy zapytanie INSERT w tabeli pracowników, to zapytanie jest również obsługiwane w tabeli tymczasowej „pracownik”, ponieważ wykonujemy to zapytanie po utworzeniu tabeli tymczasowej.
- Upuść tabelę tymczasową
Składnia:
DROP TABLE TABLENAME;
Przykład:
Teraz usuniemy tymczasową tabelę o nazwie „pracownik”.
mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 45000 | | 2 | Sakshi | 50000 | +--------+----------+------------+ 2 rows in set (0.00 sec) mysql> DROP TABLE employee; Query OK, 0 rows affected (0.08 sec) mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Mayuri | 40000 | | 2 | Mayuri | 40000 | | 3 | Mayuri | 40000 | | 4 | Mayuri | 40000 | | 5 | Mayuri | 40000 | +--------+----------+------------+ 5 rows in set (0.09 sec)
- Kiedy wykonujemy zapytanie SELECT, otrzymujemy dwa rekordy jako dane wyjściowe, ponieważ wykonaliśmy to zapytanie po utworzeniu tabeli tymczasowej. Zatem to zapytanie SELECT działa na tabeli tymczasowej.
- Potem wykonaliśmy zapytanie upuszczające. Używając polecenia DROP, nowo utworzona tabela pracowników (tabela tymczasowa) zostanie usunięta.
- Ponownie, kiedy wykonamy zapytanie SELECT, teraz będzie ono operowane na naszej tabeli pracowników (oryginalnej tabeli), a nie na tabeli tymczasowej, ponieważ tabela tymczasowa jest już usunięta z bazy danych.