Anasayfa / Yazılım / SQL / Lokal Geçici Tablolar Oluşturmak

Lokal Geçici Tablolar Oluşturmak

MS SQL’de oluşturulan geçici tablolar, kullanıcıya ait olan veritabanında tutulmazlar. SQL Server’da tempdb içinde tutulurlar. Bu tempdb sisteme ait bir veritabanıdır. tempdb geçici tabloları tuttuğu gibi aynı zamanda SQL Server üzerinde çalıştırılan sorgular sonucu arka planda tablosal işlemlerin yapıldığı ve verilerin bizim ekranımızda geçici olarak oluşturulduğu yapınında gerçekleşmesini sağlarlar.

Geçici bir yerel (lokal) tablo oluşturmak için tablo adı önünde # işareti kullanılır. Şimdi geçici tablo oluşturmaya dair örnekler gerçekleştirelim. AdventureWorks2012 veri tabanı üzerinde işlemlerimi yapıyorum. Tablo oluşturmak için CREATE TABLE komutunu kullanacağız. Tablo içine veri aktarmak için de INSERT INTO komutunu kullanacağız. CREATE TABLE kullanımının kalıbı aşağıdaki gibidir:

CREATE TABLE #TabloAdı (kolon1 veritipi, kolon2 veritipi)

Geçici tablolar tıpkı normal tablolar gibi oluşturulurlar sadece önlerinde # işareti farkı vardır. Geri kalan kullanım tamamen aynı, onlarda da primary key yer alır, onlarda da kolon adı yer alır, onlarda da veri tipi belirtilir.

Şimdi bir örnek yapalım:

CREATE TABLE #Musteriler(MusteriID INT, MusteriAd VARCHAR(50), 
MusteriSoyad VARCHAR(50)); 
INSERT INTO #Musteriler(MusteriID,MusteriAd,MusteriSoyad)
SELECT Musteri.CustomerID, FirstName, LastName
FROM Person.Person AS Kisi INNER JOIN Sales.Customer AS Musteri
ON Kisi.BusinessEntityID = Musteri.PersonID;
SELECT MusteriID, MusteriAd, MusteriSoyad FROM #Musteriler;
DROP TABLE #Musteriler;

kodlarımızı açıklar isek; CREATE TABLE ile #Musteriler adında geçici bir tablo oluşturmaya başladım. Oluşturacağım kolonları ve veri tiplerini yazdım. Örneğim oldukça basit, herhangi bir primary key tanımlamadım ya da herhangi bir constraint yanı kısıtlama uygulamadım. Ama tabi bunları da yapabilirdim. ALTER TABLE dahi kullanılarak işi daha da uzatabilirdik ama amacımız net bir şekilde konumuz anlaşılsın istiyorum.

Daha sonra INSERT INTO komutu ile geçici tabloma yani #Musteriler tablosuna iki farklı tablodan veri çekerek verileri aktarma işlemi yapıyorum. Yine diğer tablolardan veri çekerken de tıpkı normal tablolar üzerinde işlem yaptığım gibi geçici tablom üzerinde de aynı şekilde SELECT komutunu kullanıyorum. En sonda da DROP TABLE ile tablomu siliyorum ama sorgum ile birlikte aslında listeleme yapılacak. Bu DROP TABLE’ı kullanmasam bile SQL Server kapandığında geçici tablom tempdb veritabanından silinir. Yani geçici tabloların ömrü SQL Server kapatıldığında zaten sonra ererler.

Yukarıdaki sorguyu çalıştırdığımda aşağıdaki gibi bir sonuç alırım:

2013121903

2 yorum

  1. Bilgilendirme için teşekkürler.

  2. yazılarınızı takip ediyrum. bilgiler için teşekkürler. iyi çalışmalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir