Zusammenfassung
In Abschn. 4.4 haben wir die fundamentalen Anweisungen der DDL beschrieben. Mit der DDL beschreiben wir die logische Datenorganisation. Um mit den Daten zu arbeiten – sie anzusehen und zu ändern – benutzen wir die DML (Data Manipulation Language). Obwohl von der ursprünglichen Wortbedeutung unterschiedlich, wird die DML auch als Query Language oder Abfragesprache bezeichnet.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Der ursprüngliche Entwurf der Abfragesprache hieß auch SEQUEL für Structured English QUEry Language. Die umgangssprachliche Verständlichkeit verschwindet aber, wenn wir mehrere Tabellen verknüpfen oder andere komplexe Operationen anwenden.
- 2.
Wir empfehlen dieses Beispiel hier nicht als Übung.
- 3.
Zur Unterscheidung der Begriffe Tupel, Zeile, Attribut, Spalte, Relation und Tabelle vgl. Abschn. 3.1.
- 4.
Dieses ist in den verschiedenen Systemen unterschiedlich realisiert. In Oracle und Sybase ist es etwa das RESOURCE-Privileg.
- 5.
Die in den Befehlen eingesetzten Werte beziehen sich auf unsere Beispieltabellen, die im Anhang wiedergegeben sind. Es wird dazu geraten, diese Beispieltabellen für die eigenen Übungen zu verwenden, da so unmittelbar ein Vergleich der eigenen Ergebnisse mit den in diesem Buch dargestellten Lösungen möglich ist.
- 6.
Um eine Tabelle vollständig aus der Datenbank zu entfernen, ist die DROP TABLE-Anweisung anzuwenden.
- 7.
Soll eine Löschung zurückgenommen werden, kann dies u. U. mit ROLLBACK erreicht werden. In den folgenden Kapiteln bleiben die Tupel in der Kundentabelle als Beispielwerte erhalten.
- 8.
[MaUn13] „Anwendungsentwicklung mit Datenbanken“.
- 9.
SQL verarbeitet prinzipiell Tabellen, wovon Relationen ein Spezialfall sind. Genaueres dazu findet sich in Abschn. 7.2.
- 10.
Hierbei gelten Nullmarken in verschiedenen Tupeln als gleich.
- 11.
„Undefiniert“ heißt, dass durch die SQL-Norm keine bestimmte Reihenfolge der Zeilen festgelegt ist. Bei genauer Kenntnis der Arbeitsweise eines speziellen DBMS ist die Reihenfolge vorhersagbar. Sie kann sich aber schon von Version zu Version desselben Systems ändern.
- 12.
primitiv ist hier im Gegensatz zu komplex zu sehen: Primitive logische Ausdrücke sind die ursprünglichen Bedingungen, aus denen komplexe logische Ausdrücke zusammengesetzt werden können.
- 13.
Vgl. [Mesc71, S. 32].
- 14.
- 15.
Hier steht in der Darstellung von Nullmarken die Angabe <null>, was vom Frontend-Tool SquirreL eingesetzt wird. Bei anderen Systemen erscheint hier ggf. keine Ausgabe. Die Darstellung der Ergebnisse ist keine Leistung des Datenbanksystems, sondern des entsprechenden Endanwender-Programms. Bei einigen Systemen lässt sich die Darstellung anpassen.
- 16.
- 17.
Dieses ist sinnvoll, da man mit Postleitzahlen nicht rechnen will. Außerdem gibt es Postleitzahlen mit führenden Nullen, welche bei numerischen Zahltypen in der Regel weggelassen werden. Wenn man einen Postleitzahlbereich, also z. B. alle Postleitzahlen, die mit „28“ beginnen in einer Abfrage sucht, ist das mit PLZ LIKE „28 %“ sehr einfach und übersichtlich – die entsprechende Formulierung für numerische Postleitzahlen würde lauten PLZ/1000 = 28, während der PLZ-Bereich „275“ durch PLZ/100 = 275 abzufragen wäre. Dieses ist sicher nicht so übersichtlich wie die Formulierung mit LIKE und Zeichenketten.
- 18.
Man kann dieses Problem auch mit IN lösen, siehe oben.
- 19.
- 20.
In der Regel gibt es auch eine Funktion LENGTH, mit der die Länge einer Zeichenfolge bestimmt werden kann. Allerdings hat die Einführung von Unicode und unterschiedlichen internen Darstellungen der Zeichenfolgen dazu geführt, dass ein Zeichen nicht immer in einem Octet (offizielle Bezeichnung für „Byte“) gespeichert wird. So kann es sein, dass LENGTH(„Günter“) den Wert 7 ergibt (während CHAR_LENGTH auch Umlaute und andere Sonderzeichen jeweils als ein Zeichen zählt).
- 21.
Erläuterung hierzu:
Der 1. Januar 1900 war ein Montag. Die Differenz zu dem gesuchten Datum ist die Anzahl der Tage seit diesem Montag, der Divisionsrest durch 7 somit die Anzahl der Tage seit dem letzten Montag, also 0 für Montag, 1 für Dienstag, …, 6 für Sonntag. Da aber nach der ISO-Norm der Montag den Wert 1 hat, Dienstag den Wert 2 etc. muss noch 1 dazu addiert werden. Es empfiehlt sich, bei häufigerer Benutzung hierfür eine Funktion zu definieren. Benutzerdefinierte Funktionen werden im Fortsetzungsband dieses Werks: „Anwendungsentwicklung mit Datenbanken“ behandelt.
- 22.
Vgl. Abschn. 2.4.5.
- 23.
Sybase SQL Anywhere weist auf die Eliminierung von Nullmarken mit einer Fehlermeldung hin. Wir halten dies nicht für angebracht, da es sich hier nicht um einen Fehler handelt. Die Ergebnisse werden aber korrekt ermittelt und angezeigt.
- 24.
Außer Spalten aus der GROUP BY-Klausel, wenn diese verwendet wird. Mehr dazu im nächsten Abschnitt. Eine weitere Möglichkeit ist die in SQL:2003 eingeführte PARTITION-Klausel.
- 25.
Zu beachten ist allerdings, dass SUM und AVG nur auf numerische Ausdrücke angewandt werden dürfen.
Author information
Authors and Affiliations
Corresponding authors
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Unterstein, M., Matthiessen, G. (2012). SQL mit einer Relation. In: Relationale Datenbanken und SQL in Theorie und Praxis. eXamen.press. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-28986-6_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-28986-6_6
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-28985-9
Online ISBN: 978-3-642-28986-6
eBook Packages: Computer Science and Engineering (German Language)