1.Leicht
Ein Kunde kann viele Bestellungen aufgeben, aber jede Bestellung gehört zu genau einem Kunden. Welche Art von Beziehung ist das?
- AEins-zu-viele
- BEins-zu-eins
- CViele-zu-viele
- DNull-zu-null
2.Leicht
Was liefert ein CROSS JOIN?
- AJede Kombination von Zeilen aus den beiden Tabellen
- BNur die Zeilen der ersten Tabelle
- CNur die Zeilen, die in einer gemeinsamen Schlüsselspalte übereinstimmen
- DNur Zeilen, die nicht übereinstimmen
3.Leicht
Was bewirkt WHERE country IN ('NL', 'BE', 'DE')?
- AEs behält Zeilen, deren country-Wert alle drei Codes gleichzeitig enthält
- BEs behält Zeilen, deren country nicht in der Liste steht
- CEs sortiert die Zeilen in der Reihenfolge der Liste
- DEs behält Zeilen, deren country einem der Werte in der Liste entspricht
4.Mittel
Ein LEFT JOIN liefert:
- AAlle Zeilen der linken Tabelle und die passenden Zeilen der rechten, mit NULLs, wo es keine Übereinstimmung gibt
- BNur übereinstimmende Zeilen aus beiden Tabellen
- CZeilen, die in keiner der beiden Tabellen übereinstimmen
- DNur alle Zeilen der rechten Tabelle
5.Mittel
Eine Tabelle hat Zeilen, in denen col NULL ist. Welche Zeilen liefert WHERE col = NULL?
- ANur die Zeilen, in denen col NULL ist, wie bei IS NULL
- BIn jeder Datenbank einen Fehler
- CAlle Zeilen der Tabelle
- DKeine Zeilen, weil der Vergleich unknown ergibt
6.Mittel
Welche Abfrage liefert die Anzahl der Bestellungen pro Kunde?
- ASELECT DISTINCT COUNT(*) FROM orders
- BSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
- CSELECT customer_id FROM orders WHERE COUNT(*) > 0
- DSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
7.Schwer
Welche Fensterfunktion vergibt innerhalb jeder Partition die Nummern 1, 2, 3, ... an Zeilen, ohne Gleichstände?
- ARANK()
- BDENSE_RANK()
- CROW_NUMBER()
- DCOUNT()
8.Schwer
Eine Tabelle hat eine Million Zeilen und eine boolesche Spalte is_active, die für 95% davon TRUE ist. Warum könnte der Optimierer einen Index auf is_active für WHERE is_active = TRUE ignorieren?
- ADer Optimierer verwendet in WHERE-Klauseln nie Indexe
- BDer Index behandelt TRUE als NULL
- CAuf booleschen Spalten lassen sich keine Indexe anlegen
- DDie meisten Zeilen treffen zu, daher ist ein vollständiger Tabellenscan billiger als viele Indexzugriffe
Lösungsschlüssel
- 1. A · Eins-zu-viele
- 2. A · Jede Kombination von Zeilen aus den beiden Tabellen
- 3. D · Es behält Zeilen, deren country einem der Werte in der Liste entspricht
- 4. A · Alle Zeilen der linken Tabelle und die passenden Zeilen der rechten, mit NULLs, wo es keine Übereinstimmung gibt
- 5. D · Keine Zeilen, weil der Vergleich unknown ergibt
- 6. D · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
- 7. C · ROW_NUMBER()
- 8. D · Die meisten Zeilen treffen zu, daher ist ein vollständiger Tabellenscan billiger als viele Indexzugriffe
Vollständige Schritt-für-Schritt-Lösungen: Übe dieses Thema auf examproblems.com.