Transact-SQL (T-SQL), Microsoft'un SQL Server ve Azure SQL veritabanı platformlarının merkezinde yer alan, SQL (Yapılandırılmış Sorgu Dili) standardını genişleten güçlü bir programlama dilidir. İlişkisel veritabanı yönetim sistemlerinin (RDBMS) kalbinde, verilerin tanımlanması, sorgulanması, manipüle edilmesi ve kontrol edilmesi için vazgeçilmez bir araçtır. ANSI/ISO SQL standardını temel alır, ancak Microsoft'un özel eklemeleri ve geliştirmeleri ile onu önemli ölçüde genişletir.

T-SQL'in kökenleri, 1980'lerin sonunda Sybase ile Microsoft'un ortak geliştirdiği SQL Server'ın ilk sürümlerine dayanır. İki şirketin yollarını ayırmasının ardından, Microsoft T-SQL'i kendi ürün hattı için bağımsız olarak geliştirmeye devam etti. Bu tarihsel süreç, dilin Sybase'in Transact-SQL mirasından evrimleşerek, Windows ve .NET ekosistemiyle derinlemesine bütünleşmesine yol açtı. Zaman içinde, XML/JSON işleme, pencereleme fonksiyonları ve gelişmiş analitik yetenekler gibi özellikler eklenerek dil sürekli zenginleştirildi.

T-SQL'in temel işlevi, bir veritabanı sunucusuyla etkileşim kurmaktır. Kullanıcılar ve uygulamalar, T-SQL deyimleri aracılığıyla sunucuya talimatlar gönderir. Sunucu da bu talimatları işler, veri üzerinde gerekli işlemleri yapar ve sonuçları istemciye döndürür. Bu talimatlar basit bir veri seçme (SELECT) sorgusundan, karmaşık iş mantığını içeren ve birden fazla adımı atomik olarak yürüten saklı yordamlara kadar uzanabilir.

T-SQL'in en ayırt edici özelliği, yordamsal programlama yetenekleridir. Standart SQL, esas olarak bildirimsel (declarative) bir dildir; yani "ne" yapılacağı söylenir, "nasıl" yapılacağı değil. T-SQL ise IF...ELSE, WHILE döngüleri, yerel değişkenler, hata yakalama (TRY...CATCH) blokları ve geçici tablolar gibi yapılar ekleyerek, geliştiricilere iş akışını ve mantığı doğrudan veritabanı katmanında tanımlama imkanı verir. Bu yaklaşım, iş mantığının merkezileştirilmesi ve performans optimizasyonu açısından kritik bir avantaj sağlar.

T-SQL'in Temel Dil Bileşenleri ve Yapıtaşları

T-SQL, belirli bir yapı ve gramere sahip deyimlerden (statements) oluşur. Her bir deyim, veritabanında gerçekleştirilmek istenen eylemi tanımlar. T-SQL deyimleri, çeşitli dil bileşenlerinin mantıksal bir kombinasyonudur. Bu bileşenleri anlamak, etkili ve optimize edilmiş sorgular yazmanın temelidir.

Anahtar bileşenlerden biri veri tanımlama dili (DDL - Data Definition Language) deyimleridir. Bu deyimler, veritabanının yapısını, şemasını oluşturur ve değiştirir. Veritabanı nesnelerinin yaşam döngüsünü yönetmekten sorumludurlar. DDL'nin en temel komutları arasında CREATE (nesne oluşturma), ALTER (nesneyi değiştirme) ve DROP (nesneyi silme) yer alır. Örneğin, yeni bir tablo oluşturmak, bir sütuna indeks eklemek veya eski bir görünümü kaldırmak için DDL kullanılır.

T-SQL'in bir diğer kritik unsuru, değişkenler ve ifadelerdir. Yerel değişkenler, tek bir değeri saklamak için kullanılır ve @ işareti ile başlar (@ToplamSatis gibi). Tablo değişkenleri ise geçici veri depolamak için kullanışlıdır. İfadeler (expressions) ise sabitler, sütun adları, operatörler ve fonksiyonların birleşimiyle oluşan ve bir değer üreten yapılardır. Bunlar, sorguların WHERE veya SELECT cümlelerinde yoğun olarak kullanılır.

Bileşen Kategorisi Örnek Anahtar Kelimeler Temel Amacı
Veri Tanımlama Dili (DDL) CREATE, ALTER, DROP, TRUNCATE Veritabanı nesnelerinin yapısını oluşturmak ve değiştirmek.
Veri İşleme Dili (DML) SELECT, INSERT, UPDATE, DELETE, MERGE Tablo verilerini sorgulamak, eklemek, değiştirmek ve silmek.
Veri Kontrol Dili (DCL) GRANT, REVOKE, DENY Veri erişim izinlerini ve güvenliğini yönetmek.
İşlem Kontrolü (TCL) BEGIN TRANSACTION, COMMIT, ROLLBACK, SAVE TRANSACTION Veri bütünlüğünü sağlamak için işlemleri yönetmek.

