Jak vytvořit dočasnou tabulku v SQL
Úvod do dočasných tabulek
- Dočasná tabulka je tabulka, která se používá k ukládání dočasných dat, která lze dále používat ve stejné relaci klienta.
- Ve výchozím nastavení je dočasná tabulka po ukončení relace klienta odstraněna.
- Dočasnou tabulku lze explicitně odstranit pomocí příkazu „DROP TABLE“. Tato tabulka je přístupná pouze jejímu tvůrci.
- Ve stejné relaci může existovat více než jedna dočasná tabulka, ale pokud jsou ve stejné relaci, musí obsahovat různé názvy. Ale pokud jsou dočasné tabulky v jiné relaci, pak mohou existovat tabulky se stejnými názvy.
- Dočasné tabulky mohou mít stejný název jako normální tabulky ve stejné databázi. Pokud taková podmínka existuje, pak po vytvoření dočasné tabulky budou nyní všechny provedené dotazy odkazovat na dočasnou tabulku namísto na normální tabulku. Jakmile je však tato dočasná tabulka vytvořená se stejným názvem odstraněna, normální tabulka je přístupná a dotazy nyní budou odkazovat na normální tabulku.
- Vytvoření dočasné tabulky
Syntaxe:
CREATE TEMPORARY TABLE TABLENAME (column_name1 datatype (size), column_name2 datatype (size), column_nameN datatype (size));
Příklad:
V této databázi již máme databázi s názvem „employeedb“ a tabulku s názvem „employee“. Nyní vytvoříme dočasnou tabulku se stejným názvem „zaměstnanec“.
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)
- Nyní jsme vytvořili novou tabulku s názvem „zaměstnanec“ v databázi „employeedb“.
- Tesně po vytvoření dočasné tabulky, když se snažíme načíst data z tabulky zaměstnanců, jsme dostali prázdnou sadu výsledků. K tomu dochází, protože nyní tabulka zaměstnanců zadaná v dotazu SELECT odkazuje na nově vytvořenou dočasnou tabulku „zaměstnanec“ a nikoli na existující tabulku „zaměstnanec“.
- Poté, když jsme provedli dotaz INSERT na zaměstnaneckou tabulku, je tento dotaz také zpracován na dočasné tabulce „zaměstnanec“, protože tento dotaz provádíme po vytvoření dočasné tabulky.
- Zrušte dočasnou tabulku
Syntaxe:
DROP TABLE TABLENAME;
Příklad:
Nyní smažeme dočasnou tabulku s názvem „zaměstnanec“.
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)
- Když provedeme dotaz SELECT, získáme jako výstup dva záznamy, protože jsme tento dotaz provedli po vytvoření dočasné tabulky. Tento dotaz SELECT je tedy provozován na dočasné tabulce.
- Poté jsme provedli dotaz na přetažení. Pomocí příkazu DROP bude nově vytvořená tabulka zaměstnanců (dočasná tabulka) zrušena.
- Když znovu provedeme dotaz SELECT, bude nyní operován na naší tabulce zaměstnanců (původní tabulce), nikoli na dočasné tabulce, protože dočasná tabulka je již z databáze odstraněna.