Zum Inhalt springen

Informatik · Klasse 11–13 · aktualisiert

SQL SELECT: Daten gezielt abfragen

Du wählst mit SELECT Daten aus, filterst und sortierst Ergebnisse, verbindest Tabellen und wertest Gruppen aus.

0 von 9 Aufgaben gelöst

SQL SELECT: Daten gezielt abfragen

Kurz gesagt

Mit SELECT fragst du Daten aus Tabellen ab. In PostgreSQL kannst du Spalten auswählen, Zeilen filtern, Ergebnisse sortieren, Tabellen verbinden und Werte für Gruppen zusammenfassen.

SQL steht für Structured Query Language, also strukturierte Abfragesprache. Diese Lektion folgt PostgreSQL, einem Datenbankmanagementsystem, das Daten in Tabellen verwaltet. Alle Übungsdaten sind erfunden; die genannten Tabellen und Spalten gelten als vorhanden. Zahlenspalten enthalten in den Beispielen ganze Zahlen ohne fehlende Werte.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Termi das Ziel für dich ab.

4 Abschnitte

Eine Tabelle besteht aus Spalten und Zeilen. Eine Spalte enthält eine bestimmte Art von Angaben, etwa eine Kennung oder eine Leistung. Eine Zeile enthält die zusammengehörenden Angaben zu einem Eintrag.

SELECT bestimmt die ausgegebenen Spalten oder berechneten Ausdrücke. Mehrere Spaltennamen trennst du durch Kommas. FROM nennt die Tabelle, aus der die Daten stammen. WHERE legt eine Bedingung für die einzelnen Zeilen fest. Das Zeichen > bedeutet in einer solchen Bedingung „größer als“; der Grenzwert selbst zählt nicht mit. >= bedeutet „größer oder gleich“. Ein Semikolon beendet die SQL-Anweisung.

WHERE behält eine Zeile, wenn ihre Bedingung wahr ist. Ist die Bedingung falsch oder unbekannt, wird die Zeile verworfen. NULL kennzeichnet einen fehlenden oder unbekannten Wert; auch das Ergebnis einer Bedingung kann NULL und damit unbekannt sein. Die ausgegebenen Spalten müssen nicht dieselben sein wie die Spalten, die WHERE prüft. Eine Abfrage liefert ein Ergebnis, ohne dadurch die gespeicherten Daten zu ändern.

Definition

SELECT, FROM und WHERE

SELECT bestimmt die Ausgabe, FROM die Datenquelle und WHERE die Bedingung für einzelne Zeilen.

kennungartleistung
11Lampe6
12Lampe9
13Radio4

Beispiel: Geräte nach ihrer Leistung auswählen

  1. 1Die erfundene Tabelle geraete enthält die drei oben gezeigten Zeilen.
  2. 2SELECT kennung, leistung FROM geraete WHERE leistung > 5;
  3. 3WHERE behält die Geräte mit den Leistungen 6 und 9.
  4. 4SELECT gibt die Spalten kennung und leistung aus: (11, 6) und (12, 9). Die Spalte art erscheint nicht.
  5. 5Die Reihenfolge dieser beiden Ergebniszeilen ist hier nicht festgelegt.

Teste dich

LeichtDie erfundene Tabelle lose enthält (farbe, wert): (Rot, 6), (Blau, 4), (Grün, 7). Was gibt SELECT farbe FROM lose WHERE wert > 4; aus? Die Reihenfolge ist egal.

Alles auf einen Blick

SQL SELECT

  • Auswahl

    SELECT bestimmt die Ausgabespalten, FROM die Datenquelle und WHERE die zugelassenen Zeilen.

  • Sortierung

    ORDER BY vergleicht die Angaben von links nach rechts; ohne Richtungsangabe gilt ASC.

  • Doppelte Ergebnisse

    DISTINCT behält eine Zeile je gleicher vollständiger Ergebniszeile und ändert keine gespeicherten Daten.

  • Verbindung

    INNER JOIN erzeugt für jedes passende Zeilenpaar einen Treffer; gleiche Spaltennamen sind bei ON nicht nötig.

  • Gruppen

    GROUP BY fasst gleiche Gruppenwerte zusammen; SUM addiert die Zahlen je Gruppe.

  • Filterzeitpunkt

    WHERE filtert einzelne Zeilen vor der Gruppierung, HAVING die entstandenen Gruppen.

Musteraufgabe · Schritt für Schritt

Raumstunden auswerten

  1. 1Die erfundene Tabelle buchungen enthält (raum, stunden): (4, 2), (4, 3), (7, 1), (7, 4), (9, 2).
  2. 2Gesucht sind Räume mit mindestens 4 Stunden insgesamt. Einzelbuchungen unter 2 Stunden sollen vorher entfallen. Die größte Summe soll zuerst erscheinen.
  3. 3SELECT raum, SUM(stunden) AS gesamt FROM buchungen WHERE stunden >= 2 GROUP BY raum HAVING SUM(stunden) >= 4 ORDER BY SUM(stunden) DESC;
  4. 4WHERE entfernt die Buchung (7, 1). Die übrigen vier Buchungen gehen in die Gruppen ein.
  5. 5Die Summen sind 5 für Raum 4, 4 für Raum 7 und 2 für Raum 9.
  6. 6HAVING entfernt Raum 9. Die absteigend sortierte Ausgabe mit den Spalten raum und gesamt lautet: (4, 5), (7, 4).

Fehler finden

Prüfe die Auswertung der Erntemengen In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

In einer erfundenen Tabelle stehen die Zahlen 3 und 9 in der Spalte wert. WHERE wert > 5 behält die Zeile mit . Bei ORDER BY wert ASC steht von den Werten 2, 7 und 4 zuerst . Sollen nach dem Gruppieren die Gruppen mit SUM(menge) > 10 übrig bleiben, steht diese Bedingung hinter .

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: SQL SELECT

LeichtDie erfundene Tabelle samen hat die Spalten sorte und keimtage. Du möchtest die Spalte sorte ausgeben und keimtage nicht ausgeben. Welche Anfangszeile der Abfrage passt?
MittelDie erfundene Tabelle messpunkte enthält (ort, hoehe): (4, 8), (4, 8), (4, 9). Welche Ausgabe liefert SELECT DISTINCT ort, hoehe FROM messpunkte ORDER BY hoehe DESC;? Die Paare nennen jeweils ort und hoehe.
SchwerDie erfundene Tabelle laeufe enthält in schritte die Werte 2, 4 und 7. Was liefert in PostgreSQL SELECT SUM(schritte) FROM laeufe HAVING SUM(schritte) > 10;?

Weiterlesen in Informatik