SQL
Relationale Algebra
Suche…
Überblick
Relational Algebra ist keine ausgewachsene SQL- Sprache, sondern ein Weg, um theoretisches Verständnis der relationalen Verarbeitung zu erlangen. Daher sollte es nicht auf physische Entitäten wie Tabellen, Datensätze und Felder verweisen. Es sollte auf abstrakte Konstrukte wie Beziehungen, Tupel und Attribute Bezug nehmen. Wenn ich das sage, werde ich die akademischen Begriffe in diesem Dokument nicht verwenden und werde mich an die bekannteren Laienbegriffe halten - Tabellen, Aufzeichnungen und Felder.
Bevor wir loslegen, einige Regeln der relationalen Algebra:
- Die in der relationalen Algebra verwendeten Operatoren arbeiten mit ganzen Tabellen und nicht mit einzelnen Datensätzen.
- Das Ergebnis eines relationalen Ausdrucks ist immer eine Tabelle (dies wird Schließungseigenschaft genannt ).
In diesem Dokument werde ich auf die folgenden zwei Tabellen Bezug nehmen:
WÄHLEN
Der select- Operator gibt eine Teilmenge der Haupttabelle zurück.
Wählen Sie <table> wo <Bedingung>
Untersuchen Sie zum Beispiel den Ausdruck:
Wählen Sie Personen aus, bei denen DepartmentID = 2 ist
Dies kann geschrieben werden als:
Dies führt zu einer Tabelle, deren Datensätze alle Datensätze der People- Tabelle umfassen, deren Abteilungs- ID gleich 2 ist:
Bedingungen können auch verbunden werden, um den Ausdruck weiter einzuschränken:
Wählen Sie Personen, bei denen StartYear> 2005 und DepartmentID = 2 sind
PROJEKT
Der Projektbediener gibt verschiedene Feldwerte aus einer Tabelle zurück.
Projekt <Tabelle> über <Feldliste>
Untersuchen Sie beispielsweise den folgenden Ausdruck:
Projekt Menschen über StartYear
Dies kann geschrieben werden als:
Dies führt zu einer Tabelle mit den unterschiedlichen Werten, die im Feld StartYear der Tabelle People enthalten sind .
Doppelte Werte werden aus der resultierenden Tabelle entfernt, da die Schließungseigenschaft eine relationale Tabelle erstellt: Alle Datensätze in einer relationalen Tabelle müssen eindeutig sein.
Wenn die Feldliste mehr als ein einzelnes Feld umfasst dann die resultierende Tabelle ist eine deutliche Version dieser Felder.
Projekt People over StartYear, wird DepartmentID zurückgegeben:
Ein Datensatz wird aufgrund der Duplizierung von 2006 StartYear und 1 DepartmentID entfernt .
GEBEN
Relationale Ausdrücke können durch die Benennung der einzelnen Ausdrücke unter Verwendung der Angabe Schlüsselwort miteinander verkettet werden, oder durch Einbetten eines Ausdrucks innerhalb der anderen.
<relationaler Algebra-Ausdruck> mit <Aliasname>
Betrachten Sie zum Beispiel die folgenden Ausdrücke:
Wählen Sie Personen aus, bei denen DepartmentID = 2 ist und geben Sie A
Projekt A über PersonName , das B gibt
Dies führt zu Tabelle B unten, wobei Tabelle A das Ergebnis des ersten Ausdrucks ist.
Der erste Ausdruck wird ausgewertet und die resultierende Tabelle erhält den Alias A. Diese Tabelle wird dann innerhalb des zweiten Ausdrucks verwendet, um der finalen Tabelle den Alias von B zu geben.
Eine andere Möglichkeit, diesen Ausdruck zu schreiben, besteht darin, den Tabellenaliasnamen im zweiten Ausdruck durch den gesamten Text des ersten in Klammern gesetzten Ausdrucks zu ersetzen:
Projekt (Personen auswählen, bei denen DepartmentID = 2 ist) über PersonName mit B
Dies wird als verschachtelter Ausdruck bezeichnet .
NATÜRLICHER JOIN
Bei einem natürlichen Join werden zwei Tabellen zusammengefügt, wobei ein gemeinsames Feld zwischen den Tabellen verwendet wird.
Join <Tabelle 1> und <Tabelle 2> wobei <Feld 1> = <Feld 2>
Angenommen, <Feld 1> befindet sich in <Tabelle 1> und <Feld 2> befindet sich in <Tabelle 2>.
Beispielsweise wird der folgende Join-Ausdruck Personen und Abteilungen basierend auf den Abteilungs- ID- und ID- Spalten in den jeweiligen Tabellen hinzufügen:
Treten Sie Personen und Abteilungen bei, für die DepartmentID = ID gilt
Beachten Sie, dass nur DepartmentID aus der People- Tabelle und keine ID aus der Department- Tabelle angezeigt wird. Es muss nur eines der Felder angezeigt werden, das verglichen wird. Dies ist im Allgemeinen der Feldname aus der ersten Tabelle der Verknüpfungsoperation.
Obwohl in diesem Beispiel nicht gezeigt, ist es möglich, dass das Verknüpfen von Tabellen zu zwei Feldern mit derselben Überschrift führt. Zum Beispiel, wenn ich die Überschrift Namen verwendet hatte den Personnamen und Dept Felder zu identifizieren (dh die Person Namen und den Namen der Abteilung zu identifizieren). In dieser Situation verwenden wir den Tabellennamen, um die Feldnamen anhand der Punktnotation zu qualifizieren: People.Name und Departments.Name
join kombiniert mit select und project kann zusammen verwendet werden, um Informationen abzurufen:
beitreten Personen und Abteilungen, bei denen DepartmentID = ID A ergibt
Wählen Sie A mit StartYear = 2005 und Dept = 'Production' aus, wobei B angezeigt wird
Projekt B über PersonName , das C gibt
oder als kombinierter Ausdruck:
Projekt (wählen (Join Personen und Abteilungen , in denen DepartmentID = ID) , in dem startyear = 2005 und Dept = ‚Produktion‘) über Person C geben