Transact-SQL, oft mit T-SQL oder sogar TSQL abgekürzt, ist die proprietäre Erweiterung von Microsoft und Sybase zu SQL. Transact-SQL erweitert den SQL-Standard um zusätzliche Funktionen, die nicht im SQL-Standard enthalten sind.
Hier ist ein Beispiel für eine einfache T-SQL-Anweisung:
CREATE DATABASE Movies;
Dies ist so einfach wie ein T-SQL-Beispiel nur sein könnte. Dadurch wird eine neue Datenbank namens Movies
erstellt .
T-SQL bietet jedoch andere Optionen, die in diese Anweisung aufgenommen werden können, wie z. B. wo sich die Datenbankdateien befinden sollen, die Größe dieser Dateien, wie hoch ihre maximale Größe sein sollte und mehr.
T-SQL-Funktionen
Zu den Features von T-SQL gehören:
- Prozedurale Programmierung
- Lokale Variablen
- Verschiedene Unterstützungsfunktionen für Zeichenfolgenverarbeitung, Datumsverarbeitung, Mathematik usw.
- Änderungen am
DELETE
undUPDATE
Aussagen. Insbesondere ermöglichen sie das Hinzufügen einer FROM-Klausel, die das Einfügen von Joins ermöglicht. - T-SQL hat einen
BULK INSERT
Anweisung, mit der Sie eine Datendatei in eine Datenbanktabelle importieren oder in einem benutzerdefinierten Format anzeigen können.
Einer der Hauptvorteile der oben genannten Erweiterungen besteht darin, dass Sie viel mehr Programmierbarkeit haben, wenn Sie T-SQL im Vergleich zu SQL verwenden. Gespeicherte Prozeduren ermöglichen es Ihnen beispielsweise, Programmierlogik in Ihre Datenbank zu integrieren. Sie können einen oder mehrere Parameter an eine gespeicherte Prozedur übergeben, und die gespeicherte Prozedur gibt eine Ausgabe zurück, die je nach den Werten der Parameter variiert.
T-SQL enthält außerdem eine große Anzahl integrierter Funktionen sowie unterstützende benutzerdefinierte Funktionen.
Ein Beispiel für eine eingebaute Funktion
Hier ist ein weiteres einfaches Beispiel, diesmal mit einer der integrierten Funktionen von T-SQL:
SELECT GETDATE();
Ergebnis:
2018-05-06 23:30:37.003
In diesem Fall verwenden wir GETDATE()
von T-SQL Funktion, um das aktuelle Datum und die Uhrzeit zurückzugeben. Dies wird zusammen mit dem SELECT
verwendet -Anweisung, die eine allgemeine SQL-Anweisung zum Zurückgeben von Daten ist.
Wir können diese Funktion auch als Argument für eine andere Funktion verwenden. Hier ist ein Beispiel:
SELECT FORMAT(GETDATE(), 'MMM');
Ergebnis:
May
In diesem Fall verwenden wir das T-SQL FORMAT()
Funktion, um nur den Monatsteil des Datums zu extrahieren und in einem bestimmten Format darzustellen. Weitere Datums-/Uhrzeitbeispiele finden Sie unter How to Format the Date &Time in SQL Server.
Geschichte von T-SQL
Obwohl Transact-SQL (und SQL Server) am häufigsten als eine Sache von Microsoft bekannt ist, ist es eigentlich das Ergebnis einer Partnerschaft zwischen Microsoft und Sybase, die 1987 begann. Diese Partnerschaft wurde 1994 aufgelöst.
Danach wurde T-SQL weiterhin von Datenbankprodukten unterstützt, die von beiden Unternehmen veröffentlicht wurden, jedoch entwickelte jedes Unternehmen seine Datenbankprodukte in seine eigene Richtung. Daher gibt es einige Unterschiede zwischen Sybase T-SQL und Microsoft T-SQL.
T-SQL und GUI-Tools
Transact-SQL ist von zentraler Bedeutung für SQL Server. Die meisten Vorgänge in SQL Server werden mit T-SQL ausgeführt. Dies gilt auch dann, wenn Sie ein GUI-Tool (wie SSMS oder DBeaver) verwenden und nicht wirklich programmieren. Jedes Mal, wenn Sie eine Anwendung verwenden, um mit SQL Server zu interagieren, verwendet die Anwendung im Hintergrund T-SQL, um die angegebene Aufgabe auszuführen.
Aber SQL Server ist nicht das einzige Datenbankverwaltungssystem, das Transact-SQL unterstützt. Microsoft Azure SQL-Datenbank unterstützt auch T-SQL. Die meisten von Anwendungen verwendeten T-SQL-Funktionen werden sowohl in Microsoft SQL Server als auch in Azure SQL-Datenbank vollständig unterstützt (obwohl es einige Ausnahmen gibt).
Über den GO-Befehl
Jeder, der T-SQL verwendet hat, wird wahrscheinlich mit GO
vertraut sein Befehl. Dieses Schlüsselwort wird oft am Ende einer Reihe von Anweisungen platziert. Das erste obige Beispiel könnte beispielsweise auch so geschrieben werden:
CREATE DATABASE Movies; GO
Aber das GO
Der Befehl ist nicht wirklich Teil von Transact-SQL. Tatsächlich ist das GO
Befehl kann nicht einmal dieselbe Zeile wie eine Transact-SQL-Anweisung belegen.
GO
ist einer der Befehle, die von sqlcmd erkannt werden und osql Dienstprogramme sowie SQL Server Management Studio Code Editor, um die Lesbarkeit und Ausführung von Batches und Skripts zu erleichtern. Das GO
signalisiert das Ende eines Stapels von Transact-SQL-Anweisungen an die SQL Server-Dienstprogramme.
SQL Server-Dienstprogramme interpretieren GO
als Signal, dass sie den aktuellen Batch von Transact-SQL-Anweisungen an eine Instanz von SQL Server senden sollen. Der aktuelle Stapel von Anweisungen besteht aus allen Anweisungen, die seit dem letzten GO
eingegeben wurden , oder seit dem Start der Ad-hoc-Sitzung oder des Skripts, wenn dies das erste GO
ist .
Andere proprietäre SQL-Erweiterungen
Transact-SQL ist nicht die einzige Erweiterung des SQL-Standards. Verschiedene Datenbanksysteme haben ihre eigenen Erweiterungen. Beispielsweise verwendet Oracle eine proprietäre prozedurale Sprache namens PL/SQL und PostgreSQL verwendet eine prozedurale Sprache namens PL/pgSQL.
Obwohl proprietäre SQL-Erweiterungen ihre Vorteile haben (z. B. erweiterte Funktionalität), haben sie auch ihre Nachteile. Ein großer Nachteil ist, dass sie die Dinge erschweren können, wenn Sie jemals eine Datenbank von einem System auf ein anderes portieren müssen. Wenn Ihre Organisation beispielsweise plötzlich beschließt, Oracle anstelle von SQL Server zu verwenden, müssen Sie möglicherweise den gesamten SQL Server-Code durchgehen und ihn für Oracle neu schreiben. Dazu müssen Sie sich auch mit der Syntax beider Systeme vertraut machen.