1. Das relationale Datenbankmodell
Das relationale Datenbankmodell ist das weitverbreitetste Datenmodell, das in der Datenbankentwicklung verwendet wird. Sie stellt eine mathematische Beschreibung einer Tabelle und ihre Beziehung zu anderen möglichen Tabellen dar, wobei die Operationen auf diese Relationen durch relationale Algebra bestimmt werden.
Das relationale Datenbankmodell besteht aus 3 grundlegenden Elementen:
- Tabellen
- Attribute
- Beziehungen
Dabei ist das relationale Datenbankmodell eine Ansammlung von miteinander verknüpften Tabellen. Jede Zeile (Tupel) ist ein Datensatz und jede Zeile besteht aus mehreren Spalten, die Eigenschaften (Attribute) beinhalten. Außerdem gibt es Verknüpfungen (Beziehungen), die über Primärschlüssel erstellt werden und dazu dienen, Attribute mit dem gleichen Primärschlüssel abzufragen.
2. Die relationale Algebra
Die relationale Algebra ist das mathematische Konstrukt, auf das SQL aufbaut. Dabei werden mithilfe von Operatoren aus mehreren Relationen neue Relationen gebildet. Damit lassen sich Relationen verknüpfen, umbennen oder filtern.
Bei der Operation Join wird hierbei zunächst ein kartesisches Produkt gebildet, das daraufhin durch Selektion beschränkt wird.
3. Arten von Joins
3.1. Cross Join (kartesisches Produkt)
Bei einem Cross Join wird jeder Datensatz der ersten Tabelle mit jedem Datensatz der zweiten Tabelle verknüpft. Dabei werden alle möglichen Kombinationen aus beiden Tabellen angezeigt.
SELECT *
FROM TabelleA CROSS JOIN TabelleB
3.2. Inner Join
Beim Inner Join werden zwei Tabellen miteinander verbunden, wobei die Ergebnisse angezeigt werden, die durch die gleiche Attributwerte miteinander verbunden sind. Mit dem Befehl ON kann der verbindende Attributwert bestimmt werden.
SELECT *
FROM TabelleA JOIN TabelleB ON TabelleA.Attribut1 = TabelleB.Attribut2
3.3. Outer Join
Beim Outer Join enthält die Ergebnistabelle alle Ergebnisse einer Tabelle unabhängig von der anderen Tabelle, deren nicht übereinstimmenden Werte mit NULL angegeben werden. Beim Left Outer Join werden dabei die Ergebnisse der linken Tabelle berücksichtigt, während es beim Right Outer Join die der rechten Tabelle sind.
SELECT *
FROM TabelleA LEFT JOIN TabelleB ON TabelleA.Attribut1 = TabelleB.Attribut2
oder
SELECT *
FROM TabelleA RIGHT JOIN TabelleB ON TabelleA.Attribut1 = TabelleB.Attribut2
3.4. Self Join
Beim Self Join wird eine Tabelle mit sich selbst verknüpft. Dafür gibt es keinen eigenen Befehl, man benutzt hier ebenfalls Join und kennzeichnet die "zwei" Tabellen. Wenn man einen bestimmten Attribute beim Self Join näher betrachten möchte benutzt man dann den Befehl WHERE.
SELECT *
FROM TabelleA a JOIN TabelleA b
WHERE a.Attribut1 = b.Attribut2