Bu yapıtaşlarının doğru bir şekilde bir araya getirilmesi, veritabanı işlemlerinin güvenli, tutarlı ve verimli bir şekilde yürütülmesini sağlar. Örneğin, bir ürün satışı sırasında UPDATE (stok azaltma) ve INSERT (sipariş kaydı ekleme) deyimleri, bir BEGIN TRANSACTION...COMMIT bloğu içine alınarak atomik bir işlem haline getirilebilir. Bu da ACID (Atomicity, Consistency, Isolation, Durability) özelliklerinin sağlanmasına katkıda bulunur.

T-SQL'de Veri Tipleri ve İşleçler

T-SQL'deki her sütun, yerel değişken ve ifade, veri türüne (data type) sahiptir. Bu tür, o alanda depolanabilecek verinin doğasını (sayısal, metinsel, tarihsel vb.), boyutunu ve biçimini belirler. Doğru veri türünün seçilmesi, veri bütünlüğünün korunması, depolama alanının verimli kullanılması ve sorgu performansının optimize edilmesi açısından kritik bir tasarım kararıdır. T-SQL, ANSI SQL standardındaki temel türlere ek olarak Microsoft'a özgü birçok türü de barındırır.

Sayısal veri türleri, INT (tam sayı), DECIMAL/NUMERIC (kesin hassasiyetli ondalıklı sayılar), FLOAT/REAL (yaklaşık hassasiyetli kayan noktalı sayılar) gibi varyasyonlara ayrılır. Karakter tabanlı veriler için ise CHAR(n) (sabit uzunluklu), VARCHAR(n) (değişken uzunluklu), NVARCHAR(n) (Unicode destekli değişken uzunluklu) türleri bulunur. Tarih ve saat işlemleri için DATE, TIME, DATETIME2 ve DATETIMEOFFSET (saat dilimi desteğiyle) gibi gelişmiş türler sunulmuştur. Ayrıca, ikili veriler için BINARY, mantıksal değerler için BIT ve büyük nesneler için VARCHAR(MAX) veya VARBINARY(MAX) gibi türler mevcuttur.

Veri Türü Kategorisi Önemli T-SQL Türleri Kullanım Amacı ve Özellik
Tam Sayılar BIGINT, INT, SMALLINT, TINYINT Değişen aralıklarda tam sayı değerlerini saklar. Bellek kullanımı aralığa göre değişir.
Kesin Ondalıklı DECIMAL(p,s), NUMERIC(p,s) Finansal veriler gibi kesin hassasiyet gerektiren değerler. 'p' toplam basamak, 's' ondalık basamak sayısıdır.
Karakter Dizileri CHAR(n), VARCHAR(n), NVARCHAR(n) Metin verisi. 'N' öneki Unicode (çift byte) anlamına gelir ve uluslararası karakter setleri için kullanılır.
Tarih/Saat DATE, TIME, DATETIME2, DATETIMEOFFSET Tarih ve saat bilgisi. DATETIME2, eski DATETIME'a göre daha geniş aralık ve hassasiyet sunar.

Bu veri türleri üzerinde işlem yapmak için operatörler (işleçler) kullanılır. Aritmetik operatörler (+, -, *, /, %) matematiksel hesaplamalar yaparken, karşılaştırma operatörleri (=, <>, >, <, >=, <=) koşul ifadelerinin temelini oluşturur. Mantıksal operatörler olan AND, OR ve NOT ise birden fazla koşulu birleştirmek için kullanılır. Ayrıca, LIKE operatörü metin alanlarında kalıp eşleştirme ('%' ve '_' joker karakterleriyle), IN operatörü bir değer listesinin içindekileri kontrol etme, BETWEEN operatörü ise belirli bir aralıktaki değerleri test etme imkanı sağlar.

Operatör önceliği, karmaşık ifadelerin nasıl değerlendirileceğini belirleyen önemli bir kuraldır. Örneğin, çarpma ve bölme işlemleri, toplama ve çıkarmadan önce yapılır. Parantezler ( ) ise bu önceliği geçersiz kılmak ve ifadenin değerlendirme sırasını belirlemek için kullanılır. Tüm bu veri türleri ve operatörler, güçlü WHERE filtreleri, karmaşık CASE ifadeleri ve dinamik hesaplamalar oluşturmak için bir araya gelir.

T-SQL ile Veri Manipülasyonu (DML) ve Kontrolü (DCL)

