myLernwerk

Lernfeld 5 · Prüfung Teil 1

SQL-Abfragen

SQL für die IT-Prüfung: SELECT mit WHERE, GROUP BY, HAVING, ORDER BY, JOINs, NULL-Werte, Aggregatfunktionen, DDL, DML und Schutz vor SQL-Injection.

35 Aufgaben dazu übenKostenlos, ohne Anmeldung, mit Lösungsweg

Darum geht es

Eine Abfrage hat den Aufbau SELECT Spalten FROM Tabelle WHERE Bedingung GROUP BY Spalte HAVING Gruppenbedingung ORDER BY Spalte. Die Datenbank wertet sie logisch in anderer Reihenfolge aus: FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY. Darum filtert WHERE einzelne Zeilen vor der Gruppierung und HAVING ganze Gruppen danach. LIKE mit Prozentzeichen sucht Muster, etwa alle Namen, die mit SW- beginnen. DISTINCT entfernt doppelte Zeilen, ORDER BY mit DESC sortiert absteigend.

Aggregatfunktionen sind COUNT, SUM, AVG, MIN und MAX. COUNT(*) zählt alle Zeilen, COUNT(spalte) nur die ohne NULL; auch AVG und SUM übergehen NULL. Ob ein Wert fehlt, prüfst du mit IS NULL, nie mit Gleichheitszeichen. Ein INNER JOIN liefert nur Zeilen mit Partner in beiden Tabellen, ein LEFT JOIN alle Zeilen der linken Tabelle, fehlende Partner werden NULL. Willst du auch Gruppen mit null Treffern sehen, brauchst du einen LEFT JOIN und zählst eine Spalte der rechten Tabelle. Ein Kreuzprodukt ohne Verknüpfungsbedingung kombiniert jede Zeile mit jeder.

Zur Datendefinition gehören CREATE TABLE, ALTER TABLE und DROP TABLE, zur Datenbearbeitung INSERT, UPDATE und DELETE. UPDATE und DELETE ohne WHERE treffen alle Zeilen. Gibst du Benutzereingaben direkt in eine Abfrage, droht SQL-Injection. Dagegen helfen vorbereitete Anweisungen mit Parametern, eine Prüfung der Eingaben und ein Datenbankkonto mit minimalen Rechten. Postleitzahlen speicherst du als Text (CHAR oder VARCHAR), sonst geht die führende Null verloren.

Das solltest du dir merken

  • WHERE filtert Zeilen vor der Gruppierung, HAVING filtert Gruppen danach.
  • COUNT(*) zählt alle Zeilen, COUNT(spalte) übergeht NULL-Werte.
  • Vergleiche mit NULL immer mit IS NULL oder IS NOT NULL.
  • UPDATE und DELETE nie ohne WHERE ausführen.
  • Prepared Statements trennen SQL-Code und Daten und verhindern SQL-Injection.

Formeln

Zeilen eines Kreuzprodukts
und Zeilenzahlen der beiden Tabellen ohne Verknüpfungsbedingung

Typische Fehler in der Prüfung

  • Eine Bedingung auf eine Aggregatfunktion in WHERE statt in HAVING geschrieben.
  • Mit = NULL statt IS NULL nach fehlenden Werten gesucht.
  • INNER JOIN verwendet, obwohl auch Datensätze ohne Partner erscheinen sollen.
  • Bei SELECT mit GROUP BY eine Spalte ausgegeben, die weder gruppiert noch aggregiert ist.

Tipps aus der Werkstatt

  • SELECT was, FROM woher, WHERE welche Zeilen, GROUP BY wonach zusammenfassen, ORDER BY sortieren. Texte in einfache Anführungszeichen, Zahlen ohne. COUNT(*) mit GROUP BY zählt je Gruppe.
  • Ein JOIN verbindet zwei Tabellen über gleiche Schlüsselwerte: tickets.kunde_id = kunden.kunde_id. INNER JOIN liefert nur Treffer in beiden Tabellen, LEFT JOIN behält alle Zeilen der linken. Aggregatfunktionen wie AVG und MAX liefern eine Zeile je Gruppe.

Sitzt das Thema? Teste dich mit echten Prüfungsfragen.

35 Aufgaben zu „SQL-Abfragen“, falsche Antworten kommen in der Runde noch einmal.

Jetzt üben

Grundlage: Rahmenlehrplan IT-Berufe (KMK 2019), Lernfeld 5; ISO/IEC 9075 (SQL); OWASP zu SQL-Injection. Eigene Erklärung, keine Originalaufgaben der Prüfungsausschüsse.