next up previous contents
Next: PL/SQL Up: SQL Previous: Datendefinitionsbefehle von SQL

Datenmanipulationsbefehle von SQL

Die Befehle zur Manipulation der Daten in SQL (DML statements, data manipulation language) beschränken sich auf die vier Operationen Einfügen, Ändern, Entfernen und Auswählen.

Die Abarbeitung einer SELECT-Anweisung soll hier kurz erläutert werden:

  1. FROM Klausel: Zuerst wird die FROM Klausel bearbeitet. Das Ergebnis dieses Schrittes ist das kartesische Produkt der angegebenen Tabellen.
  2. WHERE Klausel: Im zweiten Schritt werden aus der entstandenen Tabelle alle Tupel (Zeilen) entfernt, die die Suchbedingung nicht erfüllen.
  3. GROUP BY Klausel: In der GROUP BY Klausel wird ein Gruppierungsschlüssel definiert. Für jeden in der entstandenen Tabelle auftretenden Wert des Gruppierungsschlüssels wird eine Gruppe gebildet. Eine Gruppe besteht dabei aus einem oder mehreren Tupeln (Zeilen).
  4. HAVING Klausel: Die HAVING Klausel ist das gruppenorientierte Pendant zur zeilenorientierten WHERE Klausel, es werden diejenigen Gruppen entfernt, die die Suchbedingung nicht erfüllen. Ist eine HAVING Klausel bei fehlender GROUP BY Klausel vorhanden, so wird die gesamte Relation (Tabelle) als eine einzige Gruppe betrachtet.
  5. SELECT Liste: Erst nach der Auswertung des Tabellenausdrucks werden die Angaben der SELECT Liste ausgewertet. Dabei wird eine Projektion auf die ausgewählten Attribute (Spalten) vorgenommen, wobei auch Wertausdrücke (wie SUM, MAX und MIN) ausgewertet und deren Ergebnis eingefügt werden. Wurde das Schlüsselwort DISTINCT angegeben, werden anschließend auch etwaige Duplikate aus der Ergebnisrelation entfernt.
Beispiel: SELECT * FROM Friends GROUP BY town

Die hier gezeigten SQL-Anweisungen stimmen in ihrer genauen Formulierung vielleicht nicht im Detail mit denen der SQL2-Standarddokumente überein, sind jedoch so angegeben, wie sie ODBC-Datenbanken erwarten und interpretieren können [ODBC94]. Da hier nur die generelle Syntax von SQL-Anweisungen wiederholt werden soll, sollten die (feinen) Unterschiede nicht stören.



next up previous contents
Next: PL/SQL Up: SQL Previous: Datendefinitionsbefehle von SQL



Christoph Steindl
Thu Jul 24 14:37:19 MET DST 1997