Hur man skapar en tillfällig tabell i SQL
Introduktion till tillfälliga tabeller
- Tillfällig tabell är en tabell som används för att lagra temporär data som kan användas vidare i samma klientsession.
- Som standard tas den tillfälliga tabellen bort när klientsessionen avslutas.
- Tillfällig tabell kan explicit tas bort med satsen "DROP TABLE". Denna tabell är endast tillgänglig för dess skapare.
- Mer än en tillfällig tabell kan finnas i samma session men de måste innehålla olika namn om de är i samma session. Men om de temporära tabellerna är i olika sessioner kan tabellerna existera med samma namn.
- Tillfälliga tabeller kan ha samma namn som vanliga tabeller inom samma databas. Om ett sådant villkor existerar, kommer nu alla de exekverade frågorna efter skapandet av den temporära tabellen att hänvisa till den temporära tabellen istället för den normala tabellen. Men när den här temporära tabellen som skapats med samma namn har tagits bort är den normala tabellen tillgänglig och nu kommer frågorna att hänvisa till den normala tabellen.
- Skapa en tillfällig tabell
Syntax:
SKAPA TILLÄMPLIGT TABELL TABELLNAMN (datatyp kolumnnamn1 (storlek), datatyp kolumnnamn2 (storlek), kolumnnamnN datatyp (storlek));
Exempel:
Vi har redan en databas med namnet "employeedb" och en tabell med namnet "employee" i den databasen. Nu kommer vi att skapa en tillfällig tabell med samma namn "anställd".
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)
- Nu har vi skapat en ny tabell som heter "employee" i databasen "employeedb".
- Så, precis efter skapandet av en temporär tabell när vi försöker hämta data från personaltabellen, fick vi en tom resultatuppsättning. Detta händer eftersom den anställda tabellen som anges i SELECT-frågan nu hänvisar till den nyskapade temporära tabellen "anställd" och inte den befintliga tabellen "anställd".
- Därefter, när vi körde INSERT-frågan på anställdstabell, körs även denna fråga på den tillfälliga tabellen "anställd" eftersom vi kör den här frågan efter att den tillfälliga tabellen skapats.
- Släpp en tillfällig tabell
Syntax:
DROP TABLE TABLENAME;
Exempel:
Nu kommer vi att ta bort en tillfällig tabell som heter "anställd".
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)
- När vi kör SELECT-frågan får vi två poster som utdata eftersom vi har kört den här frågan efter att ha skapat en tillfällig tabell. Så den här SELECT-frågan körs på den temporära tabellen.
- Efter det har vi kört släppfrågan. Genom att använda DROP-kommandot kommer nyskapad personaltabell (tillfällig tabell) att tas bort.
- Återigen, när vi kör SELECT-frågan kommer den nu att användas på vår personaltabell (ursprungliga tabellen) inte den temporära tabellen eftersom den temporära tabellen redan är borttagen från databasen.