Veri İşleme Dili (DML - Data Manipulation Language), bir veritabanındaki tabloların içeriğiyle etkileşim kurmak için kullanılan T-SQL deyimleri grubudur. Bu deyimler, verilerin eklenmesi, okunması, güncellenmesi ve silinmesi işlemlerinin (CRUD operasyonları) temelini oluşturur. DML deyimlerinin etkin ve güvenli kullanımı, herhangi bir veritabanı uygulamasının omurgasıdır.

SELECT deyimi, DML'nin ve genel olarak SQL'in en çok kullanılan deyimidir. Veritabanından veri okumak ve sorgulamak için kullanılır. Basit bir yapıdan, birden fazla tablonun JOIN ile birleştirilmesine, GROUP BY ile verinin toplanmasına ve ORDER BY ile sıralanmasına kadar son derece karmaşık sorgular yazılabilmesini sağlar. SELECT * FROM Musteriler WHERE Sehir = 'İstanbul' gibi basit bir sorgu, veri almanın temel yoludur.

Veri eklemek için INSERT, var olan verileri değiştirmek için UPDATE, verileri kaldırmak için ise DELETE deyimi kullanılır. MERGE deyimi, bu üç işlemi (INSERT, UPDATE, DELETE) tek bir deyimde, kaynak ve hedef tabloları karşılaştırarak koşullu olarak yürütme gücüne sahiptir. Özellikle veri yükleme (data load) veya eşitleme senaryolarında oldukça kullanışlıdır. Bu deyimler genellikle bir WHERE koşulu ile kullanılarak, etkilenecek kayıtların kesin olarak belirlenmesi sağlanmalıdır; aksi halde tüm tablo etkilenebilir.

DML Deyimi Temel Görevi Önemli Yan Cümleleri (Clauses)
SELECT Veritabanından veri okumak ve sorgulamak. FROM, WHERE, GROUP BY, HAVING, ORDER BY, JOIN
INSERT Bir veya daha fazla yeni satır eklemek. INTO, VALUES, SELECT (INSERT...SELECT yapısı)
UPDATE Mevcut satırlardaki verileri değiştirmek. SET, WHERE (kritik!), FROM (güncellemede birleştirme için)
DELETE Bir veya daha fazla satırı silmek. FROM, WHERE (kritik!), USING (silmede birleştirme için)

Veri Manipülasyon Dili, veriye erişimi sağlarken; Veri Kontrol Dili (DCL - Data Control Language), bu erişimi kimin ne şekilde yapacağını düzenler. DCL, veritabanı güvenliğinin merkezinde yer alır ve kullanıcılara veya rollerine izin (permission) atamak veya kaldırmak için kullanılır. GRANT deyimi, bir güvenlik sorumlusuna (principal) belirli bir izni vermek için kullanılır. REVOKE, daha önce verilmiş bir izni kaldırır. DENY ise, bir izni açıkça reddeder ve REVOKE'den daha güçlüdür; üst seviye bir izin DENY edildiğinde, alt seviyedeki tüm GRANT lar geçersiz kalır.

Bu iki dilin birlikte kullanımı, hem verinin bütünlüğünü hem de gizliliğini korumanın anahtarıdır. Örneğin, bir satış temsilcisi yalnızca kendi bölgesindeki müşterileri görebilmelidir. Bu, SELECT sorgusuna bir WHERE koşulu eklenerek (veri manipülasyonu) ve aynı kullanıcıya diğer bölgelerin verilerini görüntüleme izninin DENY edilmesiyle (veri kontrolü) sağlanır. Bu kombinasyon, SQL Server'ın kapsamlı güvenlik modelinin temelini oluşturur.

Saklı Yordamlar, Tetikleyiciler ve Fonksiyonlar

T-SQL'in yordamsal programlama gücü, en belirgin şekilde saklı yordamlar (stored procedures), tetikleyiciler (triggers) ve kullanıcı tanımlı fonksiyonlar (user-defined functions - UDFs) gibi programlanabilir veritabanı nesnelerinde ortaya çıkar. Bu nesneler, iş mantığını veritabanı sunucusu katmanında paketleyerek, uygulama kodundan bağımsız, merkezi, güvenli ve yüksek performanslı çözümler sunar. Bu yaklaşım, "akıllı veritabanı" tasarım paradigmasının temel taşlarını oluşturur.

Saklı yordamlar, veritabanında önceden derlenmiş ve saklanan bir veya daha fazla T-SQL deyiminden oluşan yürütülebilir birimlerdir. Parametre alabilir, değer döndürebilir ve çıkış parametrelerine sahip olabilirler. En büyük avantajları, performans (ön derleme/execution plan caching), ağ trafiğini azaltma ve güvenliktir (kullanıcılar temel tablolara doğrudan erişim yerine yordamı çalıştırma iznine sahip olabilir). Ayrıca, karmaşık işlemleri tek bir çağrıda atomik olarak yürütmek için idealdirler.

