Jedes Ergebnis einer SQL-Operation ist funktional eine neue Tabelle, unabhängig davon, ob sie auf der Festplatte oder im Speicher gespeichert ist
Die Funktion eines Joins besteht darin, zwei Tabellen zu einer synthetischen dritten Tabelle zu "verbinden", die (normalerweise) nur während der Ausgabe an die Anwendung im Speicher vorhanden ist.
Der Grund für die Verwendung eines Joins besteht darin, Datenanomalien zu reduzieren , indem sichergestellt wird, dass Daten nur an einer Stelle in der Datenbank angezeigt werden.
Folgendes berücksichtigen:
Person ( ID Integer Primary Key, FName String, LName String, Address String, City String, ZipCode String)
Wenn die Regierung die Postleitzahl ändert (was für den Geschmack der Datenbankentwickler viel zu häufig vorkommt *), muss die Personentabelle so aktualisiert werden, dass alle alten Postleitzahlen korrekt zur richtigen Stadt und neuen Postleitzahl gehören.
In diesem Fall befindet sich dieselbe Postleitzahl in mehreren Tupeln der Tabelle. Wenn die Tabelle manuell bearbeitet werden kann, treten schwerwiegende Aktualisierungsanomalien auf, da neue Kombinationen aus Stadt und Postleitzahl eingegeben werden, ohne dass die gesamte Datenbank aktualisiert wird.
Wenn wir stattdessen drei Tabellen haben, erhalten wir dieselben Daten, jedoch mit erhöhter Flexibilität und Zuverlässigkeit (auf Kosten einer gewissen Leistung, obwohl Fragen der "angemessenen Denormalisierung" ein Thema für eine andere Reihe von Antworten sind).
Person ( PersonID Integer Primary Key, FName String, LName String)
City ( CityID Integer Primary Key, City String, State String, ZipCode String )
Address ( AddressID Integer Primary Key, AddressLine1 String, CityID Integer References City, PersonID Integer References Person)`
Und wir können eine einzelne "Tabelle" aus dem Obigen durch die folgende Abfrage erhalten:
SELECT Fname, Lname, AddressLine1, City, State, ZipCode
FROM Person
INNER JOIN Address USING (PersonID)
INNER JOIN City USING (CityID)
Auf diese Weise können wir die einzelnen Tabellen aktualisieren, wenn sich etwas Spezifisches an ihnen ändert, ohne den Rest der zugehörigen Daten zu beschädigen.
An INNER JOIN
ist der Standardtyp der Verknüpfung. Grob gesagt heißt es: "Kombiniere Tupel, bei denen dieser Datensatz aus Tabelle a mit diesem Datensatz aus Tabelle b übereinstimmt." Die anderen Arten von Verknüpfungen sind OUTER JOINS
und was als a bekannt ist CARTESIAN PRODUCT
. Ein äußerer Join ist "Nehmen Sie alles aus der linken oder rechten Tabelle (wie angegeben) und wo die andere Tabelle übereinstimmt, verbinden Sie es. Wenn es nicht übereinstimmt, füllen Sie es mit Nullen" und ein kartesisches Produkt (ohne in die relationale Algebra einzusteigen ist: Nehmen Sie jede mögliche Kombination von Tupeln in beiden Tabellen und geben Sie sie in einer Tabelle aus, ohne dass etwas übereinstimmt.
* Mehr als nie, insbesondere beim Verschieben der Grenzen von Postleitzahlen aufgrund von Gerrymandering