Temp-tabeller för SQL Server lagrar data tillfälligt. Du kan utföra samma operationer – som SELECT, INSERT, DELETE och UPDATE – på en temporär tabell som du gör en vanlig SQL-tabell.
Temp-tabeller finns i tempdb-databasen och är endast synliga under anslutningens varaktighet. När du avslutar anslutningen tar SQL Server bort temptabellen. Du kan också uttryckligen ta bort den när som helst.
Typer av SQL Server Temp-tabeller
Det finns två typer av SQL Server-temptabeller: lokala och globala.
Lokal temperaturtabell
En lokal temptabell är endast synlig för anslutningen som skapade den. När den anslutningen upphör, eller när användaren kopplar bort från SQL Server t.ex. tas en lokal temptabell automatiskt bort.
För att skapa en lokal temporär tabell, använd en enda hash-symbol (#) i början av tabellnamnet med CREATE TABLE-satsen. Här är syntaxen.
SKAPATABELL#TempTable (
Kolumn1 INT,
Kolumn 2 VARCHAR(50)
);
Till exempel skapar följande kod en tillfällig tabell som heter TempCustomer med ett namn och e-postfält.
SKAPATABELL#TempCustomer (
ID int INTE NULL PRIMÄRNYCKEL
Fullständigt namn VARCHAR(50),
E-post VARCHAR(50)
);
Global temperaturtabell
En global temptabell är en tillfällig tabell som är synlig för alla anslutningar och användare. SQL Server släpper det när alla anslutningar och användare som refererar till tabellen har kopplats bort.
För att skapa en global temporär tabell, prefix tabellnamnet med dubbla hash (##) och använd CREATE TABLE-satsen.
SKAPATABELL##Tempttabell (
Kolumn1 INT,
Kolumn 2 VARCHAR(50)
);
Följande kod skapar en global temptabell med namnet TempCustomer.
SKAPATABELL##Templarisk kund (
ID int INTE NULL PRIMÄRNYCKEL
Fullständigt namn VARCHAR(50),
E-post VARCHAR(50)
);
Den här koden liknar exemplet för den lokala temptabellen, bara med två hash-symboler istället för en. Du kan nu använda standard SQL-kommandon för att lägga till eller manipulera data i temptabellen.
Hur man släpper ett tempbord
SQL Server-instansen släpper automatiskt en temporär tabell när alla användare som hänvisar till den har kopplats bort. Som en bästa praxis bör du alltid uttryckligen släppa dina temp-tabeller för att frigöra tempdb-minnet.
För att ta bort en temptabell, använd DROP TABLE IF EXISTS-satsen följt av namnet på temptabellen.
Så här släpper du #TempCustomer-tabellen:
SLÄPPATABELLOMEXISTERAR#Temporisk kund
Använd samma kod men byt tabellnamnet för att ta bort en global temptabell.
SLÄPPATABELLOMEXISTERAR##Templarisk kund
Typisk användning av SQL Temp-tabeller
Temp-tabeller är användbara när du behöver lagra mellanresultat av komplexa frågor som du behöver bearbeta vidare. När du till exempel skapar rapporter kan du behöva skapa tillfälliga tabeller för att lagra frågeresultat från flera databaser. Du kan sedan generera den slutliga rapporten genom att köra en fråga mot de tillfälliga tabellerna.
Ett annat scenario där temporära tabeller är användbara är när du behöver frågeresultaten från en tabell för att köra en annan fråga. Du kan lagra resultaten i en tillfällig tabell och sedan referera till den i din nya fråga. I huvudsak använder du temptabellen som en arbets- eller bufferttabell för att hålla den data du behöver för att utföra en specifik uppgift.
Använda Temp-tabeller i SQL Server
Du kan använda tillfälliga SQL Server-tabeller för att lagra och bearbeta data tillfälligt. Det finns två typer av temporära tabeller, lokala och globala. En lokal temptabell är synlig för anslutningen där den skapas medan en global temptabell är synlig över alla anslutningar.
Temp-tabeller förstörs automatiskt när du kopplar från serverinstansen. Men för att spara minne bör du alltid tappa dem efter användning.