Transact-SQL (T-SQL) ist die prozedurale Erweiterung von SQL, die Microsoft und Sybase ab Ende der 1980er-Jahre für ihre relationalen Datenbanksysteme entwickelten. T-SQL bildet die Skript- und Programmiersprache von Microsoft SQL Server (und Azure SQL) und ergänzt Standard-SQL um Variablen, Kontrollfluss, Fehlerbehandlung und Stored Procedures.
Grundlagen und Batch
T-SQL arbeitet in Batches: In SQL Server Management Studio (SSMS) oder sqlcmd trennt GO einen Batch ab. Variablen werden mit DECLARE angelegt und mit SET belegt:
DECLARE @anzahl INT;
SET @anzahl = (SELECT COUNT(*) FROM kunden);
IF @anzahl > 100
PRINT 'Viele Kunden: ' + CAST(@anzahl AS VARCHAR(10));
ELSE
PRINT 'Überschaubare Liste';
Wichtige Befehle und Konstrukte
- Kontrollfluss:
IF / ELSE,BEGIN ... END,WHILEmitBREAK/CONTINUE,GOTO,RETURN,WAITFOR DELAY. - Fehlerbehandlung:
BEGIN TRY ... END TRY / BEGIN CATCH ... END CATCHmitTHROW(ab SQL Server 2012), älterRAISERROR; Zustand über@@ERRORundXACT_STATE(). - Transaktionen:
BEGIN TRAN,COMMIT,ROLLBACK,SAVE TRANSACTION; Verschachtelungstiefe über@@TRANCOUNT. - Stored Procedures:
CREATE PROCEDUREmit Parametern, Ausführung perEXEC sp_name @param. - Tabellen im Skript: lokale Temp-Tabellen
#temp, globale##temp, TabellenvariablenDECLARE @t TABLE (...)und CTEs mitWITH ... AS. - Auswahl:
SELECT TOP (n),OFFSET ... ROWS FETCH NEXT ... ROWS ONLY,SELECT ... INTO(neue Tabelle aus Abfrage). - Fenster- und Datumsfunktionen:
ROW_NUMBER(),RANK(),DENSE_RANK(),LAG()/LEAD(),STRING_AGG,GETDATE(),DATEADD,DATEDIFF. - Null-Handling:
ISNULL,NULLIF,COALESCE. - Identitätsspalten:
IDENTITY(1,1), letzter Wert überSCOPE_IDENTITY(). - Systemprozeduren:
sp_help,sp_who,sp_configure,sp_helpdb.
Damit SQL Server zuverlässig arbeiten kann, empfiehlt Microsoft, jede Prozedur mit SET NOCOUNT ON zu beginnen. T-SQL ist der Microsoft-/Sybase-Dialekt — das Gegenstück von Oracles PL/SQL.
Verwandte Grundlagen: SQL-Befehle, PL/SQL-Befehle, SQLite-Befehle.