5.1 Verbundmengen (JOIN)
Was sind Verbundmengen (JOIN) in relationalen Datenbanken?
Verbundmengen (JOIN) sind Relationen, die aus mehreren bestehenden Relationen zusammengesetzt werden, um Informationen aus mehreren Tabellen gezielt abzufragen. Sie werden genutzt, um eine neue Tabelle zu erzeugen, indem Datensätze, die z.B. denselben Wert in einem Attribut haben, verbunden werden.
Wie funktioniert ein JOIN zwischen den Tabellen "Artikel" und "Film" anhand des Beispiels?
In dem Beispiel werden die Tabellen "Artikel" und "Film" über das gemeinsame Attribut "ArtikelID" verbunden. Datensätze, die den gleichen Wert in "ArtikelID" haben, werden in einer neuen Tabelle zusammengeführt. Die Ergebnistabelle enthält nur die gewünschten Spalten wie Name, Regisseur, Preis und Verfügbarkeit.
Was ist das Verbundkriterium im Beispiel mit den Tabellen "Artikel" und "Film"?
Das Verbundkriterium ist, dass die Spalten "ArtikelID" in beiden Tabellen (Artikel und Film) übereinstimmen müssen, damit die Datensätze zusammengeführt werden können. Formal wird dies als "Artikel.ArtikelID = Film.ArtikelID" beschrieben.
Welche Typen von Verbundmengen gibt es in relationalen Datenbanken?
Es gibt verschiedene Verbundtypen, darunter:
Inner Join (INNER JOIN)
Natural Join (NATURAL JOIN)
Linker Verbund (LEFT JOIN)
Rechter Verbund (RIGHT JOIN)
Was ist ein INNER JOIN und wie funktioniert er?
Ein INNER JOIN führt alle Datensätze zusammen, bei denen das Verbundkriterium erfüllt ist. Nur die Datensätze, die in beiden Tabellen einen entsprechenden Wert im Verbundkriterium haben, werden in die Ergebnistabelle aufgenommen. Alle Spalten aller Tabellen sind im Ergebnis enthalten.
Was ist der Unterschied zwischen einem INNER JOIN mit "ON" und einem INNER JOIN mit "USING"?
"ON" wird verwendet, wenn die Spaltennamen des Verbundkriteriums unterschiedlich sind.
"USING" wird verwendet, wenn die Spaltennamen gleich sind. Bei USING werden die Vergleichsspalten nur einmal in der Ergebnistabelle angezeigt.
Was ist ein NATURAL JOIN und wie unterscheidet er sich von einem INNER JOIN?
Ein NATURAL JOIN ist eine Variante des INNER JOIN. Er vergleicht alle Spalten mit demselben Namen in den beteiligten Tabellen und fügt nur Datensätze in die Ergebnistabelle ein, bei denen alle Werte in diesen Spalten übereinstimmen. Die gleichnamigen Spalten erscheinen nur einmal im Ergebnis.
Was ist der Unterschied zwischen einem LEFT JOIN und einem RIGHT JOIN?
Ein LEFT JOIN fügt alle Datensätze der linken Tabelle (die vor dem JOIN steht) in die Ergebnistabelle ein. Falls keine passenden Datensätze in der rechten Tabelle gefunden werden, werden die entsprechenden Spalten mit NULL gefüllt.
Ein RIGHT JOIN fügt alle Datensätze der rechten Tabelle (die nach dem JOIN steht) in die Ergebnistabelle ein, und fehlende Daten der linken Tabelle werden mit NULL aufgefüllt.
Wie kann man die Ergebnismenge eines Verbundes weiter bearbeiten?
Die Ergebnismenge eines Verbundes kann durch die Befehle GROUP BY gruppiert und mit ORDER BY sortiert werden. Beispielsweise kann die Anzahl sofort verfügbarer Filme, die auf mehr als einer Disc geliefert werden, gruppiert nach der Anzahl der Discs ausgegeben werden.
Warum gilt es als schlechter Programmierstil, INNER JOIN mit WHERE zu vermischen?
Die Verwendung von WHERE für Verbünde vermischt das Verbundkriterium mit Filterbedingungen, was zu unübersichtlichem Code führen kann. Diese Methode liefert zwar dasselbe Ergebnis wie INNER JOIN, wird aber als schlechter Programmierstil angesehen.
5.2 Mengenoperationen
Was ist das Ergebnis einer SELECT-Anfrage in SQL und warum können Mengenoperationen darauf angewendet werden?
Das Ergebnis einer SELECT-Anfrage ist eine Menge von gleich strukturierten Datensätzen. Da es sich um Mengen handelt, können Mengenoperationen wie Vereinigung, Schnittmenge und Differenzmenge darauf angewendet werden.
Welche Mengenoperationen sind im SQL-Standard spezifiziert, und warum implementieren viele DBMS nicht alle?
Im SQL-Standard sind die Mengenoperationen Vereinigung (UNION), Schnittmenge (INTERSECT) und Differenzmenge (MINUS) spezifiziert. Viele DBMS implementieren jedoch Schnittmenge und Differenzmenge nicht, da sie in der Praxis selten benötigt werden und mit WHERE-Bedingungen nachgebildet werden können.
Wie funktioniert die Mengenoperation UNION in SQL, und wann wird UNION ALL verwendet?
UNION führt eine duplikatfreie Vereinigung zweier Ergebnismengen durch. Soll die Vereinigung ohne Elimination von Duplikaten erfolgen, wird UNION ALL verwendet.
Was sind die SQL-Schlüsselwörter für die Mengenoperationen Schnittmenge und Differenzmenge, und wie unterscheiden sie sich je nach DBMS?
Für die Schnittmenge wird das Schlüsselwort INTERSECT verwendet.
Für die Differenzmenge wird je nach DBMS entweder MINUS (z.B. Oracle) oder EXCEPT (z.B. MariaDB seit Version 10.3.0) verwendet.
Welche Voraussetzungen müssen die Ergebnismengen bei einer Mengenoperation erfüllen, damit diese erfolgreich ist?
Die Ergebnismengen müssen die gleiche Anzahl von Spalten haben. Falls die Datensätze unterschiedliche Attribute besitzen, können die ungleichen Spalten mit NULL oder einer Konstante aufgefüllt werden.
Wie kann man bei einer UNION-Operation Datensätze mit unterschiedlichen Attributen vereinen?
Man kann zusätzliche Spalten hinzufügen und die fehlenden Attribute mit festen Werten oder NULL auffüllen, um die Datensätze zusammenzuführen. Dies erlaubt es, unterschiedliche Datensätze zu vereinen, z.B. durch das Hinzufügen einer Spalte für den Artikeltyp.
5.3 Datensichten mit CREATE VIEW
Was ist der Zweck von Views (Sichten) in relationalen Datenbanken?
Views (Sichten) ermöglichen es, häufig benötigte oder komplexe Datenbankanfragen zu speichern, sodass sie nicht jedes Mal neu als SQL-Statement formuliert werden müssen. Sie können auch verwendet werden, um Zugriffsbeschränkungen für verschiedene Benutzergruppen umzusetzen.
Wie werden Views in relationalen Datenbanken technisch umgesetzt, und wie werden sie angesprochen?
Views sind gespeicherte SELECT-Statements, die unter einem bestimmten Namen abgelegt werden. Sie enthalten keine eigenen Datensätze und werden manchmal als imaginäre oder virtuelle Tabellen bezeichnet. Ein View kann in SQL-Statements wie eine normale Tabelle verwendet werden.
Wie erstellt man einen View in SQL und wie sieht ein einfaches Beispiel dafür aus?
Ein View wird mit dem SQL-Statement CREATE VIEW erstellt. Beispiel:
CREATE VIEW ViewSofortVerfuegbareFilme AS
CREATE VIEW
ViewSofortVerfuegbareFilme AS
SELECT * FROM Artikel INNER JOIN FILM USING(ArtikelID)
WHERE Verfuegbarkeit = 'sofort' ORDER BY Name;
Dieser View erstellt eine nach Namen sortierte Liste aller sofort verfügbaren Filme.
Wie kann ein erstellter View in einem SQL-Statement verwendet werden?
Ein View kann wie eine normale Datenbanktabelle verwendet werden. Beispiel:
SELECT * FROM ViewSofortVerfuegbareFilme WHERE Sprachen = 'DE';
SELECT * FROM
ViewSofortVerfuegbareFilme
WHERE Sprachen = 'DE';
Hier wird der View verwendet, um alle sofort verfügbaren Filme in deutscher Sprache auszugeben.
Unter welchen Bedingungen kann ein View in SQL schreibbar sein?
Ein View ist schreibbar, wenn die folgenden Bedingungen erfüllt sind:
Der View enthält keine Aggregatsfunktionen, Konstanten oder Ausdrücke.
Der View bezieht sich nur auf eine Tabelle (kein JOIN).
Der View verwendet nicht DISTINCT und kein GROUP BY.
Der View enthält keine Unterabfragen.
Was passiert, wenn die Bedingungen für einen schreibbaren View nicht erfüllt sind?
Wenn die Bedingungen nicht erfüllt sind, handelt es sich um einen Read-Only View, auf dem keine direkten Änderungen am Datenbestand möglich sind.
Last changed3 months ago