Wie Microsoft die Sprache „T-SQL“ weiterentwickelt

Keine Kommentare
Neuerung T-SQL

Neue Befehle kommen hinzu, andere fallen weg…

Eine natürliche Sprache wie Deutsch unterliegt ständigem Wandel. Aktuell stehen fast 150.000 Stichworte im Duden. Pro Jahr kommen ca. 3000 neue Begriffe hinzu, 300 andere werden gestrichen. So fanden in den letzten Jahren bspw. Ausdrücke wie „Insektensterben“, „Klimakrise“, „aufploppen“, „Lifehack“, „Enkeltag“, „Faktenfinder“, „Uploadfilter“ oder „Wiesn“ Eingang in das offizielle Rechtschreibwörterbuch. Lebende Sprachen passen sich so an veränderte Gegebenheiten und neue Entwicklungen an. Aber auch Vereinfachungen finden immer wieder den Weg in den Standard.

Ähnlich halten es die Datenbankenhersteller mit dem Umfang der eingesetzten Abfrage- und Programmiersprache. Microsoft als Hersteller des SQL Servers beobachtet sehr genau Foren, führt Gespräche mit Entwicklern auf Konferenzen weltweit und wertet das Feedback aus der eigenen Erwachsenenbildung aus. So entwickelt sich ein Gefühl, welche Funktionalitäten gewünscht sind aber momentan noch fehlen oder welche Befehle in der aktuellen Version zu kompliziert sind. Aus dieser Grundlage heraus bildetet Microsoft dann die Neuerung in T-SQL.

Euer Wunsch ist unser Befehl

In den SQL Server 2022 haben so einige neue Befehle sehr zur Freude der Entwicklergemeinde Einzug erhalten. Im Gegenzug wurden einige wenige Ausdrücke als „auslaufend“ markiert. Sie werden in zukünftigen Versionen nicht mehr unterstützt. Eine genaue Auflistung findet man auf den Hilfe- und Lernseiten des Unternehmens. In diesem Blogpost soll es aber um die neuen Möglichkeiten gehen. Ich habe mir zwei frische Befehle ausgesucht, um an ihnen beispielhaft zu zeigen, wie einfach nun Auswertungen werden, die vorher umständlich nachprogrammiert werden mussten.

Die Vorteile der neuen Befehle besteht allerdings nicht nur an der einfacheren Implementierung und der besseren Wartbarkeit von Quellcode, sondern oftmals wirken sie sich auch äußerst positiv auf das Laufzeitverhalten aus. Die Spezialisten von Microsoft haben hier nämlich die Möglichkeit der Optimierung (bspw. Parallelverarbeitung, Nutzung von Berechnungshardware, …) voll ausgenutzt und die Lösung ausführlich getestet. Bietet der Hersteller derartige Verbesserungen an, lohnt es sich sogar oft bestehenden Code nachträglich anzupassen. Auf jeden Fall sollte man aber zukünftig von diesen Optimierungen Gebrauch machen.

Daten aus dem Nichts generieren

Oft kommen Entwickler in die Bedrängnis eine spezielle Liste von Werten zur Verfügung haben zu müssen. So sind bspw. alle Daten eines Geschäftsjahres in einer Tabelle sinnvoll, um darauf joinen und filtern zu können. Doch wie generiert man eine solche Datumstabelle? Bisher war diese Arbeit händisch zu programmieren – Lösungen bspw. zur Ablage einer Tabelle mit fortlaufend nummerierten Zahlwerten funktionierten analog. Ich selbst habe jahrelang die schnelle rekursive Variante bevorzugt:

t-SQL Jahrestabelle mit Hilfe einer Rekursion
Beispielcode zur Erzeugung einer Jahrestabelle mit Hilfe einer Rekursion

Microsoft hat erkannt, dass hier jeder Entwickler sein eigenes Süppchen kocht. Von einer unzähligen Sammlung INSERTS über diverse Schleifenkonstruktionen findet man in einschlägigen Foren viele Lösungen. Nun hat der Hersteller hier nachgebessert und die Generierung derartiger Folgen vereinheitlicht und deutlich vereinfacht:

t-SQL GENERATE_SERIES
Der Befehl GENERATE_SERIES ist nicht nur für nummerische Werte hilfreich

Eine Frage der Größe

Auch mit den massenhaften Varianten der Größenvergleiche beschäftigt sich Microsoft mit Neuerung in T-SQL. Hier findet man bisher verschachtelte IF-Statements oder wüste WHERE-Blöcke mit aneinandergefügten Vergleichen. Da sich derartige Abfragen fachlich nicht direkt mit den Funktionen MIN() oder MAX() abbilden lassen (da diese nur Tabelleninhalte oder Inhalte von Tabellenwertvariablen vergleichen können), wurden die Funktionen GREATEST() und LEAST() geschaffen. Mit diesen kann man eine Auflistung von durch Komma getrennten Ausdrücken auswerten. Dabei darf es sich um bis zu 254 direkten Werte, Variablen oder Konstanten handeln. Möglich sind alle vergleichbaren Datentypen. Sogar Aggregatfunktionen und skalare Unterabfragen sind erlaubt.

T-SQL die Funktion GREATEST
Die Funktion GREATEST() erlaubt sogar unterschiedliche Datentypen als Vergleichswerte

Fazit

Um die Gunst der Nutzer zu erlangen und zu behalten, entwickeln die Hersteller ihrer Produkte stets weiter. Auch Microsoft beobachtet den Markt genau und optimiert hier bestehende Befehle und schafft neue Möglichkeiten, wo altbewährtes nicht ausreicht oder zu komplex in der Entwicklung ist. Es lohnt sich definitiv einen Blick in die Featureliste neuer Versionen zu werfen und sich wohlwollend zu überlegen seinen Quellcode anzupassen. Neuentwicklungen sollte man auf jeden Fall nach den aktuellen Standards vornehmen. Im Idealfall lernt man also nie aus… was sich mit guten Laufzeitverhalten und bequemer Programmierung und Wartung niederschlägt – wie schon diese zwei einfachen Beispiele zeigen. Die Neuerung in T-SQL sollten dabei immer im Auge behalten werden. Wir haben auch einen weiteren Artikel zu spannenden Themen in SQL.

Vorheriger Beitrag
Microsoft Fabric
Nächster Beitrag
SSIS vs ADF

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Weitere Beiträge