Hoe maak je een tijdelijke tabel in SQL
Inleiding tot tijdelijke tabellen
- Tijdelijke tabel is een tabel die wordt gebruikt om tijdelijke gegevens op te slaan die verder in dezelfde clientsessie kunnen worden gebruikt.
- Standaard wordt de tijdelijke tabel verwijderd zodra de clientsessie is beëindigd.
- Tijdelijke tabel kan expliciet worden verwijderd met de instructie "DROP TABLE". Deze tabel is alleen toegankelijk voor de maker ervan.
- Er kan meer dan één tijdelijke tabel in dezelfde sessie bestaan, maar ze moeten verschillende namen bevatten als ze zich in dezelfde sessie bevinden. Maar als de tijdelijke tabellen zich in de andere sessie bevinden, kunnen de tabellen met dezelfde namen bestaan.
- Tijdelijke tabellen kunnen dezelfde naam hebben als normale tabellen in dezelfde database. Als een dergelijke voorwaarde bestaat, zullen na het maken van de tijdelijke tabel alle uitgevoerde query's nu verwijzen naar de tijdelijke tabel in plaats van naar de normale tabel. Maar zodra deze tijdelijke tabel met dezelfde naam is verwijderd, is de normale tabel toegankelijk en verwijzen de query's nu naar de normale tabel.
- Een tijdelijke tafel maken
Syntaxis:
MAAK TIJDELIJKE TABEL TABLENAME (datatype column_name1 (grootte), datatype column_name2 (grootte), datatype column_nameN (grootte));
Voorbeeld:
We hebben al een database met de naam "employeedb" en een tabel met de naam "employee" in die database. Nu gaan we een tijdelijke tabel maken met dezelfde naam "werknemer".
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)
- We hebben nu een nieuwe tabel gemaakt met de naam "employee" in de database "employeedb".
- Dus, net na het maken van een tijdelijke tabel toen we probeerden de gegevens uit de werknemerstabel op te halen, kregen we een lege resultaatset. Dit gebeurt omdat de werknemerstabel die is opgegeven in de SELECT-query nu verwijst naar de nieuw gemaakte tijdelijke tabel "employee" en niet naar de bestaande tabel "employee".
- Toen we daarna de INSERT-query op de werknemerstabel uitvoerden, wordt deze query ook uitgevoerd op de tijdelijke tabel "employee", omdat we deze query uitvoeren na het maken van de tijdelijke tabel.
- Zet een tijdelijke tafel neer
Syntaxis:
DROP TABLE TABLENAME;
Voorbeeld:
Nu zullen we een tijdelijke tabel met de naam "werknemer" verwijderen.
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)
- Als we de SELECT-query uitvoeren, krijgen we twee records als uitvoer omdat we deze query hebben uitgevoerd na het maken van een tijdelijke tabel. Deze SELECT-query wordt dus uitgevoerd op de tijdelijke tabel.
- Daarna hebben we de drop-query uitgevoerd. Met het DROP-commando wordt de nieuw aangemaakte werknemerstabel (tijdelijke tafel) verwijderd.
- Nogmaals, wanneer we de SELECT-query uitvoeren, wordt deze nu uitgevoerd op onze werknemerstabel (originele tabel) en niet op de tijdelijke tabel, omdat de tijdelijke tabel al uit de database is verwijderd.