We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Datenbankanfragen - Verbundoperationen

00:00

Formal Metadata

Title
Datenbankanfragen - Verbundoperationen
Title of Series
Number of Parts
93
Author
License
CC Attribution 4.0 International:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
In diesem Video geht es um die Formulierung von Verbundoperationen in SQL.
Keywords
62
DatabaseMusical ensembleCartesian productSQLZugriffTable (information)Join-OperationCartesian productTupleField extensionQuery languageCondition numberProduct (business)NumberResultantLattice (order)Keyboard shortcutOperator (mathematics)Data storage deviceMultiplication tableElectronic mailing listStatement (computer science)Descriptive statisticsArrow of timeComputer animation
Condition numberAttribute grammarEqualiser (mathematics)Table (information)CASE <Informatik>2 (number)Join-OperationProgram flowchart
Natural numberTable (information)Attribute grammarLattice (order)Natural numberComputer animation
Natural number2 (number)Table (information)Program flowchartComputer animation
Natural numberNatural numberCondition numberTable (information)Attribute grammarMultiplication signProduct (business)AnalogyKeyboard shortcutRight angleOperator (mathematics)Lattice (order)Flow separationType theoryAdditionFormal grammarRepresentation (politics)NumberDiagramORACLSCartesian productMySQLJoin-OperationProgram flowchartComputer animation
In diesem Video geht es um die Formulierungen von Verbundoperationen in SQL. Diese können genutzt werden, um Abfragen über mehrere Tabellen zu formulieren. Beispielsweise um zu einem Artikel sowohl die Artikelbezeichnung als auch den Lagerbestand zu ermitteln.
Dafür ist ein Zugriff auf die Tabellen Lager und Artikel erforderlich. Ein erster Lösungsansatz ist, dass wir in der Tabellenliste, in der From-Klausel, einfach eine weitere Tabelle einfügen.
Aber wenn wir das machen, erhalten wir statt einem Tupel ganz viele Tupel in unserer Ergebnismenge. Wieso ist das so? Durch die Erweiterung der Tabellenliste wird das Kreuzprodukt zwischen den aufgeführten Tabellen ausgeführt. Aufgrund des Kreuzproduktes kriegen wir jetzt so viele Tupel.
Die Tabelle Lager besitzt zwar nur ein Tupel mit dem Lagerbestand 0. Dadurch hat die Ergebnismenge so viele Tupel, wie es auch Artikel gibt. Dies können wir korrigieren, indem wir noch die Verbundbedingungen ergänzen. Das erreichen wir, indem wir die Where-Bedingungen ergänzen.
Hierdurch werden aus dem Kreuzprodukt diejenigen Tupel herausgefiltert, die die gleiche Artikelnummer in beiden Tabellen besitzen. Damit erhalten wir die Ergebnismenge eines Inner-Joints. Dass sich hier ein Inner-Joint verbirgt, ist aber nicht direkt ersichtlich.
Besser lesbar wird die SQL-Abfrage, wenn die Verbundbedingungen zusammen mit den zugehörenden Tabellen angegeben wird. Dafür werden in der From-Klausel die beiden Tabellen mit dem Join-Operator verknüpft und um die Verbundbedingungen ergänzt.
Die beiden Formulierungen liefern dieselbe Ergebnismenge, sind also semantisch äquivalent. Hier sehen Sie die grafische Syntax-Beschreibung für ein Inner-Joint. Die durch Pfeile gekennzeichneten Wege ergeben jeweils eine syntaktisch korrekte Verbundoperation.
Es beginnt mit der Table-Referenz. Das wäre in unserem Fall der Artikel A. Danach kommt die Join-Operation. In dem Fall haben wir ein Inner-Joint, wobei das Schlüsselwort Inner optional ist und auch entfallen kann.
Danach folgt die zweite Table-Referenz. In diesem Fall wäre das die Tabelle Lager. Danach schließt sich die Verbundbedingung an. Alternativ kann die Verbundbedingung auch durch die Using-Klausel formuliert werden.
In der Using-Klausel werden dann die Attribute aufgelistet, die auf Gleichheit geprüft werden sollen. Damit handelt es sich in diesem Fall um einen Equijoint. Handelt es sich in beiden Tabellen um die gleichen Attributbezeichnungen, so kann auch ein Natural-Joint ausgeführt werden.
Dies wird durch das Vorsetzen des Schlüsselworts natural vor dem Schlüsselwort join erreicht. Danach folgt die zweite Tabelle, hier Warenkorb. Durch das Schlüsselwort natural und die beiden beteiligten Tabellen ist die Verbundbedingung eindeutig spezifiziert.
Vorausgesetzt, die beiden Tabellen haben gleich benannte Attribute. Ist das nicht der Fall, dann wird ein Cross-Joint ausgeführt, also das Kreuzprodukt der beiden Tabellen gebildet.
Auch Verbundoperationen von mehreren Tabellen können ausgeführt werden. In diesem Beispiel wird zunächst ein Equijoint zwischen den beiden Tabellen Kunde und Warenkorb unter Nutzung des Attributs Kundennummer ausgeführt.
Daran schließt sich ein Natural-Joint an mit der Tabelle Artikel. Das zeigt, dass dieses Syntax-Diagramm auch mehrfach durchlaufen werden kann. Die Syntax für ein Outer-Joint ist analog aufgebaut.
Durch das Vorsetzen des Schlüsselworts full, left oder white vor dem Schlüsselwort join wird gekennzeichnet, dass es sich um ein Outer-Joint handelt. In SQL werden nur diese drei Outer-Joint-Arten unterstützt. Ein Anti-Joint kann beispielsweise durch das Hinzufügen einer geeigneten Were-Klausel hieraus erzeugt werden.
Zusammenfassend hier noch die beiden Syntax-Beschreibungen, Armour für den Inner-Joint und Armour für den Outer-Joint. Diese Darstellung finden Sie beispielsweise in der Dokumentation zum Datenmarktmanagementsystem Oracle.
In der Dokumentation zum Datenmarktmanagementsystem MySQL finden Sie eine textuelle Beschreibung als Grammatik. Im Vergleich ist diese aber nicht so einfach zu lesen wie die grafische Darstellung, weil Referenzen aufgelöst werden müssen.
Es ist daher Geschmackssache, welche Darstellungsweise einem mehr oder weniger zusagt.