1/96
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Was ist SQL?
• Sprache zum Abfragen und Verwalten relationaler Datenbanken | • Wird für Auswahl, Filterung, Aggregation und Änderung von Daten genutzt | • SQL ist deklarativ: Man beschreibt das gewünschte Ergebnis
Was ist eine relationale Datenbank?
• Speichert Daten in Tabellen | • Tabellen bestehen aus Zeilen und Spalten | • Beziehungen werden meist über Schlüssel abgebildet
Was ist eine Tabelle?
• Strukturierte Sammlung gleichartiger Datensätze | • Jede Zeile repräsentiert eine Beobachtung | • Jede Spalte beschreibt ein Merkmal
Was ist eine Zeile in einer Datenbanktabelle?
• Ein einzelner Datensatz | • Beispiel: eine Kundin oder eine Bestellung | • Wird häufig durch einen Primärschlüssel eindeutig identifiziert
Was ist eine Spalte?
• Ein Attribut eines Datensatzes | • Beispiel: Kundennummer, Kaufdatum oder Umsatz | • Hat einen definierten Datentyp
Was ist ein Primärschlüssel?
• Identifiziert jede Zeile eindeutig | • Darf nicht mehrfach vorkommen | • Ist normalerweise nicht NULL
Was ist ein Fremdschlüssel?
• Verweist auf den Primärschlüssel einer anderen Tabelle | • Stellt Beziehungen zwischen Tabellen her | • Unterstützt referenzielle Integrität
Was ist referenzielle Integrität?
• Fremdschlüssel dürfen nur auf existierende Datensätze verweisen | • Verhindert verwaiste Beziehungen | • Kann durch Datenbankregeln erzwungen werden
Was ist ein Datentyp?
• Legt fest, welche Werte eine Spalte speichern kann | • Beispiele: INTEGER, VARCHAR, DATE, BOOLEAN | • Beeinflusst Speicher, Validierung und mögliche Operationen
Was macht SELECT?
• Wählt Spalten oder berechnete Ausdrücke aus | • Bestimmt, was im Ergebnis angezeigt wird | • Beispiel: SELECT name, umsatz FROM kunden
Was macht FROM?
• Gibt die Datenquelle einer Abfrage an | • Meist eine Tabelle oder View | • Kann auch Subqueries oder mehrere Tabellen enthalten
Was macht WHERE?
• Filtert einzelne Zeilen | • Wird vor Aggregationen angewendet | • Beispiel: WHERE umsatz > 100
Was macht ORDER BY?
• Sortiert das Ergebnis | • ASC ist aufsteigend, DESC absteigend | • Mehrere Sortierspalten sind möglich
Was macht LIMIT?
• Begrenzt die Anzahl zurückgegebener Zeilen | • Nützlich für Vorschauen oder Top-N-Abfragen | • Syntax kann je nach Datenbanksystem variieren
Was macht DISTINCT?
• Entfernt doppelte Ergebniszeilen | • Bezieht sich auf die Kombination aller ausgewählten Spalten | • Kann bei großen Datenmengen teuer sein
Was ist ein Alias?
• Temporärer Name für eine Spalte oder Tabelle | • Wird meist mit AS vergeben | • Verbessert Lesbarkeit und verkürzt Abfragen
Was ist NULL?
• Kennzeichnet einen fehlenden oder unbekannten Wert | • Ist nicht gleich 0 und nicht gleich leerer Text | • Vergleiche erfolgen mit IS NULL oder IS NOT NULL
Warum funktioniert = NULL nicht?
• NULL steht für unbekannt | • Ein normaler Vergleich mit unbekannt ergibt kein TRUE | • Daher IS NULL oder IS NOT NULL verwenden
Was macht COALESCE?
• Gibt den ersten nicht-NULL-Wert zurück | • Kann fehlende Werte durch Ersatzwerte ersetzen | • Beispiel: COALESCE(rabatt, 0)
Was macht CASE WHEN?
• Erzeugt bedingte Logik in SQL | • Kann Werte klassifizieren oder neue Kategorien bilden | • Ähnelt if-else in Programmiersprachen
Was sind Aggregatfunktionen?
• Fassen mehrere Zeilen zu Kennzahlen zusammen | • Beispiele: COUNT, SUM, AVG, MIN, MAX | • Werden häufig mit GROUP BY genutzt
Was macht COUNT(*)?
• Zählt alle Zeilen | • Bezieht NULL-Werte mit ein | • Unterscheidet sich von COUNT(spalte)
Was macht COUNT(spalte)?
• Zählt nur nicht-NULL-Werte der Spalte | • Kann kleiner als COUNT(*) sein | • Nützlich zur Prüfung fehlender Werte
Was macht SUM?
• Addiert numerische Werte | • Ignoriert NULL-Werte | • Kann mit GROUP BY pro Gruppe berechnet werden
Was macht AVG?
• Berechnet den Mittelwert nicht-NULL Werte | • NULL-Werte werden ignoriert | • Bei Bedarf vorher fachlich sinnvoll imputieren oder ersetzen
Was macht GROUP BY?
• Fasst Zeilen mit gleichen Merkmalswerten zu Gruppen zusammen | • Erlaubt Aggregationen pro Gruppe | • Alle nicht aggregierten SELECT-Spalten müssen gruppiert werden
Was macht HAVING?
• Filtert bereits aggregierte Gruppen | • Wird nach GROUP BY angewendet | • Beispiel: HAVING COUNT(*) > 10
Was ist der Unterschied zwischen WHERE und HAVING?
• WHERE filtert Zeilen vor der Aggregation | • HAVING filtert Gruppen nach der Aggregation | • WHERE ist meist effizienter, wenn beide möglich wären
Was ist ein INNER JOIN?
• Behält nur Zeilen mit passendem Schlüssel in beiden Tabellen | • Nicht passende Zeilen fallen weg | • Geeignet, wenn nur vollständige Matches relevant sind
Was ist ein LEFT JOIN?
• Behält alle Zeilen der linken Tabelle | • Passende Werte der rechten Tabelle werden ergänzt | • Ohne Match entstehen rechts NULL-Werte
Was ist ein RIGHT JOIN?
• Behält alle Zeilen der rechten Tabelle | • Entspricht einem LEFT JOIN mit vertauschter Tabellenreihenfolge | • Wird in der Praxis seltener verwendet
Was ist ein FULL OUTER JOIN?
• Behält alle Zeilen beider Tabellen | • Matches werden zusammengeführt | • Nicht passende Seiten werden mit NULL ergänzt
Was ist ein CROSS JOIN?
• Bildet das kartesische Produkt | • Jede Zeile der ersten Tabelle wird mit jeder Zeile der zweiten kombiniert | • Kann sehr große Ergebnisse erzeugen
Was passiert bei einem Join mit nicht eindeutigen Schlüsseln?
• Mehrere Matches erzeugen mehrere Ergebniszeilen | • Kann ungewollte Duplikation verursachen | • Vorher Kardinalität und Eindeutigkeit prüfen
Was bedeutet Join-Kardinalität?
• Beschreibt die Beziehung zwischen Tabellen | • Typen: eins-zu-eins, eins-zu-viele, viele-zu-viele | • Bestimmt, ob ein Join Zeilen vervielfacht
Wie erkennt man ungewollte Duplikate nach einem Join?
• Zeilenzahl vor und nach dem Join vergleichen | • Eindeutigkeit des Join-Schlüssels prüfen | • COUNT(*) und COUNT(DISTINCT key) gegenüberstellen
Was ist ein Self Join?
• Eine Tabelle wird mit sich selbst verbunden | • Nützlich für Hierarchien oder Vergleiche innerhalb derselben Tabelle | • Tabellenaliase sind dabei notwendig
Was ist UNION?
• Kombiniert Ergebnisse untereinander | • Entfernt Duplikate | • Spaltenanzahl und Datentypen müssen kompatibel sein
Was ist UNION ALL?
• Kombiniert Ergebnisse und behält Duplikate | • Meist schneller als UNION | • Nutzen, wenn Duplikatentfernung nicht gewünscht ist
Was ist der Unterschied zwischen JOIN und UNION?
• JOIN verbindet Tabellen horizontal über Spalten | • UNION kombiniert Ergebnisse vertikal über Zeilen | • Beide lösen unterschiedliche Datenintegrationsprobleme
Was ist eine Subquery?
• Abfrage innerhalb einer anderen Abfrage | • Kann in SELECT, FROM oder WHERE stehen | • Hilfreich, aber nicht immer die lesbarste Lösung
Was ist eine Common Table Expression?
• Temporär benannter Abfrageblock mit WITH | • Verbessert Lesbarkeit komplexer Abfragen | • Kann in derselben Abfrage mehrfach referenziert werden
Was ist eine rekursive CTE?
• CTE, die sich selbst referenziert | • Geeignet für Hierarchien oder Pfade | • Besteht aus Startteil und rekursivem Teil
Was ist eine Window Function?
• Berechnet Werte über eine Gruppe von Zeilen, ohne sie zusammenzufassen | • Jede Originalzeile bleibt erhalten | • Beispiele: ROW_NUMBER, RANK, LAG, SUM OVER
Was macht OVER?
• Definiert das Fenster einer Window Function | • Kann PARTITION BY und ORDER BY enthalten | • Bestimmt, über welche Zeilen gerechnet wird
Was macht PARTITION BY?
• Teilt Daten für Window Functions in Gruppen | • Berechnung startet pro Gruppe neu | • Ähnelt GROUP BY, ohne Zeilen zu reduzieren
Was macht ROW_NUMBER?
• Vergibt eine eindeutige laufende Nummer innerhalb eines Fensters | • Reihenfolge wird über ORDER BY bestimmt | • Nützlich zur Auswahl der neuesten Zeile pro Gruppe
Was ist der Unterschied zwischen ROW_NUMBER, RANK und DENSE_RANK?
• ROW_NUMBER vergibt immer eindeutige Nummern | • RANK lässt nach Gleichständen Lücken | • DENSE_RANK lässt keine Lücken
Was macht LAG?
• Greift auf einen vorherigen Zeilenwert im Fenster zu | • Nützlich für Veränderungen über die Zeit | • Beispiel: aktueller Umsatz minus Umsatz des Vormonats
Was macht LEAD?
• Greift auf einen nachfolgenden Zeilenwert zu | • Nützlich für Vergleiche mit zukünftigen Zeilen | • Reihenfolge muss klar definiert sein
Wie berechnet man einen laufenden Gesamtwert?
• SUM als Window Function verwenden | • ORDER BY definiert die zeitliche Reihenfolge | • Beispiel: SUM(umsatz) OVER (ORDER BY datum)
Wie findet man den neuesten Datensatz pro Kundin?
• ROW_NUMBER über Kundin partitionieren | • Nach Datum absteigend sortieren | • Danach nur Zeilen mit row_number = 1 auswählen
Wie entfernt man Duplikate mit SQL?
• Zuerst definieren, welche Zeile behalten werden soll | • ROW_NUMBER über Duplikatschlüssel verwenden | • Nur die gewünschte Rangposition behalten
Was ist eine View?
• Gespeicherte Abfrage, die wie eine Tabelle genutzt wird | • Speichert meist nicht selbst die Daten | • Vereinfacht Wiederverwendung und Zugriffskontrolle
Was ist eine materialisierte View?
• Speichert das Ergebnis einer Abfrage physisch | • Kann Abfragen beschleunigen | • Muss regelmäßig aktualisiert werden
Was ist ein Index?
• Zusätzliche Datenstruktur zur schnelleren Suche | • Beschleunigt häufig WHERE-, JOIN- und ORDER-BY-Operationen | • Verlangsamt Schreiboperationen und benötigt Speicher
Wann ist ein Index sinnvoll?
• Auf häufig gefilterten oder gejointen Spalten | • Bei ausreichend selektiven Werten | • Nicht automatisch auf jede Spalte setzen
Was bedeutet Selektivität eines Index?
• Beschreibt, wie stark ein Wert die Datenmenge einschränkt | • Hohe Selektivität bedeutet wenige Treffer pro Wert | • Indizes auf sehr gleichförmigen Spalten helfen oft weniger
Was ist ein Query Execution Plan?
• Zeigt, wie die Datenbank eine Abfrage ausführt | • Enthält Scans, Joins, Sortierungen und geschätzte Kosten | • Hilft bei Performance-Problemen
Was ist ein Full Table Scan?
• Datenbank liest die gesamte Tabelle | • Kann bei großen Tabellen teuer sein | • Ist nicht immer schlecht, etwa wenn viele Zeilen benötigt werden
Wie optimiert man eine langsame SQL-Abfrage?
• Nur benötigte Spalten und Zeilen auswählen | • Join-Schlüssel und Filter prüfen | • Indizes und Execution Plan analysieren
Warum sollte man SELECT * vermeiden?
• Liest unnötige Spalten | • Erhöht Datenübertragung und kann Abfragen verlangsamen | • Macht Abfragen weniger robust gegenüber Schemaänderungen
Was ist Normalisierung?
• Strukturiert Daten zur Reduktion von Redundanz | • Teilt Informationen in logisch getrennte Tabellen | • Verbessert Konsistenz, kann aber mehr Joins erfordern
Was ist die erste Normalform?
• Jede Zelle enthält einen atomaren Wert | • Keine wiederholenden Spaltengruppen | • Jede Zeile ist eindeutig identifizierbar
Was ist die zweite Normalform?
• Erfüllt die erste Normalform | • Nicht-Schlüsselattribute hängen vom gesamten zusammengesetzten Schlüssel ab | • Verhindert partielle Abhängigkeiten
Was ist die dritte Normalform?
• Erfüllt die zweite Normalform | • Nicht-Schlüsselattribute hängen nicht voneinander ab | • Reduziert transitive Abhängigkeiten
Was ist Denormalisierung?
• Bewusstes Zusammenführen oder Wiederholen von Daten | • Kann Leseabfragen beschleunigen | • Erhöht Redundanz und Pflegeaufwand
Was ist ein Datenbankschema?
• Definiert Struktur und Beziehungen der Datenbank | • Enthält Tabellen, Spalten, Datentypen und Constraints | • Dient als formaler Bauplan
Was ist ein Constraint?
• Regel zur Sicherung gültiger Daten | • Beispiele: PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK | • Wird direkt von der Datenbank erzwungen
Was macht UNIQUE?
• Verhindert doppelte Werte oder Wertekombinationen | • Kann zusätzlich zum Primärschlüssel genutzt werden | • Umgang mit NULL hängt vom Datenbanksystem ab
Was macht NOT NULL?
• Erzwingt einen vorhandenen Wert | • Verhindert fehlende Einträge in einer Spalte | • Soll nur bei fachlich wirklich verpflichtenden Feldern eingesetzt werden
Was macht CHECK?
• Erzwingt eine Bedingung für Spaltenwerte | • Beispiel: preis >= 0 | • Verbessert Datenqualität direkt in der Datenbank
Was ist eine Transaktion?
• Gruppe von Operationen als logische Einheit | • Wird vollständig ausgeführt oder zurückgerollt | • Schützt Datenkonsistenz
Wofür steht ACID?
• Atomicity: alles oder nichts | • Consistency: Regeln bleiben gültig | • Isolation und Durability: parallele Sicherheit und dauerhafte Speicherung
Was macht COMMIT?
• Speichert Änderungen einer Transaktion dauerhaft | • Danach sind sie normalerweise nicht mehr rückgängig zu machen | • Beendet die aktuelle Transaktion
Was macht ROLLBACK?
• Macht noch nicht bestätigte Änderungen rückgängig | • Hilfreich bei Fehlern | • Funktioniert nur innerhalb der Transaktionsgrenzen
Was ist Isolation bei Transaktionen?
• Regelt Sichtbarkeit paralleler Änderungen | • Verhindert bestimmte Inkonsistenzen | • Höhere Isolation kann Leistung reduzieren
Was ist ein Dirty Read?
• Eine Transaktion liest noch nicht bestätigte Änderungen einer anderen | • Diese Änderungen könnten zurückgerollt werden | • Kann zu inkonsistenten Ergebnissen führen
Was ist ein Deadlock?
• Transaktionen warten gegenseitig auf gesperrte Ressourcen | • Keine kann fortfahren | • Datenbank löst meist eine Transaktion auf
Was ist OLTP?
• Systeme für viele kleine operative Transaktionen | • Beispiele: Bestellungen oder Buchungen | • Optimiert für schnelle Schreib- und Lesevorgänge
Was ist OLAP?
• Systeme für analytische Abfragen über große Datenmengen | • Beispiele: Reporting und Business Intelligence | • Optimiert für Aggregationen und historische Analysen
Was ist ein Data Warehouse?
• Zentrale Datenbasis für Analyse und Reporting | • Integriert Daten aus mehreren Quellsystemen | • Enthält häufig bereinigte historische Daten
Was ist eine Faktentabelle?
• Enthält messbare Ereignisse oder Kennzahlen | • Beispiele: Verkäufe, Mengen oder Umsätze | • Verweist auf Dimensionstabellen
Was ist eine Dimensionstabelle?
• Enthält beschreibende Merkmale | • Beispiele: Kunde, Produkt, Zeit oder Standort | • Dient zum Filtern und Gruppieren von Fakten
Was ist ein Star Schema?
• Eine zentrale Faktentabelle mit direkt verbundenen Dimensionstabellen | • Einfach und performant für Analysen | • Typisch in Data Warehouses
Was ist ein Slowly Changing Dimension?
• Verfahren zum Umgang mit veränderten Dimensionsmerkmalen | • Typ 1 überschreibt alte Werte | • Typ 2 speichert historische Versionen
Was ist eine Datenbank-View im BI-Kontext?
• Stellt vorbereitete, konsistente Daten für Reports bereit | • Verbirgt komplexe Joins | • Kann Governance und Wiederverwendung verbessern
Was ist SQL Injection?
• Angriff durch manipulierte Eingaben in SQL-Abfragen | • Kann Daten lesen oder verändern | • Schutz durch parametrisierte Queries und sichere Rechte
Warum sind parametrisierte Queries wichtig?
• Trennen SQL-Code von Nutzereingaben | • Reduzieren Risiko von SQL Injection | • Sind sicherer als String-Zusammenbau
Was bedeutet Datenbankberechtigung nach dem Least-Privilege-Prinzip?
• Nutzer erhalten nur notwendige Rechte | • Reduziert Schaden bei Fehlern oder Angriffen | • Lesezugriff und Schreibzugriff getrennt vergeben
Wie findet man fehlende Werte pro Spalte?
• COUNT(*) mit COUNT(spalte) vergleichen | • Alternativ SUM(CASE WHEN spalte IS NULL THEN 1 ELSE 0 END) | • Ergebnis als Anzahl oder Anteil berichten
Wie findet man doppelte Schlüssel?
• Nach Schlüssel gruppieren | • COUNT() berechnen | • Nur Gruppen mit COUNT() > 1 behalten
Wie berechnet man den Umsatz pro Kunde?
• Nach Kundenschlüssel gruppieren | • SUM(umsatz) berechnen | • Bei Bedarf Kundenstammdaten per JOIN ergänzen
Wie berechnet man die Conversion Rate?
• Anzahl Conversions durch Anzahl relevanter Kontakte teilen | • Datentypen beachten, damit keine Ganzzahldivision entsteht | • Definition von Kontakt und Conversion klar festlegen
Wie berechnet man den Anteil einer Gruppe am Gesamtwert?
• Gruppenwert mit SUM berechnen | • Gesamtsumme als Window Function verwenden | • Gruppenwert durch Gesamtsumme teilen
Wie erklärt man eine SQL-Abfrage im Interview?
• Zuerst gewünschtes Ergebnis beschreiben | • Dann Datenquellen, Join-Logik und Filter erklären | • Zum Schluss Aggregation, Randfälle und mögliche Duplikate prüfen
Was ist bei einer SQL-Aufgabe im Interview besonders wichtig?
• Nicht sofort losschreiben, sondern Tabellen und Kardinalitäten klären | • NULL-Werte und Duplikate berücksichtigen | • Lesbare Lösung mit nachvollziehbarer Logik liefern