Data: 15.06.2025

Tabele tymczasowe w MS SQL Server

Tabele tymczasowe w MS SQL Server

Spis treści

W artykule Tabele tymczasowe w MS SQL Server znajdziesz informacje na temat tworzenia lokalnych i globalnych tabel tymczasowych.

Tabele tymczasowe w MS SQL Server

W pracy z bazami danych czasami potrzebujemy przechowywać dane tymczasowo np. do ich dalszego przetwarzania w ramach złożonych zapytań lub raportów.

SQL Server oferuje do tego celu tabele tymczasowe, które są bardzo przydatne w pracy z dużymi zbiorami danych, optymalizacji zapytań lub podziale skomplikowanych operacji na mniejsze kroki.

W artykule wyjaśnię, czym są tabele tymczasowe, jak działają oraz jakie są ich rodzaje. Przykłady prezentuję z wykorzystaniem danych z bazy Northwind.

Czym są tabele tymczasowe?

Tabele tymczasowe w SQL Server to specjalny typ tabel, które są tworzone w tempdb – tymczasowej bazie danych wykorzystywanej przez SQL Server. Tymczasowe tabele są automatycznie usuwane po zakończeniu sesji, w której zostały utworzone.

W SQL Server mamy dwa rodzaje tabel tymczasowych:

  • lokalne tabele tymczasowe – dostępne są tylko w ramach jednej sesji
  • globalne tabele tymczasowe – dostępne dla wszystkich sesji.

Lokalne tabele tymczasowe

Lokalne tabele tymczasowe są widoczne tylko w czasie trwania jednej sesji. Sesja to połączenie z bazą danych.

Jeśli utworzysz lokalną tabelę tymczasową, będzie ona widoczna i dostępna tylko dla Ciebie. Gdy zamkniesz sesję tabela zniknie automatycznie.

Lokalną tabelę tymczasową tworzymy w MS SQL dodając znak # przed jej nazwą np. #Produkty.

Najważniejsze cechy lokalnych tabel tymczasowych:

  • są tworzone w systemowej bazie tempdb
  • są niewidoczne dla innych użytkowników i sesji
  • są automatycznie usuwane po zakończeniu sesji

Tworzenie lokalnej tabeli tymczasowej

W poniższym przykładzie tworzymy tymczasową tabelę #Produkty, widoczną tylko w bieżącej sesji:

  • kopiujemy kolumny ProductID, ProductName i UnitPrice z tabeli Products
  • automatycznie tworzymy strukturę tabeli na podstawie instrukcji SELECT
  • kopiujemy dane z tabeli Products
SELECT
    ProductID,
    ProductName,
    UnitPrice
INTO #Produkty
FROM Products

Aby uruchomić przykład:

  • otwórz aplikację SQL Server Management Studio (SSMS)
  • wklej powyższy kod i uruchom go przyciskiem F5 – utworzona zostanie wówczas tabela tymczasowa

Aby zobaczyć tabelę w oknie Object Explorer:

  • kliknij prawym przyciskiem myszy obiekt Databases (bazy danych) i wybierz opcję Refresh (Odśwież)

    Title

  • rozwiń kolejno System Databases, tempdb, Temporary Tables

    Title

W przypadku lokalnych tabel tymczasowych SQL Server dodaje do nazwy tabeli tymczasowej unikalny ciąg znaków, żeby odróżnić ją od innych tabel o tej samej nazwie, które mogą ewentualnie zostać utworzone przez innych użytkowników.

Lokalne tabele tymczasowe są widoczne tylko w sesji, w której zostały utworzone – inni użytkownicy ich nie widzą i nie mają możliwości sprawdzenia, czy dana nazwa tabeli już istnieje.

Title

Odczytywanie danych z lokalnej tabeli tymczasowej

Dane z tabeli tymczasowej możemy odczytywać tak samo, jak to robimy w przypadku standardowych tabel.  Aby odczytać dane wklej w SQL Server Management Studio poniższe zapytanie i uruchom je przyciskiem F5.

SELECT *
FROM #Produkty;

Title

Tabela tymczasowa #Produkty jest podkreślana na czerwono, gdyż IntelliSense w SSMS nie odświeżył listy obiektów i „nie widzi” tej tabeli, mimo że faktycznie tabela istnieje i wykonywane w niej zapytania działają poprawnie.

