Zurück zur Artikelliste Artikel
8 Leseminuten

24 Regeln für den SQL-Formatierungsstandard

Das Schreiben von Datenbankabfragen erfordert Kenntnisse über die SQL-Syntax, aber das ist nicht alles, was Sie wissen sollten. Die besten Praktiken zum Schreiben von professionellem SQL-Code erfordern gute Formatierungskenntnisse. In diesem Artikel erkläre ich, warum dies so wichtig ist und welche Grundregeln Sie beachten sollten.

Warum lohnt es sich, SQL-Code zu formatieren?

Anfänger in der SQL-Programmierung schenken der Formatierung ihres Codes oft nicht viel Aufmerksamkeit. Wenn Sie denken, dass Formatierung etwas ist, das man getrost ignorieren kann, sehen Sie sich den folgenden Code an:

SELECT id, FirstName, LASTNAME,c.nAme FROM people p left JOIN cities AS c on c.id=p.cityid;

Die obige SQL-Abfrage wurde ohne jegliche Formatierungsregeln geschrieben. Vergleichen Sie sie nun mit der formatierten Abfrage unten, die denselben Code enthält:

     SELECT p.PersonId,
            p.FirstName,
            p.LastName,
            c.Name
       FROM Person AS p 
  LEFT JOIN City AS c 
         ON p.CityId = c.CityId;

Erkennen Sie den Unterschied? Welche ist besser lesbar? Welche Abfrage ist leichter zu verstehen?

Es ist natürlich offensichtlich, dass die erste Abfrage nicht sehr leicht zu lesen ist. Abgesehen davon ist es auch ein Problem, diesen Code schnell zu ändern. Wenn Sie diese Abfrage mit einer anderen, ähnlichen Abfrage vergleichen möchten, ist das keine leichte Aufgabe. Die zweite Abfrage ist völlig anders, obwohl es sich um genau denselben Code handelt - er ist leicht zu lesen, es wäre einfach, den Code zu korrigieren, und er ließe sich problemlos mit anderem gut formatierten Code vergleichen. Die korrekte Formatierung von SQL-Code hilft Programmierern, Fehler zu vermeiden.

OK, jetzt verstehen Sie, warum die Formatierung von SQL-Code eine gute Idee sein kann. Jetzt ist es an der Zeit zu lernen, wie man es macht.

Wie man SQL-Code formatiert

Es gibt verschiedene Wege, Code zu formatieren. Einige SQL-Programmierer haben individuelle Stile und Vorlieben für die Formatierung von SQL-Abfragen. Sie haben Erfahrung im Programmieren und folgen den Regeln, die für sie bequem sind. Das ist nicht schlimm, wenn Sie nur an Ihren eigenen Projekten arbeiten, aber was ist, wenn Sie mit anderen Kollegen zusammenarbeiten? Die Arbeit in einem Team wäre problematisch, wenn jeder Programmierer seinen eigenen individuellen Stil beim Schreiben von Code anwenden würde. Der Code würde eine Mischung von Regeln in einem Projekt darstellen. Die Lösung wäre, eine Reihe von Prinzipien für das gesamte Team festzulegen. Aber was ist, wenn der Code von Personen außerhalb des Unternehmens gelesen oder korrigiert werden muss? Die beste Lösung ist im Allgemeinen, den SQL-Formatierungsstandard zu befolgen. Es gibt zwar kein offizielles Dokument dazu, aber es gibt einige allgemein anerkannte Standards und gute Praktiken, die von SQL-Experten geschrieben wurden. Darüber hinaus gibt es viele Tools, die bei der Formatierung von SQL-Code helfen und auf diesem Standard basieren. In diesem Leitfaden werden gängige und beliebte Regeln, die auf diesem Standard beruhen, besprochen.

Benennung von Objekten

