Datenbankabfragen rufen bestimmte Informationen aus der Datenbank ab.
Eine Unterabfrage ist eine Abfrage innerhalb einer anderen Abfrage. Eine Unterabfrage kann auch eine andere Unterabfrage enthalten. Diese werden als "verschachtelte" Unterabfragen bezeichnet. Ein Join liegt vor, wenn in der "From"-Klausel der Abfrage auf zwei oder mehr Tabellen verwiesen wird. Verschiedene Datenbank-Engines können Unterabfragen und Joins unterschiedlich optimieren. Der Optimierer von DB2 wandelt beispielsweise eine Unterabfrage in einen Join um, wenn bestimmte Kriterien erfüllt sind. In einigen Fällen bietet ein Join eine bessere Leistung als eine Unterabfrage.
Was macht eine Unterabfrage aus?
Eine Unterabfrage ist eine "SELECT"-Anweisung innerhalb der "WHERE"- oder "HAVING"-Klausel einer äußeren "INSERT", "UPDATE", "MERGE" oder "DELETE"-Anweisung. Die Unterabfrage wird auch "innere Abfrage" oder "innere Auswahl" genannt. Die Unterabfrage kann eine "FROM"-Klausel mit einer oder mehreren Tabellen haben und kann optional eine "WHERE", "GROUP BY" oder "HAVING"-Klausel haben. Es ist immer in Klammern eingeschlossen.
Video des Tages
Vor- und Nachteile von Unterabfragen
Unterabfragen sind vorteilhaft, da sie die Abfrage strukturieren, um jeden Teil der Anweisung zu isolieren. Führen Sie dieselbe Operation aus, die normalerweise komplexe Joins und Unions erfordern würde und die einfacher zu machen sind lesen. Unterabfragen waren aufgrund ihrer leicht lesbaren Struktur sogar Grundlage für den Namen "Structured Query Language" (SQL). Ein Nachteil besteht darin, dass Sie eine Tabelle nicht ändern und aus derselben Tabelle innerhalb einer Unterabfrage in derselben SQL-Anweisung auswählen können. Unterabfragen können auch länger dauern als ein Join, da sie vom Datenbankoptimierer verarbeitet werden.
Was macht einen Join aus?
Die meisten Unterabfragen können als Joins umgeschrieben werden, und die meisten Joins können als Unterabfragen umgeschrieben werden. Ein Join definiert zwei oder mehr Tabellen durch eine zugehörige Spalte. Tabellen werden normalerweise auf Primär- und Fremdschlüsseln verknüpft. Beispielsweise kann eine Mitarbeitertabelle den Primärschlüssel einer Mitarbeiter-ID-Spalte aufweisen, während eine Arbeitszeittabellentabelle auch eine Mitarbeiter-ID-Spalte enthält, die ein Fremdschlüssel für die Mitarbeitertabelle ist. Der SQL-Join kann als "WHERE Employee.empid = timesheet.empid" oder "FROM Employee JOIN timesheet ON (employee.empid = timesheet.empid)" geschrieben werden.
Vor- und Nachteile von Joins
Der Hauptvorteil eines Joins besteht darin, dass er schneller ausgeführt wird. Die Leistungssteigerung ist für den Endbenutzer möglicherweise nicht wahrnehmbar. Da die Spalten jedoch von der Datenbank-Engine speziell benannt und indiziert und optimiert werden, ist die Abrufzeit fast immer schneller als bei einer Unterabfrage. Es gibt auch Inner- und Outer-Joins, Left- und Right-Joins, Full-Joins und Cross-Joins. Ein Nachteil der Verwendung von Joins besteht darin, dass sie nicht so einfach zu lesen sind wie Unterabfragen. Ein weiterer Nachteil besteht darin, dass es verwirrend sein kann, welcher Join der geeignete Join-Typ ist, um die richtige gewünschte Ergebnismenge zu erhalten.