IntelliSense to funkcja edytora SQL Server Management Studio, która podpowiada składnię, nazwy obiektów i pomaga w pisaniu zapytań, podobnie jak autouzupełnianie w edytorach kodu.

Globalne tabele tymczasowe

Globalne tabele tymczasowe w SQL Server to specjalny typ tabel, które – w przeciwieństwie do tymczasowych tabel lokalnych – są dostępne dla wszystkich użytkowników i wszystkich sesji.

Aby utworzyć globalną tabelę tymczasową, dodajemy dwa znaki hash (##) przed jej nazwą np. ##Produkty.

Cechy globalnych tabel tymczasowych:

  • tworzone są w systemowej bazie tempdb
  • są widoczne dla każdej sesji i dla każdego użytkownika
  • usuwane są automatycznie, gdy zamknięta zostanie sesja, w której tabela została utworzona i nie ma otwartej żadnej sesji, która blokuje tę tabelę do zapisu

Tworzenie globalnej tabeli tymczasowej

W poniższym przykładzie tworzymy tabelę tymczasową ##Produkty:

  • kopiujemy kolumny ProductID, ProductName i UnitPrice z tabeli Products
  • automatycznie tworzymy strukturę tabeli na podstawie instrukcji SELECT
  • kopiujemy dane z tabeli Products
SELECT
    ProductID,
    ProductName,
    UnitPrice
INTO ##Produkty
FROM Products

Aby uruchomić przykład:

  • otwórz aplikację SQL Server Management Studio (SSMS)
  • wklej powyższy kod i uruchom go przyciskiem F5

Aby zobaczyć tabelę w oknie Object Explorer:

  • kliknij prawym przyciskiem myszy obiekt Databases (bazy danych) i wybierz opcję Refresh (Odśwież)

    Title

  • rozwiń kolejno System Databases, tempdb, Temporary Tables

    Title

W przypadku globalnych tabel tymczasowych SQL Server nie dodaje do nazwy tabeli dodatkowego identyfikatora, gdyż tabele te są widoczne dla wszystkich sesjach i dla wszystkich użytkowników.

Nazwa tabeli musi być niepowtarzalna w bazie danych i nie ma tutaj ryzyka, że ktoś inny utworzy tabelę o takiej samej nazwie.

Odczytywanie danych z globalnej tabeli tymczasowej

Dane z tabeli tymczasowej możemy odczytywać tak samo, jak to robimy w przypadku standardowych tabel.  Aby odczytać dane wklej w SQL Server Management Studio poniższe zapytanie i uruchom je przyciskiem F5

SELECT *
FROM ##Produkty;

Title

Tabela tymczasowa ##Produkty jest podkreślana na czerwono, gdyż IntelliSense w SSMS nie odświeżył listy obiektów i jej „nie widzi”. Jest ona jednak utworzona prawidłowo i możemy wykorzystywać ją w zapytaniach.

Kiedy warto używać tabel tymczasowych?

Tabele tymczasowe mogą się przydać, gdy:

  • potrzebujesz współdzielić dane między różnymi procesami lub użytkownikami np. w aplikacjach, gdzie kilka części programu działa równolegle
  • kilka procedur ma korzystać z tych samych danych tymczasowych – nie chcesz ich wielokrotnie kopiować
  • chcesz przyspieszyć działanie aplikacji – trzymanie danych tymczasowo w tabeli może być szybsze niż ich wielokrotne pobieranie z bazy
  • testujesz lub debugujesz złożony proces i chcesz podejrzeć dane na różnych etapach działania
  • chcesz poprawić wydajność zapytania – zmniejszają złożoność zapytań, dzieląc je na mniejsze, logiczne etapy

Tabele tymczasowe to ważne narzędzie pracy osób zajmujących się bazami danych. Ułatwiają one pracę z dużymi zbiorami danych, pozwalają lepiej organizować kod i zwiększają jego wydajność.

Więcej informacji na temat tworzenia i modyfikowania tabel znajdziesz w naszym artykule Tworzenie i modyfikowanie tabel w MS SQL Server

Zajrzyj na nasze kursy SQL, aby poćwiczyć tworzenie tabel tymczasowych oraz zdobyć inne umiejętności związane z językiem MS SQL i obsługą baz danych SQL Server.

Ewa Barbara Lelusz
Ewa Barbara Lelusz
Analityk biznesowy
Udostępnij wpis:udostępnij Facebookudostępnij Linkedinudostępnij e-mail

Polecane