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.

Page: 1 2 3 4 5

ZDNet.de Redaktion

Recent Posts

MadMxShell: Hacker verbreiten neue Backdoor per Malvertising

Die Anzeigen richten sich an IT-Teams und Administratoren. Ziel ist der Zugriff auf IT-Systeme.

5 Tagen ago

April-Patches für Windows legen VPN-Verbindungen lahm

Betroffen sind Windows 10 und Windows 11. Laut Microsoft treten unter Umständen VPN-Verbindungsfehler auf. Eine…

5 Tagen ago

AMD steigert Umsatz und Gewinn im ersten Quartal

Server-CPUs und Server-GPUs legen deutlich zu. Das Gaming-Segment schwächelt indes.

6 Tagen ago

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

1 Woche ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

1 Woche ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

1 Woche ago