Tetikleyiciler, belirli bir tablo veya görünüm üzerinde önceden tanımlanmış bir eylem (INSERT, UPDATE, DELETE) gerçekleştiğinde otomatik olarak ("tetiklenerek") yürütülen özel bir saklı yordam türüdür. INSTEAD OF ve AFTER (FOR) olmak üzere iki ana türü vardır. INSTEAD OF tetikleyicileri, orijinal DML işleminin yerine yürütülür ve genellikle görünümlere yapılan güncellemeleri işlemek için kullanılır. AFTER tetikleyicileri ise işlem tamamlandıktan ve tüm kısıtlamalar kontrol edildikten sonra çalışır; genellikle denetim kayıtları (audit trails) tutmak, karmaşık iş kurallarını uygulamak veya başka tablolarda gerekli değişiklikleri yapmak için kullanılır.

Kullanıcı tanımlı fonksiyonlar (UDF'ler), parametre alan, hesaplamalar yapan ve bir değer döndüren programlanabilir nesnelerdir. Skaler fonksiyonlar tek bir değer döndürürken, tablo-değerli fonksiyonlar (TVF'ler) bir tablo sonucu döndürür. Fonksiyonların en önemli kısıtlaması, veritabanı durumunu değiştiren işlemler (INSERT, UPDATE, DELETE) gerçekleştirememeleridir; bu onları saf hesaplamalar ve veri dönüşümleri için mükemmel kılar. Bu üç nesnenin (yordamlar, tetikleyiciler, fonksiyonlar) dikkatli bir şekilde kullanılması, iş mantığının merkezileştirilmesini, veri bütünlüğünün güçlendirilmesini ve kod tekrarının önlenmesini sağlar.

Modern Veri Platformlarında T-SQL'in Yeri ve Geleceği

Bulut bilişim, büyük veri ve çoklu model veritabanları çağında T-SQL, geçerliliğini ve önemini korumakta, hatta yeni alanlara uyum sağlamaktadır. Microsoft'un Azure SQL hizmet ailesi (Azure SQL Database, Azure SQL Managed Instance, Azure SQL VM), T-SQL'i tamamen yönetilen bir PaaS (Platform-as-a-Service) ortamında veya buluttaki bir IaaS (Infrastructure-as-a-Service) sanal makinesinde sunarak, dilin erişilebilirliğini ve ölçeklenebilirliğini artırmıştır. Bu platformlarda T-SQL, geleneksel ilişkisel iş yüklerinin yanı sıra, yarı yapılandırılmış veri işleme gibi modern ihtiyaçları da karşılamaktadır.

T-SQL, artık yalnızca saf ilişkisel işlemlerle sınırlı değildir. JSON ve XML veri türleri için yerel destek ve ilgili fonksiyonlar (OPENJSON, JSON_VALUE, FOR XML gibi), modern uygulamalardan gelen yarı yapılandırılmış verilerle doğrudan çalışabilmesini sağlar. Ayrıca, graf işleme yetenekleri (MATCH yan tümcesi gibi) ile ilişkisel olmayan veri modellerine de dokunmaya başlamıştır. Bu, T-SQL'i çoklu model (multi-model) bir veritabanı sistemiyle çalışmak için daha esnek bir araç haline getirir.

Performans ve analitik alanındaki gelişmeler de T-SQL'i derinden etkilemiştir. Bellek içi OLTP teknolojisi, sık erişilen tabloları ve saklı yordamları tamamen bellekte çalıştırarak işlem performansında devasa artışlar sağlar. Columnstore indeksleri ise, büyük veri yığınlarında analitik ve raporlama sorgularının hızını katbekat artırır. Bu özellikler, T-SQL sorgularının yürütme motoru düzeyinde optimize edilmesiyle çalışır ve geliştiricinin mevcut T-SQL bilgisini değiştirmesini gerektirmez.

Gelecekte T-SQL'in, yapay zeka (AI) ve makine öğrenimi (ML) modelleriyle daha sıkı entegrasyonun, gelişmiş güvenlik özelliklerinin (Always Encrypted gibi) yaygınlaşmasının ve sunucusuz (serverless) veritabanı mimarilerinde daha da soyutlanmış bir şekilde kullanılmasının ön planda olacağı öngörülebilir. Ancak, dilin temel prensipleri ve veri merkezli iş mantığını tanımlamadaki gücü değişmeyecektir. T-SQL, Microsoft veri platformunun evrimiyle birlikte gelişmeye devam edecek, ilişkisel verinin güvenilir ve vazgeçilmez dili olarak konumunu koruyacaktır.