Database
 sql >> Datenbank >  >> RDS >> Database

T-SQL vs. SQL

Hier ist ein kurzer Überblick über den Unterschied zwischen SQL und T-SQL (Transact-SQL). Nicht so sehr die Unterschiede als solches, sondern eher eine Erklärung von T-SQL und wo es in Bezug auf SQL steht.

Wenn Sie Datenbankentwicklung oder -administration durchgeführt haben, sind Sie wahrscheinlich mit SQL vertraut. SQL steht für Structured Query Language und ist eine Standard-Abfragesprache für die Arbeit mit Datenbanken. Die meisten großen Verwaltungssysteme für relationale Datenbanken wie MySQL, Oracle, SQL Server, PostgreSQL usw. unterstützen SQL auf die eine oder andere Weise.

Während der SQL-Standard klare Spezifikationen bietet, ermöglicht er Datenbankanbietern jedoch auch, ihre eigenen Erweiterungen hinzuzufügen. Auf diese Weise können Anbieter ihren Kunden zusätzliche Merkmale und Funktionen anbieten, die von ihren Mitbewerbern möglicherweise nicht angeboten werden.

Hier kommt T-SQL ins Spiel.

Was ist Transact-SQL?

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.

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 blieb T-SQL bestehen 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.

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).

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 und UPDATE 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.

Ü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.

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 Stapel 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.