{"id":266,"date":"2018-05-30T00:01:07","date_gmt":"2018-05-29T22:01:07","guid":{"rendered":"https:\/\/staging.sql.marcus-belz.de\/?p=266"},"modified":"2026-05-07T02:29:49","modified_gmt":"2026-05-07T00:29:49","slug":"allgemeines-zur-formatierung-von-sql-statements","status":"publish","type":"post","link":"https:\/\/staging.sql.marcus-belz.de\/?p=266","title":{"rendered":"Formatierung von SQL Statements (Teil 1)"},"content":{"rendered":"<p><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=358\">This article in english&#8230;<\/a><\/p>\n<h2>\u00dcberblick<\/h2>\n<p>H\u00e4ufig werden Gro\u00dfbuchstaben dazu genutzt, um einzelne Worte zu betonen. Dieses gilt zum Beispiel f\u00fcr Deutsch als Sprache. Latein, Griechisch,\u2026 Obwohl es auch Sprachen gibt, die keine Unterscheidung zwischen Gro\u00df- und Kleinschreibung kennen, hat sie sich dennoch weitestgehend durchgesetzt.<\/p>\n<p>Das gilt nicht nur f\u00fcr die gesprochene Sprache, sondern auch f\u00fcr Programmiersprachen beziehungsweise Namenskonventionen f\u00fcr die Programmierung. So legt zum Beispiel die CamelCase-Notation fest, dass bei zusammengesetzten W\u00f6rtern die Anfangsbuchstaben der einzelnen Worte gro\u00df geschrieben werden.<\/p>\n<p style=\"padding-left: 40px;\"><strong>CamelCase<\/strong><\/p>\n<p>Es gibt auch Str\u00f6mungen, die das erste Wort des zusammengesetzten Begriffs klein schreiben:<\/p>\n<p style=\"padding-left: 40px;\"><strong>camelCase<\/strong><\/p>\n<p>Die Nutzung von Gro\u00dfbuchstaben ist damit auch in der Programmierung ein anerkanntes Mittel, um Worte, Bezeichner, Funktionsnamen, etc. besonders zu kennzeichnen.<\/p>\n<p>Die Definition von Regeln f\u00fcr die Schreibweise von Bezeichnern, Funktionsnamen, etc. ist unter Programmierern weitgehend akzeptiert und m\u00fcndet letztlich in einer Namenskonvention, die festlegt, wie die Sprachelemente einer Programmiersprache zu schreiben sind. Dennoch scheint es f\u00fcr viele Entwickler eine Herausforderung zu sein, sich an Namenskonventionen zu halten. Tats\u00e4chlich l\u00e4sst sich h\u00e4ufig sogar beobachten, dass Entwickler die \u201eeigene\u201c pr\u00e4ferierte Konvention nicht konsequent durchhalten.<\/p>\n<p>Die Einhaltung von Namenskonventionen erh\u00f6ht die Lesbarkeit von Text im Allgemeinen und in der Programmierung im\u00a0Besonderen. der Gleiche satz noch mal GeSchrieben Mit abweichungen von der allgemein BEKANNTEN namensKonvention, dass Substantive Gro\u00df geschrieben werden und adjektive, wie auch verben In KleinBuchstaben, wird der text Unleserlich: \u201edie einhaltung Von namensKonventionen Erh\u00f6ht Die lesbarkeit von text im allgemeinen Und In der programmierung Im Besonderen.\u201c<\/p>\n<p>Das folgende Statement entstammt der View\u00a0<strong>vTimeSeries<\/strong>\u00a0aus der Datenbank\u00a0<strong>AdventureWorksDW2017<\/strong>\u00a0und wurde von mir leicht \u00fcberarbeitet. Ich habe mir hier nicht viel M\u00fche gegeben, eine wie auch immer geartete Namenskonventionen einzuhalten.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-268 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png\" alt=\"\" width=\"654\" height=\"272\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png 654w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001-300x125.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=269\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>In dem nachfolgenden Statement sind Funktionsnamen gro\u00df geschrieben, alle Feldnamen sind mit Delimiter notiert, Datentypen sind klein geschrieben und schlie\u00dflich ist das Statements in sich konsistent ausgerichtet und formatiert\u2026<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007002.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-270 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007002.png\" alt=\"\" width=\"819\" height=\"480\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007002.png 819w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007002-300x176.png 300w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007002-768x450.png 768w\" sizes=\"auto, (max-width: 819px) 100vw, 819px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=271\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Ob die angewendete Formatierung nun gef\u00e4llt oder nicht, das\u00a0muss jeder f\u00fcr sich entscheiden. In jedem Fall\u00a0erscheint das zweite Statement auf den ersten Blick aufger\u00e4umter und leichter verst\u00e4ndlich.<\/p>\n<p>Damit sind nun auch schon einige Punkte genannt, die grundlegend in jeder Namenskonvention festgelegt sein sollten. Dar\u00fcber hinaus gibt es noch einige andere Dinge, die in einem solchen Regelwerk festzuhalten sind:<\/p>\n<ul>\n<li><a href=\"#H2_01\">Regul\u00e4re Bezeichner<\/a><\/li>\n<li><a href=\"#H2_02\">Bezeichnungsbegrenzer<\/a><\/li>\n<li><a href=\"#H2_03\">Der Spacer<\/a><\/li>\n<li><a href=\"#H2_04\">Das Semikolon<\/a><\/li>\n<li><a href=\"#H2_05\">Das Komma<\/a><\/li>\n<li><a href=\"#H2_06\">Funktionsnamen<\/a><\/li>\n<li><a href=\"#H2_07\">Aliase<\/a><\/li>\n<li><a href=\"#H2_08\">Qualifizierte Feldnamen<\/a><\/li>\n<\/ul>\n<p>Diese Liste ist nicht vollst\u00e4ndig und soll Anregung f\u00fcr die Bereiche\/Elemente sein, f\u00fcr die eine Namenskonvention zu erstellen ist.<\/p>\n<p>In einem zweiten Teil zur Formatierung von SQL Statements werden Best Practices f\u00fcr die Strukturierung von SQL Statements zusammengetragen.<br \/>\n<a name=\"H2_01\"><\/a><\/p>\n<h2><strong>Regul\u00e4re Bezeichner<\/strong><\/h2>\n<p>Alle Datenbankobjekte haben nat\u00fcrlich einen Namen, den sogenannten\u00a0<em>Bezeichner<\/em>. Jeder Datenbankprovider spezifiziert Regeln f\u00fcr die Vergabe eines g\u00fcltigen Bezeichners. So ist in SQL Server die L\u00e4nge von Bezeichnern in der Regel auf 128 Zeichen beschr\u00e4nkt und ein regul\u00e4rer Bezeichner darf zum\u00a0Beispiel keine Leerzeichen enthalten. Die genaue Definition eines regul\u00e4ren Bezeichners kann in der Online-Dokumentation nachgelesen werden:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/docs.microsoft.com\/de-de\/sql\/relational-databases\/databases\/database-identifiers?view=sql-server-2017\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/docs.microsoft.com\/de-de\/sql\/relational-databases\/databases\/database-identifiers?view=sql-server-2017<\/a><\/p>\n<p>Die Definition eines regul\u00e4ren Bezeichners ist jedoch meines Erachtens zu weit gefasst.<\/p>\n<p>W\u00e4hrend z.B. der Unterstrich\u00a0<strong>_<\/strong>\u00a0als trennendes Zeichen zwischen Wort-Bestandteilen weit verbreitet ist und Bestandteil eines regul\u00e4ren Bezeichners sein kann, vermeide ich dieses Zeichen weitgehend, da die Notation eines Bezeichners nach CamelCase den gleichen Zweck erf\u00fcllt und Bezeichner kompakter erscheinen l\u00e4sst.<\/p>\n<p>Laut Definition zul\u00e4ssige Sonderzeichen wie das\u00a0<strong>@<\/strong>,\u00a0<strong>#<\/strong>und\u00a0<strong>$<\/strong>\u00a0vermeide ich komplett. Die Verwendung dieser Zeichen machen einen Bezeichner unleserlich. Sie sind einem Buchstaben aus dem lateinischen Alphabet zu \u00e4hnlich und k\u00f6nnen doch nicht als solcher direkt erfasst werden.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007003.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-273 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007003.png\" alt=\"\" width=\"417\" height=\"96\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007003.png 417w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007003-300x69.png 300w\" sizes=\"auto, (max-width: 417px) 100vw, 417px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=278\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Ich beschr\u00e4nke mich daher bei der Wahl eines Bezeichners auf Buchtstaben des lateinischen Alphabetes\u00a0<strong>[a-zA-Z]<\/strong>\u00a0sowie die Ziffern\u00a0<strong>[0-9]<\/strong>, sofern sich die Verwendung von Ziffern nicht vermeiden l\u00e4sst. Damit lassen sich die Regeln f\u00fcr die Wahl eines guten Bezeichners auf zwei Regel reduzieren:<\/p>\n<ul>\n<li>Nur Buchstaben des lateinischen Alphabetes<\/li>\n<li>Hilfsweise Ziffern<\/li>\n<\/ul>\n<p>Eine konsequente Vergabe von regul\u00e4ren Bezeichnern geht nat\u00fcrlich immer Hand in Hand mit der Entwicklung einer Namenskonvention f\u00fcr Objektnamen.<br \/>\n<a name=\"H2_02\"><\/a><\/p>\n<h2><strong>Bezeichnungsbegrenzer<\/strong><\/h2>\n<p>Sobald ein Bezeichner ein Leerzeichen enth\u00e4lt, handelt es sich nicht mehr um einen regul\u00e4ren Bezeichner. Die Verwendung von nicht regul\u00e4ren Bezeichnern ist kein guter Programmierstil. Dennoch sind nicht regul\u00e4re Bezeichner zul\u00e4ssig, wenn die Bezeichner entweder von Anf\u00fchrungszeichen oder den eckigen Klammern eingeschlossen sind.<\/p>\n<p>Die Verwendung von Anf\u00fchrungszeichen ist in den meisten SQL Dialekten Standard. Microsoft erlaubt hier aber auch \u2013 abweichend vom Standard \u2013 eckige Klammern. Ich bevorzuge die eckigen Klammern als propriet\u00e4re Auspr\u00e4gung f\u00fcr Bezeichnungsbegrenzer.<\/p>\n<p>Da Bezeichnungsbegrenzer Bezeichner nach meinem Empfinden wesentlich besser visuell von anderen Sprachelementen eines SQL Statements abgrenzen und damit wesentlich zur Lesbarkeit eines SQL Statements beitragen, verwende ich Bezeichnungsbegrenzer grunds\u00e4tzlich unabh\u00e4ngig davon, ob Bezeichner regul\u00e4r sind oder nicht:<\/p>\n<ul>\n<li>Schemas<\/li>\n<li>Tabellen<\/li>\n<li>Views<\/li>\n<li>Feldnamen<\/li>\n<li>Aliase<\/li>\n<li>Alle Objekte aus dem Bereich der Programmierung (Funktionen, Prozeduren, etc.)<\/li>\n<\/ul>\n<p>Das folgende Statement entspricht exakt dem zweiten Statement aus diesem Artikel. Die Bezeichner sind jedoch nicht mit Bezeichnungsbegrenzern notiert.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007004.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-280 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007004.png\" alt=\"\" width=\"801\" height=\"480\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007004.png 801w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007004-300x180.png 300w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007004-768x460.png 768w\" sizes=\"auto, (max-width: 801px) 100vw, 801px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=281\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Offensichtlich gibt Microsoft der Verwendung der eckigen Klammern den Vorzug, da zahlreiche automatisiert erstellte Skripte als Bezeichnungsbegrenzer die eckigen Klammern verwenden. So verwendet SQL Server Management Studio (SSMS) ebenfalls eckige Klammern bei automatisch generierten SELECT- und DDL Statements (\u00fcber das Kontext-Men\u00fc zu einer Tabelle). Microsoft ist hier leider nicht sehr konsequent und verzichtet bei der Erstellung von Views \u00fcber den Wizard sowie in dem SQL Panel des Edit-Features auf Bezeichnungsbegrenzer, soweit diese weggelassen werden k\u00f6nnen. Die folgenden beiden Screenshots von automatisch generiertem SQL k\u00f6nnen als gutes Beispiel f\u00fcr nicht wartbaren Code angesehen werden:<\/p>\n<p><strong>View<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007005.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-284 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007005.png\" alt=\"\" width=\"500\" height=\"706\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007005.png 500w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007005-212x300.png 212w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p><strong>Edit Feature<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007006.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-283 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007006.png\" alt=\"\" width=\"500\" height=\"200\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007006.png 500w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007006-300x120.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>Die Verwendung von Bezeichnungsbegrenzern ist \u00fcbrigens nur dann zul\u00e4ssig, wenn die SQL Server Einstellung\u00a0<strong>QUOTED_IDENTIFIER<\/strong>\u00a0auf\u00a0<strong>ON<\/strong>\u00a0gesetzt ist<\/p>\n<p><strong>SET QUOTED_IDENTIFIER ON<\/strong><\/p>\n<p>Ist diese Einstellung auf\u00a0<strong>OFF<\/strong>\u00a0gesetzt, sind nicht regul\u00e4re Bezeichner unzul\u00e4ssig:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/docs.microsoft.com\/de-de\/sql\/t-sql\/statements\/set-quoted-identifier-transact-sql?view=sql-server-2017\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/docs.microsoft.com\/de-de\/sql\/t-sql\/statements\/set-quoted-identifier-transact-sql?view=sql-server-2017<\/a><\/p>\n<p><a name=\"H2_03\"><\/a><\/p>\n<h2><strong>Der Spacer<\/strong><\/h2>\n<p>\u2026oder vielleicht sollte ich eher schreiben, der vertikale Spacer. Die nat\u00fcrliche Leserichtung (eines SQL Statements) ist von links nach rechts und von oben nach unten.<\/p>\n<p>W\u00e4hrend Software als Folge von Einzelanweisungen erstellt wird, ist SQL darauf ausgelegt viele Arbeitsschritte in einer einzigen Anweisung auszuf\u00fchren. Ein SQL Statement kann schnell hundert und mehr Zeilen enthalten. Hieraus ergibt sich eine besondere Herausforderung, gute SQL Statements zu schreiben. Ein Wesentliches Kriterium f\u00fcr die schnelle Erfassung der Struktur und auch der Aufgabe eines Statements ist nicht nur eine klare Gliederung und Formatierung des Statements, sondern auch die Kompaktheit. Bei einer hohen Aufl\u00f6sung und ansonsten normalen Anzeigeeinstellungen d\u00fcrften auf einem normalen Monitor in SSMS maximal 40 Zeilen sichtbar sein, wenn nur ein Abfragefenster und kein Ergebnisfenster sichtbar sind. Im Normalfall sind aber wohl maximal 25 bis 30 Zeilen sichtbar.<\/p>\n<p>Es gibt durchaus Kollegen in der programmierenden Zunft, die hinter jeder Zeile<\/p>\n<p>Code eine Leerzeile einf\u00fcgen. Eine \u00fcberm\u00e4\u00dfige Verwendung von leeren Zeilen n\u00f6tigt<\/p>\n<p>den Leser eines Statements zum \u00fcberm\u00e4\u00dfigen Gebrauch der Navigationstasten oder<\/p>\n<p>des Mausrades. Schlimmer noch ist, dass hierdurch der Gesamtkontext eines<\/p>\n<p>Statements schlechter zu erfassen ist.<\/p>\n<p>Leerzeilen k\u00f6nnen ein gutes stilistisches Mittel sein um logische Bl\u00f6cke voneinander zu trennen. Der \u00fcberm\u00e4\u00dfige Gebrauch jedoch macht ein Statement schwerer lesbar.<br \/>\n<a name=\"H2_04\"><\/a><\/p>\n<h2><strong>Das Semikolon<\/strong><\/h2>\n<p>Gem\u00e4\u00df SQL Standard sind alle SQL Anweisungen mit einem Semikolon abzuschlie\u00dfen. Zumindest SQL Server ist hier tolerant und zwingt den Programmierer nicht dazu, das Semikolon zu verwenden. Es gibt nur wenige F\u00e4lle in denen die Verwendung eines Semikolon\u00a0Pflicht ist.<\/p>\n<p>So muss zum Beispiel bei Verwendung einer\u00a0<em>Common Table Expression<\/em>\u00a0die Anweisung, die vor dem einleitenden Schl\u00fcsselwort\u00a0<strong>WITH<\/strong>\u00a0steht, mit einem Semikolon abgeschlossen sein. Um m\u00f6glichen Problemen aus dem Weg zu gehen notieren zahlreiche Entwickler das einleitende\u00a0<strong>WITH<\/strong>\u00a0als\u00a0<strong>;WITH<\/strong>.<\/p>\n<p>Die Verwendung des Semikolon zeugt in jedem Fall nicht nur von Sorgfalt, sie f\u00f6rdert die Lesbarkeit und erleichtert im Zweifel auch die Migration einer SQL Anwendung in eine Datenbank eines anderen Providers.<br \/>\n<a name=\"H2_05\"><\/a><\/p>\n<h2><strong>Das Komma<\/strong><\/h2>\n<p>Feldlisten sind in SQL durch ein Komma zu trennen. In der Welt der Programmierer gibt es jene, die das Komma einem Feldnamen voranstellen und solche, die es nach einem Feldnamen notieren. Das F\u00fcr und Wider beschr\u00e4nkt sich im Wesentlichen darauf, wie schwierig es ist, neue Felder hinzuzuf\u00fcgen oder zu l\u00f6schen. Der eigentliche Grund, warum das Komma aber an den Anfang geh\u00f6rt, ist die Lesbarkeit und die M\u00f6glichkeit zur Formatierung mit dem Spalten Editor (siehe auch\u00a0<a href=\"https:\/\/staging.sql.marcus-belz.de\/2018\/05\/07\/allgemeines-zur-formatierung-von-sql-statements\/2018\/03\/18\/funktionale-aesthetik-von-sql\/\">Funktionale \u00c4sthetik von SQL<\/a>).<\/p>\n<h3><strong>Komma vor dem Feldnamen<\/strong><\/h3>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070007.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-304 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070007.png\" alt=\"\" width=\"221\" height=\"80\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=296\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Wenn ich als weiteren Feldnamen nun\u00a0<strong>FrenchDayNameOfWeek<\/strong>\u00a0hinzuf\u00fcgen m\u00f6chte, f\u00e4llt es mir leichter, das Feld am Ende hinzuzuf\u00fcgen, da nur der Text<\/p>\n<pre style=\"padding-left: 30px;\">,[FrenchDayNameOfWeek]<\/pre>\n<p>hinter dem Feld\u00a0<strong>SpanishDayNameOfWeek<\/strong>\u00a0einzuf\u00fcgen ist:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070008.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-305 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070008.png\" alt=\"\" width=\"215\" height=\"96\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=297\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Soll das Feld als erstes Feld eingef\u00fcgt werden, sind zwei \u00c4nderungen erforderlich: Vor dem Feld\u00a0<strong>EnglishDayNameOfWeek<\/strong>\u00a0ist die Zeile<\/p>\n<pre style=\"padding-left: 30px;\">[FrenchDayNameOfWeek]<\/pre>\n<p>und vor dem Feld\u00a0<strong>EnglishDayNameOfWeek<\/strong>\u00a0ein Komma einzuf\u00fcgen:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070009.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-306 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070009.png\" alt=\"\" width=\"223\" height=\"96\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=298\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<h3><strong>Komma nach dem Feldnamen<\/strong><\/h3>\n<p>Wenn das Komma hinter den Feldnamen geschrieben wird, stellte sich der Sachverhalt genau umgekehrt dar: Es ist leichter ein neues Feld an Position 1 hinzuzuf\u00fcgen, als an letzter Stelle.<\/p>\n<h3><strong>Das Komma und die Lesbarkeit<\/strong><\/h3>\n<p>Das Komma ist ein Trennzeichen. Es markiert den Wechsel von einem Feld zum n\u00e4chsten. Wird das Komma jeweils hinter einen Feldnamen geschrieben, verliert es seinen trennenden Charakter aufgrund der unterschiedlichen L\u00e4ngen der Feldnamen.<\/p>\n<p>In dem folgenden Statement ist nicht sofort ersichtlich, ob der Bezeichner\u00a0<strong>Alias<\/strong>\u00a0ein Feldname ist oder eine andere Bedeutung hat. Der Betrachter muss die Zeile oberhalb des Bezeichners\u00a0<strong>Alias<\/strong>\u00a0lesen um festzustellen, dass der Bezeichner als Alias zu lesen ist.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070010.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-291 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070010.png\" alt=\"\" width=\"230\" height=\"144\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=299\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Anders stellt es sich dar, wenn das Komma vor die Feldnamen geschrieben wird. In diesem Fall ist sofort ersichtlich, dass der Bezeichner\u00a0<strong>Alias<\/strong>\u00a0kein Feldname ist, da ihm kein Komma vorangestellt ist:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070011.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-292 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070011.png\" alt=\"\" width=\"234\" height=\"144\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=300\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<h3><strong>Das Komma und der Spalten-Editor<\/strong><\/h3>\n<p>In dem folgenden Statement ist es schon eine kleine Herausforderung, den Feldnamen einen Alias zu verpassen.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070012.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-293 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070012.png\" alt=\"\" width=\"212\" height=\"128\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=301\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Es ist das Komma um mindestens eine Position nach rechts zu verschieben und vor dem Komma ist das Schl\u00fcsselwort\u00a0<strong>AS<\/strong>\u00a0sowie der Alias selbst einzuf\u00fcgen. Und das jeweils f\u00fcr 4 Zeilen bzw. Feldnamen.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070013.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-294 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070013.png\" alt=\"\" width=\"410\" height=\"128\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070013.png 410w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070013-300x94.png 300w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=302\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Der Aufwand, der hierf\u00fcr betrieben werden muss, ist betr\u00e4chtlich und kann erheblich reduziert werden, wenn das SQL Statement so formatiert ist, dass es effizient mit dem Spalteneditor bearbeitet werden kann.<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-295\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070014.png\" alt=\"\" width=\"415\" height=\"128\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070014.png 415w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070014-300x93.png 300w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=303\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Es sind keine Kommas zu verschieben. \u00dcber den Spalteneditor ist das Schl\u00fcsselwort\u00a0<strong>AS<\/strong>\u00a0nur einmal zu tippen, die Feldnamen k\u00f6nnen als Basis f\u00fcr die Vergabe des Alias verwendet und \u00fcber den Spalteneditor als Block hinter das Schl\u00fcsselwort\u00a0<strong>AS<\/strong>\u00a0kopiert werden, um diese anschlie\u00dfend \u2013 ebenfalls \u00fcber den Spalteneditor \u2013 um den Pr\u00e4fix\u00a0<strong>Alias<\/strong>\u00a0zu erweitern. Das Beste an dieser Vorgehensweise ist: Der Aufwand hierf\u00fcr ist weitestgehend unabh\u00e4ngig von der Anzahl der zu bearbeitenden Zeilen bzw. Feldnamen.<\/p>\n<p>Die effiziente Verwendung des Spalteneditors ist erst mit vorangestellten Kommas m\u00f6glich und damit ein absolutes Killer-Argument f\u00fcr vorangestellte Kommas.<br \/>\n<a name=\"H2_06\"><\/a><\/p>\n<h2><strong>Funktionsnamen<\/strong><\/h2>\n<p>Funktionsnamen werden in SSMS durch rosafarbene Buchstaben hervorgehoben und sind damit per se leicht(er) zu identifizieren. Da aber nicht alle Editoren eine farbliche Hervorhebung von Funktionsnamen verwenden, sollten Funktionsnamen auch durch eine einheitliche Gro\u00df- oder Kleinschreibung kenntlich gemacht werden.<\/p>\n<p>Funktionsnamen sollten also entweder nur gro\u00df oder nur klein geschrieben werden.<\/p>\n<p>Microsoft selbst \u2013 aber auch andere Datenbankprovider \u2013 notieren Funktionsnamen in der Online Dokumentation in Gro\u00dfbuchstaben. Warum also von dem Standard abweichen?!<br \/>\n<a name=\"H2_07\"><\/a><\/p>\n<h2><strong>Aliase<\/strong><\/h2>\n<p>Eine weit verbreitete Praxis ist es, einen Tabellen-Alias als \u201esprechende\u201c Abk\u00fcrzung aus dem Tabellennamen\u00a0abzuleiten. F\u00fcr die Tabelle\u00a0<strong>FactInternetSales<\/strong>\u00a0k\u00f6nnte zum Beispiel der Alias\u00a0<strong>IS\u00a0<\/strong>verwendet werden. Die Buchstaben ergeben sich aus den Anfangsbuchstaben der Wort-Bestandteile des Tabellennamens (ohne Ber\u00fccksichtigung des Pr\u00e4fix\u00a0<strong>Fact<\/strong>). Da\u00a0<strong>IS<\/strong>\u00a0ein reserviertes Wort ist, muss dieser Alias zwingend mit Bezeichnungsbegrenzern umschlossen werden. F\u00fcr andere Tabellen k\u00f6nnten folgende Aliase abgeleitet werden:<\/p>\n<table style=\"margin-left: 30px;\">\n<tbody style=\"padding-left: 35px;\">\n<tr style=\"padding-left: 30px;\">\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">DimCustomer<\/td>\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">CUST<\/td>\n<\/tr>\n<tr style=\"padding-left: 30px;\">\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">DimProduct<\/td>\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">P<\/td>\n<\/tr>\n<tr style=\"padding-left: 30px;\">\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">DimProductCategory<\/td>\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">PC<\/td>\n<\/tr>\n<tr style=\"padding-left: 30px;\">\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">DimProductSubcategory<\/td>\n<td style=\"padding-left: 35px; text-align: left;\" width=\"10\">PSC<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ein SELECT Statement \u00fcber die oben genannten Tabellen k\u00f6nnte dann wie folgt aussehen:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070015.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-339 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070015.png\" alt=\"\" width=\"472\" height=\"336\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070015.png 472w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070015-300x214.png 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=340\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Die unterschiedliche Einr\u00fcckung der Feldnamen selbst resultiert aus den unterschiedlichen L\u00e4ngen der Aliase. Diese haben eine L\u00e4nge zwischen 1 und 4 Zeichen. Die Feldliste erscheint \u201eunruhig\u201c und kann bei komplexeren Statements und Verwendung von weiteren Sprachelementen (Funktionen, CASE-Anweisungen, etc.) schnell unleserlich werden.<\/p>\n<p>Man stelle sich ein SELECT Statement auf der Basis von 20 und mehr Tabellen vor. Irgendwann wird es schwer, f\u00fcr einen Tabellennamen einen sinnvollen Alias zu verwenden. Sp\u00e4testens ab dem 5 Alias in einem Statement d\u00fcrfte die Herleitung des Alias aus Tabellennamen die Lesbarkeit des Statements nicht mehr verbessern, da die Aliase dann doch zu kryptisch sind.<\/p>\n<p>W\u00e4ren systematische, m\u00f6glicherweise sogar indizierte Aliase nicht leichter in einem komplexen Statement zu identifizieren?<\/p>\n<p>Systematische Aliase k\u00f6nnten wie folgt definiert sein:<\/p>\n<ol>\n<li>Aliase sollen auf eine fixe Anzahl Zeichen begrenzt sein<\/li>\n<li>Aliase sind zu indizieren (mit einem oder mehreren f\u00fchrenden Buchstaben)<\/li>\n<\/ol>\n<p>Verwendet man zum Beispiel als Alias den Buchstaben <strong>T<\/strong> f\u00fcr <strong>Tabelle<\/strong> (oder <strong>F<\/strong> f\u00fcr <strong>Fakten-Tabelle<\/strong>, <strong>D<\/strong> f\u00fcr <strong>Dimension<\/strong>, etc.) gefolgt von einer zweistelligen 1-basierten Indizierung, dann ergeben sich die folgenden Aliase: <strong>T01<\/strong>, <strong>T02<\/strong>, <strong>D01<\/strong>, <strong>F01<\/strong>,\u2026<\/p>\n<p>Unter Verwendung dieser Aliase erscheint das obige Statement lesbarer:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070016.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-344 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070016.png\" alt=\"\" width=\"472\" height=\"336\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070016.png 472w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070016-300x214.png 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=343\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/p>\n<p>Die Feldnamen innerhalb der SELECT Liste sind sauber ausgerichtet.<\/p>\n<p>Das eigentliche Killer-Argument ist aber auch hier: Die Notation von gleichlangen Aliasen erm\u00f6glicht erst den Einsatz des Power-Features <em>Spalteneditor<\/em>.<\/p>\n<p>Neben diesem Killer-Argument gibt es aber noch einen anderen gewichtigen Grund, \u00fcberhaupt Aliase zu verwenden: Erst durch die Verwendung von Aliasen, kann das Feature <strong>Intellisense<\/strong> effizient genutzt werden. Notiert der Entwickler einen Alias gefolgt von einem Punkt, dann \u00f6ffnet sich ein Kontext-Men\u00fc, das nur die zu dem Alias geh\u00f6renden Feldnamen auflistet:<\/p>\n<p>Das Kontextmen\u00fc kann \u2013 wenn sich der Cursor hinter dem Punkt befindet \u2013 auch \u00fcber die Tastenkombination STRG+Leertaste manuell aufgerufen werden. Das Kontext-Men\u00fc kann nat\u00fcrlich auch ohne den Kontext des vorangestellten Alias genutzt werden. Allerdings bietet SSMS dann mehr oder minder den gesamten Sprachschatz von T-SQL zur Auswahl an.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070017.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-346 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070017.png\" alt=\"\" width=\"480\" height=\"214\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070017.png 480w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070017-300x134.png 300w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p>Aliase machen SQL Code leserlicher und damit wartbar. Daher sollten auch bei einfacheren Statements immer Aliase verwendet werden.<br \/>\n<a name=\"H2_08\"><\/a><\/p>\n<h2><strong>Qualifizierte Feldnamen<\/strong><\/h2>\n<p>Werden von einem Statement mehrere Tabellen referenziert, wird schnell der Fall eintreten, dass die somit aus allen referenzierten Tabellen Feldnamen nicht eindeutig sind. In dem folgenden Beispiel sollen zu einem Fakt ResellerSales Namen und Telefonnummer sowohl des Mitarbeiters als auch des Vertriebspartners ausgegeben werden:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070018.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-349 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070018.png\" alt=\"\" width=\"357\" height=\"240\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070018.png 357w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070018-300x202.png 300w\" sizes=\"auto, (max-width: 357px) 100vw, 357px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=350\" target=\"_blank\" rel=\"attachment noopener wp-att-350 noreferrer\">Source<\/a><\/p>\n<p>Das Statement ist nicht ausf\u00fchrbar, da die Spalte <strong>Phone<\/strong> in beiden herangejointen Dimensionen <strong>DimEmployee<\/strong> und <strong>DimReseller<\/strong> vorhanden ist. Die Angabe eines Alias ist hier zwingend erforderlich<\/p>\n<pre style=\"padding-left: 30px;\">T01.[Phone] AS [Emplyee_Phone]<\/pre>\n<p>oder \u2013 sofern keine Tabellenaliase verwendet werden \u2013 ist der Tabellenname selbst dem Feld voranzustellen:<\/p>\n<pre style=\"padding-left: 30px;\">[DimEmplyoee].[Phone]\u00a0AS [Emplyee_Phone]<\/pre>\n<p>Letztere Variante tr\u00e4gt jedoch nicht zur Lesbarkeit des Statements bei.<\/p>\n<p>Ein voll qualifizierter Feldname besteht insgesamt aus 5 Elementen:<\/p>\n<pre style=\"padding-left: 30px;\">[Server].[Datenbank].[Schema].[Tabelle].[Feld]<\/pre>\n<p>Ein Beispiel hierf\u00fcr findet sich in der folgenden Abbildung (Tabellenname enth\u00e4lt den Namen der Datenbank):<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070019.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-354 size-full\" src=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070019.png\" alt=\"\" width=\"462\" height=\"240\" srcset=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070019.png 462w, https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post00070019-300x156.png 300w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/staging.sql.marcus-belz.de\/?attachment_id=353\" target=\"_blank\" rel=\"attachment noopener wp-att-353 noreferrer\">Source<\/a><\/p>\n<p>Eine \u00fcber das Schema hinausgehende Qualifizierung verhindert die Portierbarkeit einer Anwendung in eine Datenbank, die nicht den gleichen Namen <strong>AdventuerWorksDW2017<\/strong> hat. Ich habe schon ETL-Strecken gesehen, in denen Tabellen bis zum Datenbanknamen voll qualifiziert angegeben waren:<\/p>\n<p style=\"padding-left: 30px;\">[Datenbank].[Schema].[Tabelle].[Feld]<\/p>\n<p>Die Schnittstelle war nach Fertigstellung nicht in der Produktion deploybar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article in english&#8230; \u00dcberblick H\u00e4ufig werden Gro\u00dfbuchstaben dazu genutzt, um einzelne Worte zu betonen. Dieses gilt zum Beispiel f\u00fcr Deutsch als Sprache. Latein, Griechisch,\u2026 Obwohl es auch Sprachen gibt, die keine Unterscheidung zwischen Gro\u00df- und Kleinschreibung kennen, hat sie sich dennoch weitestgehend durchgesetzt. Das gilt nicht nur f\u00fcr die gesprochene Sprache, sondern auch f\u00fcr &#8230; <a title=\"Formatierung von SQL Statements (Teil 1)\" class=\"read-more\" href=\"https:\/\/staging.sql.marcus-belz.de\/?p=266\" aria-label=\"Mehr Informationen \u00fcber Formatierung von SQL Statements (Teil 1)\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5],"tags":[11,8,9,10],"class_list":["post-266","post","type-post","status-publish","format-standard","hentry","category-all-languages","category-german","tag-column-editor","tag-format","tag-naming-convention","tag-t-sql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Formatierung von SQL Statements (Teil 1) - Just another SQL blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/staging.sql.marcus-belz.de\/?p=266\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Formatierung von SQL Statements (Teil 1) - Just another SQL blog\" \/>\n<meta property=\"og:description\" content=\"This article in english&#8230; \u00dcberblick H\u00e4ufig werden Gro\u00dfbuchstaben dazu genutzt, um einzelne Worte zu betonen. Dieses gilt zum Beispiel f\u00fcr Deutsch als Sprache. Latein, Griechisch,\u2026 Obwohl es auch Sprachen gibt, die keine Unterscheidung zwischen Gro\u00df- und Kleinschreibung kennen, hat sie sich dennoch weitestgehend durchgesetzt. Das gilt nicht nur f\u00fcr die gesprochene Sprache, sondern auch f\u00fcr ... Weiterlesen\" \/>\n<meta property=\"og:url\" content=\"https:\/\/staging.sql.marcus-belz.de\/?p=266\" \/>\n<meta property=\"og:site_name\" content=\"Just another SQL blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-29T22:01:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-07T00:29:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png\" \/>\n<meta name=\"author\" content=\"marcus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschrieben von\" \/>\n\t<meta name=\"twitter:data1\" content=\"marcus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"13\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266\"},\"author\":{\"name\":\"marcus\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#\\\/schema\\\/person\\\/98ab042e47d7286f64530ee18f20f675\"},\"headline\":\"Formatierung von SQL Statements (Teil 1)\",\"datePublished\":\"2018-05-29T22:01:07+00:00\",\"dateModified\":\"2026-05-07T00:29:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266\"},\"wordCount\":2527,\"image\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/post0007001.png\",\"keywords\":[\"Column Editor\",\"Format\",\"Naming Convention\",\"T-SQL\"],\"articleSection\":[\"All Languages\",\"German\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266\",\"url\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266\",\"name\":\"Formatierung von SQL Statements (Teil 1) - Just another SQL blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/post0007001.png\",\"datePublished\":\"2018-05-29T22:01:07+00:00\",\"dateModified\":\"2026-05-07T00:29:49+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#\\\/schema\\\/person\\\/98ab042e47d7286f64530ee18f20f675\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266#primaryimage\",\"url\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/post0007001.png\",\"contentUrl\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/post0007001.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=266#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Formatierung von SQL Statements (Teil 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#website\",\"url\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/\",\"name\":\"Just another SQL blog\",\"description\":\"Marcus Belz \u00b7 SQL Server \u00b7 ETL \u00b7 Datenqualit\u00e4t\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#\\\/schema\\\/person\\\/98ab042e47d7286f64530ee18f20f675\",\"name\":\"marcus\",\"url\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Formatierung von SQL Statements (Teil 1) - Just another SQL blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/staging.sql.marcus-belz.de\/?p=266","og_locale":"de_DE","og_type":"article","og_title":"Formatierung von SQL Statements (Teil 1) - Just another SQL blog","og_description":"This article in english&#8230; \u00dcberblick H\u00e4ufig werden Gro\u00dfbuchstaben dazu genutzt, um einzelne Worte zu betonen. Dieses gilt zum Beispiel f\u00fcr Deutsch als Sprache. Latein, Griechisch,\u2026 Obwohl es auch Sprachen gibt, die keine Unterscheidung zwischen Gro\u00df- und Kleinschreibung kennen, hat sie sich dennoch weitestgehend durchgesetzt. Das gilt nicht nur f\u00fcr die gesprochene Sprache, sondern auch f\u00fcr ... Weiterlesen","og_url":"https:\/\/staging.sql.marcus-belz.de\/?p=266","og_site_name":"Just another SQL blog","article_published_time":"2018-05-29T22:01:07+00:00","article_modified_time":"2026-05-07T00:29:49+00:00","og_image":[{"url":"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png","type":"","width":"","height":""}],"author":"marcus","twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"marcus","Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266#article","isPartOf":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266"},"author":{"name":"marcus","@id":"https:\/\/staging.sql.marcus-belz.de\/#\/schema\/person\/98ab042e47d7286f64530ee18f20f675"},"headline":"Formatierung von SQL Statements (Teil 1)","datePublished":"2018-05-29T22:01:07+00:00","dateModified":"2026-05-07T00:29:49+00:00","mainEntityOfPage":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266"},"wordCount":2527,"image":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266#primaryimage"},"thumbnailUrl":"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png","keywords":["Column Editor","Format","Naming Convention","T-SQL"],"articleSection":["All Languages","German"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266","url":"https:\/\/staging.sql.marcus-belz.de\/?p=266","name":"Formatierung von SQL Statements (Teil 1) - Just another SQL blog","isPartOf":{"@id":"https:\/\/staging.sql.marcus-belz.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266#primaryimage"},"image":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266#primaryimage"},"thumbnailUrl":"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png","datePublished":"2018-05-29T22:01:07+00:00","dateModified":"2026-05-07T00:29:49+00:00","author":{"@id":"https:\/\/staging.sql.marcus-belz.de\/#\/schema\/person\/98ab042e47d7286f64530ee18f20f675"},"breadcrumb":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/staging.sql.marcus-belz.de\/?p=266"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266#primaryimage","url":"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png","contentUrl":"https:\/\/staging.sql.marcus-belz.de\/wp-content\/uploads\/2018\/05\/post0007001.png"},{"@type":"BreadcrumbList","@id":"https:\/\/staging.sql.marcus-belz.de\/?p=266#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/staging.sql.marcus-belz.de\/"},{"@type":"ListItem","position":2,"name":"Formatierung von SQL Statements (Teil 1)"}]},{"@type":"WebSite","@id":"https:\/\/staging.sql.marcus-belz.de\/#website","url":"https:\/\/staging.sql.marcus-belz.de\/","name":"Just another SQL blog","description":"Marcus Belz \u00b7 SQL Server \u00b7 ETL \u00b7 Datenqualit\u00e4t","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/staging.sql.marcus-belz.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/staging.sql.marcus-belz.de\/#\/schema\/person\/98ab042e47d7286f64530ee18f20f675","name":"marcus","url":"https:\/\/staging.sql.marcus-belz.de\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts\/266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=266"}],"version-history":[{"count":9,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts\/266\/revisions"}],"predecessor-version":[{"id":897,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts\/266\/revisions\/897"}],"wp:attachment":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}