Zunächst werden allgemeine Regeln für die Benennung von Datenbankobjekten besprochen. Dies sind die gängigsten Regeln:

  • Vermeiden Sie den Namen einer Tabelle/Spalte im Plural. Es ist besser, employee statt employees zu verwenden.
  • Wenn der Name der Tabelle oder Spalte aus mehr als einem Wort bestehen muss, verwenden Sie einen Unterstrich, um sie zu verbinden, zum Beispiel employee_city. Einige Fachleute ziehen es vor, stattdessen die so genannte CamelCase-Schreibweise zu verwenden, zum Beispiel EmployeeCity. Die bevorzugte Schreibweise ist für verschiedene relationale Datenbanksysteme unterschiedlich.
  • Stellen Sie sicher, dass der Name nicht bereits als Schlüsselwort in SQL verwendet wird.
  • Wenn der Name mit einem SQL-Schlüsselwort identisch ist, schließen Sie den Namen in Anführungszeichen ein.
  • Der Name eines Objekts in einer Datenbank für eine Tabelle oder eine Spalte sollte eindeutig und nicht zu lang sein. Vermeiden Sie Sonderzeichen im Namen wie $, &, * usw. (verwenden Sie nur Buchstaben, Zahlen und Unterstriche).
  • Verwenden Sie einen Unterstrich in einem Namen nur, wenn es notwendig ist.
  • Beginnen Sie den Namen nicht mit einem Unterstrich.
  • Verwenden Sie Kommentare nur, wenn es notwendig ist.
  • Vermeiden Sie Abkürzungen, aber wenn Sie sie verwenden, stellen Sie sicher, dass sie auch verstanden werden.
  • Vermeiden Sie es, sowohl einer Tabelle als auch einer Spalte denselben Namen zu geben.
  • Verwenden Sie die gleichen Namensregeln für Aliase für Spalten oder Tabellen.
  • Nehmen Sie das Schlüsselwort AS für die Erstellung von Aliasen auf, da dies den Code lesbarer macht.
  • Für die Primärschlüsselspalte sollten Sie den Namen id vermeiden. Eine gute Idee ist es, id mit dem Namen einer Tabelle zu kombinieren, zum Beispiel: id_employee.

Ausrichtung

Die meisten Experten empfehlen, zuerst die Schlüsselwörter in eine neue Zeile links zu schreiben und dann den Rest des Codes rechts, etwa so:

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       c.Name
  FROM Person AS p 
  JOIN City AS c 
    ON p.CityId = c.CityId;

Einrückung

Die großzügige Verwendung von Zeilenumbrüchen kann die Lesbarkeit einer SQL-Abfrage erheblich verbessern. Es ist ratsam, für jede einzelne Abfrage eine neue Zeile zu verwenden und für jede einzelne Spalte nach einem Komma eine neue Zeile zu verwenden. Ebenso ist es ratsam, den Gleichheitsoperator mit Leerzeichen zu umgeben, Leerzeichen vor oder nach Apostrophen zu verwenden und ein Leerzeichen nach einem Komma zu setzen.

In den folgenden Abschnitten finden Sie weitere Einzelheiten zu bewährten Verfahren für die Einrückung in verschiedenen Arten von SQL-Abfragen.

Kommentierung

Vermeiden Sie es, zu viele Kommentare in den Code zu schreiben. Natürlich gibt es Fälle, in denen Kommentare notwendig sind, aber in der Regel ist es besser, mehrzeilige Kommentare zu verwenden, die durch /* öffnende und */ schließende Zeichen gekennzeichnet sind. Es wird empfohlen, diese Art von Kommentar am Anfang einer neuen Zeile zu schreiben, anstatt in einer Zeile mit Code zu beginnen, der ausgeführt wird. Der Kommentar sollte oberhalb der entsprechenden SQL-Codezeile geschrieben werden, wobei die gleiche Einrückung verwendet wird. Ein Beispiel:

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       /* Name column is the name of the city: */
       p.Name,
  FROM Person AS p 
 WHERE p.Name = 'New York';

Im SQL-Code ist es auch möglich, einzeilige Kommentare einzufügen. Diese Art von Kommentar wird durch einen doppelten Bindestrich (--) am Anfang des Kommentartextes gekennzeichnet. Der gesamte Text nach diesen Zeichen wird als Kommentar behandelt.

SELECT -- we have to delete this column p.PersonId,
       p.FirstName,
       p.LastName,
       p.Name
  FROM Person AS p;

SELECT-Abfragen

Bei dieser Art von Abfrage ist SELECT das erste Wort des Befehls. Wenn sich nach SELECT mehrere Spalten befinden, ist es besser, diese in einer eigenen Zeile zu trennen. Jede neue Zeile sollte eingerückt werden. Achten Sie darauf, dass die Kommas am Ende der Zeile stehen und nicht am Zeilenanfang.

SELECT p.PersonId,
       p.FirstName,  
       p.LastName,
       c.Name
  FROM Person AS p;

Für die Schlüsselwörter FROM, WHERE, ORDER BY, GROUP BY und HAVING schreiben Sie jedes in eine neue Zeile ohne Einrückung.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       p.Name,
  FROM Person AS p 
 WHERE p.Name = 'New York';

