Top Kniffe für ein besseres Arbeiten mit SQL

Für Programmierer ist die Datenbanksprache SQL quasi schon eine Pflicht. Die Syntax der Programmiersprache ist einfach aufgebaut, aber trotzdem gibt es Tipps, die man beachten sollte. ZDNet stellt ein paar Tricks vor, die beim Arbeiten mit SQL-Datenbanken helfen.

SQL ist überall, SQL ist einfach zu erlernen und SQL-Lösungen lassen sich problemlos implementieren. Egal, ob man nun SQL häufig oder nur gelegentlich verwendet, diese Tricks und Ratschläge für die Arbeit mit der Datenbanksprache helfen auf jeden Fall, Fehler zu vermeiden und die Performance zu verbessern.

Viele SQL-Versionen sind anbieterspezifisch. Die folgenden Tipps gelten für Jet- und Transact-SQL, aber sie können auf andere SQL-Produkte adaptiert werden.

1. Arbeiten mit Jet-SQL im Access-SQL-Fenster

Access-Benutzer erstellen jedes Mal, wenn sie eine Abfrage generieren, auch gleichzeitig SQL-Anweisungen, sie wissen es nur nicht. Sie benutzen das Query-Design-Fenster, eine grafische Darstellung des eigentlichen SQL. Die wenigsten Benutzer sind in der Lage, die geeigneten SQL-Anweisungen zu erstellen, die sie benötigen, weshalb die grafische Oberfläche sehr hilfreich ist. Doch auch für Programmierer bietet sie einige Vorteile. Wenn es einem zum Beispiel schwer gelingt, ohne Hilfsmittel einen fehlerfreien SQL-Code zu erstellen, kann man auf das SQL-Fenster zurückgreifen:


  • Nach dem Erstellen einer Abfrage mithilfe des Query-Design-Fensters muss der Code aus dem SQL-Fenster in ein VBA-Modul kopiert werden.
  • Wenn eine im Code durchgeführte Abfrage eine wenig aussagekräftige Fehlermeldung in VBA erzeugt, kopiert man die SQL-Anweisung in das SQL-Fenster und führt sie aus. Access liefert meist bessere Informationen über den Fehler als VBA.

Nicht jede SQL-Anweisung kann direkt aus dem Modul in das SQL-Fenster kopiert werden. Wenn die Anweisung Verkettungen oder Variablen enthält, sollte man eine Debug.Print-Anweisung direkt nach der Definitionsanweisung einfügen. Falls ein Debugging für die Anweisung durchgeführt werden soll, kopiert man die evaluierte Anweisung aus dem Immediate-Fenster. Die folgende Anweisung im Code funktioniert beispielsweise wegen der Variablen und der Verkettung im SQL-Fenster nicht:



Ist dagegen eine Debug.Print-Anweisung dahinter gesetzt, lassen sich die evaluierten Ergebnisse aus dem Immediate-Fenster kopieren:



2. Reservierte Wörter in SQL

SQL reserviert bestimmte Wörter als Schlüsselwörter. Sie sollten nicht zur Bezeichnung von Spalten, Tabellen, Variablen oder Objekten verwendet werden. Kommen diese Wörter außerhalb des von der Engine vorgesehenen Kontexts zum Einsatz, verwirrt dies die Engine und verursacht Fehler oder sogar ohne Fehlermeldung falsche Ergebnisse.

3. Der Unterschied zwischen ALL, DISTINCT und DISTINCTROW

Die SQL-Anweisung SELECT unterstützt drei Prädikate: ALL, DISTINCT und DISTINCTROW. ALL ist der Standard und gibt alle Einträge aus, welche die jeweils eingegebenen Bedingungen erfüllen. DISTINCT beschränkt die Ergebnisse auf in einer oder mehreren Spalten nur einmal vorkommende Werte. Zum Beispiel würde die folgende Anweisung nur einen Eintrag für jeden LastName-Wert ausgeben:



Mit anderen Worten: Wenn ein Eintrag sowohl für John Smith als auch für Mary Smith vorhanden ist, gibt diese Anweisung nur einen Eintrag für Smith aus. DISTINCT funktioniert jedoch für alle Spalten, nicht nur für die unmittelbar folgende Spalte. Das bedeutet, dass diese Anweisung einen Eintrag für John und Mary ausgibt, da die kombinierten Spalten keinen doppelten Eintrag ergeben:



Wenn die SELECT-Klausel auf mehr als eine Spalte bezogen wird, muss die Kombination der Werte aus allen ausgewählten Spalten für einen bestimmten Eintrag einzigartig sein.

DISTINCT weist ein paar Besonderheiten auf, die man kennen sollte:

  • Man sollte DISTINCT nicht zusammen mit einem Asterisk (*) verwenden. Die Spalten müssen mit ihrem Namen angeben werden.
  • Abfragen unter Verwendung von DISTINCT können nicht aktualisiert werden, was auch sinnvoll ist.

Während DISTINCT mit Spalten funktioniert, bezieht sich DISTINCTROW auf Einträge. (Transact-SQL unterstützt DISTINCTROW nicht.) Dieses Prädikat weist ebenfalls einige Einschränkungen auf, die das Beheben eines Fehlers erschweren können:

  • Die Engine ignoriert DISTINCTROW, wenn die Abfrage nur eine Tabelle enthält.
  • Die Engine ignoriert DISTINCTROW, wenn man auf alle Spalten aus allen zugrundeliegenden Tabellen verweist.

Neueste Kommentare 

Eine Kommentar zu Top Kniffe für ein besseres Arbeiten mit SQL

  • Am 9. Dezember 2009 um 16:32 von Loop

    falsche Überschrift
    “Top Kniffe für ein besseres Arbeiten mit SQL”

    sollte eher heißen

    SQL-Grundlagen

    So am Thema für mich vorbei

Hinterlasse eine Antwort

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