Top Kniffe für ein besseres Arbeiten mit SQL

Die SQL-Klausel GROUP BY definiert Teilmengen von Daten. Dabei ist vor allem wichtig, dass man bei Verwendung einer GROUP BY-Klausel nur diejenigen Spalten einbeziehen sollte, welche die Teilmenge definieren oder Daten für die Teilmenge zusammenfassen. Mit anderen Worten, GROUP BY kann keine zusätzlichen Daten umfassen. Wer beispielsweise die Anzahl der an einem bestimmten Datum platzierten Aufträge erfahren möchte, kann eine Anweisung ähnlich der folgenden verwenden:


Diese Abfrage würde einen Eintrag für jedes Datum ausgeben. In jedem Eintrag würden das Datum und die Anzahl der Aufträge für dieses Datum angezeigt. Man kann keine weiteren Spalten einbeziehen.

GROUP BY ist vielseitig. Man muss keine Spalte in der SELECT-Klausel angeben, um eine Gruppierung für sie durchzuführen. Zum Beispiel könnte das OrderDate aus der Abfrage oben weggelassen und nur die Zählung für das jeweilige Datum ausgegeben werden (obgleich diese Ergebnisse nicht sehr sinnvoll wären). Wenn die GROUP BY-Spalte in der Quelle enthalten ist, benötigt SQL sie nicht in der SELECT-Klausel. Wird dagegen in der SELECT-Klausel auf eine Spalte verwiesen, muss diese auch in die GROUP BY-Klausel oder in eine Aggregat-Funktion übernommen werden. Die folgende Anweisung funktioniert beispielsweise nicht, weil die Spalte Freight (Fracht) nicht Teil eines Aggregats oder der GROUP BY-Klausel ist:


In Wirklichkeit ist es nicht sehr sinnvoll, eine Spalte auf diese Weise einzubeziehen. Wenn man die Frachtdaten im Kontext einer GROUP BY-Abfrage wünscht, macht eine Zusammenfassung der Frachtwerte in der Gruppe Sinn. Siehe:


Jet kann keine Memo- oder OLE Object-Spalten gruppieren. Außerdem lässt sich eine GROUP BY-Klausel nicht in eine UPDATE-Anweisung übernehmen, was auch sinnvoll ist, da SQL dann nicht feststellen könnte, welche Einträge aktualisiert werden sollen.

7. Ändern der Tabellenstruktur

Es gibt verschiedene SQL-Anweisungen, um die Gestaltung einer Tabelle zu verändern. Hierbei sollte man immer Vorsicht walten lassen, da sonst Daten vernichtet werden könnten. Wird beispielsweise den Datentyp einer Spalte geändert, könnte die Engine vorhandene Daten kürzen oder löschen, um den Datentyp der neuen Spalte unterzubringen. Beim Ändern von Tabellen sollte man die folgenden Einschränkungen beachten:

  • Man kann die Daten einer bestehenden Spalte nicht auf COUNTER ändern, wenn die Spalte bereits Daten enthält.
  • Eine Spalte kann nicht umbenannt werden. Dazu muss man die Spalte mit DROP COLUMN entfernen und dann unter Verwendung des neuen Namens neu erstellen. Um die Daten zu bewahren, muss eine neue Spalte erstellt werden, in die dann die Daten aus der ursprünglichen Spalte mit UPDATE kopiert werden. Zu guter Letzt ist die ursprüngliche Spalte zu löschen.
  • Vor dem Ändern einer Tabelle mit ALTER TABLE muss sie geschlossen sein. Andernfalls gibt die Engine einen Fehler aus. Der folgende VBA-Code schließt eine geöffnete Tabelle und verhindert den Fehler, der generiert wird, wenn die Tabelle geöffnet ist:


  • Spalten für die eine Einschränkung vorliegt, lassen sich nicht löschen. Zuerst muss die Einschränkung mit DROP CONSTRAINT entfernt werden.
  • Alle CHECK CONSTRAINT-Befehle entfernen, bevor man die Tabellen löscht, die von diesen betroffen sind.
  • Zum Ändern einer bestehenden Beziehung muss sie gelöscht und neu erstellt werden.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

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

Kommentar hinzufügen
  • 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

Schreibe einen Kommentar

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