Wenn die Anweisung WHERE mehr als eine Bedingung enthält, trennen Sie jede Bedingung durch eine neue Zeile, die eingerückt ist, und verwenden Sie eine neue eingerückte Zeile mit den bedingten Operatoren AND oder OR innerhalb der WHERE-Anweisung.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       p.Name
  FROM Person AS p 
 WHERE p.Name = 'New York' 
    OR p.Name = 'Chicago';

JOIN-Anweisungen

Wenn Sie Tabellen verknüpfen, verwenden Sie neue Zeilen für die Operatoren INNER JOIN, LEFT JOIN, usw. Für den Operator ON schreiben Sie eine neue eingerückte Zeile innerhalb der Anweisung JOIN. Wenn es jedoch mehr als eine Bedingung gibt, verwenden Sie eine neue eingerückte Zeile vor dem AND oder OR Bedingungsoperator.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       c.Name
  FROM Person AS p 
  JOIN City AS c 
    ON p.CityId = c.CityId;

Eine lange und verschachtelte SQL-Abfrage

Lange Abfragen enthalten manchmal Unterabfragen. In diesem Fall sollte die Unterabfrage in einer neuen, eingerückten Zeile stehen.

Für die Struktur CASE setzen Sie jede WHEN und END in eine neue Zeile.

SELECT p.PersonId,
       p.FirstName,
       p.LastName,
       CASE 
         WHEN p.Age < 18 THEN 'below 18'
         WHEN p.Age >= 18 THEN '18 or more'
       END AS Age
  FROM Person AS p;

Andere Arten von SQL-Abfragen

Für Abfragen, die Daten ändern, einfügen oder löschen, gelten ähnliche Regeln.

Verwenden Sie Einrückungen für VALUES in Einfügeabfragen:

INSERT INTO Car(id_car, name, year) VALUES
  (1, 'Audi', 2010) ; 

Wenn Sie mehrere Zeilen in einer Abfrage einfügen, schreiben Sie jede Zeile als neue Zeile mit Einrückung:

INSERT INTO Car(id_car, name, year) VALUES
  (1, 'Audi', 2010) ,
  (2, 'Skoda', 2015) ; 

In ähnlicher Weise verwenden Sie in einer UPDATE -Abfrage SET und WHERE wie in einer SELECT -Anweisung, mit einer neuen Zeile ohne Einrückung:

UPDATE Car
SET year = 2012
WHERE Name = 'Audi';

oder in einer DELETE -Abfrage:

DELETE FROM Car
WHERE Name = 'Audi'; 

Wie schlechte Formatierung von SQL-Code zu Problemen führt

Ein Beispiel dafür, wie schlechte Formatierung zu Problemen führt, ist die folgende Abfrage, in der am Anfang jeder Zeile ein Komma steht:

SELECT /* we have to delete this column */ p.PersonId
     , p.FirstName
     , p.LastName
     , p.Name
  FROM Person AS p 
 WHERE p.Name = 'New York';

Dies mag auf den ersten Blick sinnvoll erscheinen, aber wenn Sie die erste Spalte auskommentieren, um sie zu entfernen, würde die Abfrage einen Fehler zurückgeben.

Ein weiterer Fehler kann auftreten, wenn Sie keine Einrückung und keine neuen Zeilen verwenden. Ein Beispiel:

Select person.id_person, person.name, person.age, person.description, person.city from person  where person.age>20 and person.city = ( select name from city where id_city>20)

In diesem schlecht formatierten Code wäre es sehr einfach, versehentlich die WHERE Klausel in der Unterabfrage zu löschen, obwohl Sie beabsichtigten, die WHERE Klausel in der Hauptabfrage zu löschen.

Viele Probleme sind leicht zu finden, wenn die Abfrage richtig formatiert ist, insbesondere bei einer langen Abfrage mit Hunderten von Codezeilen.

Zusammenfassung

Die Nichtbeachtung des SQL-Formatierungsstandards kann zu erheblichen Problemen bei der Zusammenarbeit mit anderen Programmierern führen. Eine korrekte Formatierung trägt dazu bei, dass Ihr SQL-Code leichter zu lesen ist, und hilft, Fehler zu vermeiden, wenn Sie Änderungen an Ihrem Code vornehmen. In diesem Artikel habe ich einige der von Experten empfohlenen Regeln vorgestellt, die Ihnen helfen, einen klareren Code zu schreiben. Das Schreiben von schönem SQL-Code ist eine gute Arbeitsgewohnheit, die von Arbeitgebern geschätzt wird. Ihr Code ist ein Zeichen für Ihre Professionalität und zeigt, dass Sie einen modernen, seriösen Ansatz für Ihre Arbeit wählen. Stellen Sie sich der Herausforderung und werden Sie ein professioneller Programmierer!