Zum Inhalt springen

Datenbanken und betriebliche Datenmodelle – SQL-Abfragen schrittweise aufbauen

Aus MOOCsWiki Staging
Version vom 9. Oktober 2026, 21:19 Uhr von Glanz (Diskussion | Beiträge) (aiMOOC über GPT aiMOOC Action erstellt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
aiMOOC-Siegel aiMOOC

Datenbanken und betriebliche Datenmodelle – SQL-Abfragen schrittweise aufbauen

QR-Code


Datenbanken und betriebliche Datenmodelle – SQL-Abfragen schrittweise aufbauen


Einleitung

Zielgruppe: Auszubildende in IT, Verwaltung, Handel und kaufmännischen Berufen.

Dauer: ca. 60 Minuten Grundlagen und zusätzliche Projektzeit.

Lernziel: Du kannst betriebliche Daten verstehen und mit SQL gezielt auswählen, filtern und sortieren.

Ausbildungsfall: Du arbeitest in der fiktiven „Werkstatt Nord“. Dein Auftrag: Erstelle eine Übersicht für die Lagerkontrolle.

Dein Lernweg:

  1. Verstehen: Tabellen, Spalten und Datensätze erkennen.
  2. Auswählen: Mit SELECT und FROM Informationen abrufen.
  3. Filtern: Mit WHERE passende Artikel finden.
  4. Sortieren: Mit ORDER BY Ergebnisse ordnen.
  5. Anwenden: Mehrere Bedingungen kombinieren und Bestandslisten erstellen.

Alle Daten sind erfunden. Du arbeitest ausschließlich mit einer lokalen SQLite-Testdatenbank. Du benötigst weder einen Server noch Zugangsdaten oder eine Internetverbindung.

Wichtig: Nutze keine echten Kunden-, Beschäftigten- oder Unternehmensdaten. Die SQL-Übungen werden nicht an fremde Systeme übertragen. Externe Videos und Lernlinks sind freiwillig und können beim Aufruf Verbindungsdaten an die jeweiligen Anbieter senden.

Abb.: Grundlagen des relationalen Datenmodells. Quelle: Wikimedia Commons, AutumnSnow, CC BY-SA 3.0.


Ausbildungsfall: Das Lager der Werkstatt Nord

Die Werkstatt möchte wissen, welche Werkzeuge und Sicherheitsartikel kontrolliert werden sollten.

Dazu verwenden wir eine einzige Tabelle mit zehn fiktiven Artikeln.


Das betriebliche Datenmodell

Eine relationale Datenbank organisiert Informationen in Tabellen.

Eine Spalte beschreibt eine Eigenschaft. Eine Zeile enthält einen Datensatz. Ein Primärschlüssel identifiziert einen Datensatz eindeutig.

style="background:#e0f2e3" style="background:#e0f2e3"
Tabelle: artikel
artikel_id artikel kategorie bestand preis_cent
1 Schraubenset Material 12 590
2 Akkuschrauber Werkzeug 4 7990
3 Bohrerset Werkzeug 9 1990
4 Schutzhandschuhe Sicherheit 20 890
5 Schutzbrille Sicherheit 7 1290
6 Maßband Werkzeug 4 690
7 Schleifpapier Material 30 390
8 Gehörschutz Sicherheit 3 1590
9 Bitsatz Werkzeug 11 1490
10 Kabelbinder Material 4 450

Visualisierung: Die grün hinterlegten Zeilen sind Werkzeuge mit höchstens vier Stück Bestand. Genau diese Zeilen sollst Du später mit SQL ermitteln.

Datenmodell:

  1. Primärschlüssel: artikel_id identifiziert den Artikel eindeutig.
  2. Attribute: artikel, kategorie, bestand und preis_cent beschreiben den Artikel.
  3. Datentyp: bestand und preis_cent sind ganze Zahlen. Geldwerte werden in Cent gespeichert.

Abb.: Beispiel eines Entity-Relationship-Diagramms als Ausblick auf mehrere Tabellen. Quelle: Wikimedia Commons, AlwaysSnailTime, CC0 1.0.

Abb.: Beispiel eines komplexeren Datenbankschemas. Quelle: Wikimedia Commons, Mot2, CC BY-SA 3.0. In unserem Einstieg arbeiten wir bewusst nur mit einer Tabelle.


Lokales SQL-Lernlabor

Du brauchst: Python 3 mit dem Standardmodul sqlite3. Alternativ kannst Du die SQL-Datei mit einem lokal installierten SQLite-Kommandozeilenprogramm öffnen.

Das Labor benötigt keinen Netzwerkzugriff.


Schritt A: Fiktive Datenbank anlegen

Kopiere den folgenden Code in eine UTF-8-Datei mit dem Namen werkstatt_nord.sql.

-- Nur fiktive Testdaten
DROP TABLE IF EXISTS artikel;

CREATE TABLE artikel (
    artikel_id INTEGER PRIMARY KEY,
    artikel TEXT NOT NULL,
    kategorie TEXT NOT NULL,
    bestand INTEGER NOT NULL
        CHECK (bestand >= 0),
    preis_cent INTEGER NOT NULL
        CHECK (preis_cent >= 0)
);

INSERT INTO artikel
(artikel_id, artikel, kategorie, bestand, preis_cent)
VALUES
(1, 'Schraubenset', 'Material', 12, 590),
(2, 'Akkuschrauber', 'Werkzeug', 4, 7990),
(3, 'Bohrerset', 'Werkzeug', 9, 1990),
(4, 'Schutzhandschuhe', 'Sicherheit', 20, 890),
(5, 'Schutzbrille', 'Sicherheit', 7, 1290),
(6, 'Maßband', 'Werkzeug', 4, 690),
(7, 'Schleifpapier', 'Material', 30, 390),
(8, 'Gehörschutz', 'Sicherheit', 3, 1590),
(9, 'Bitsatz', 'Werkzeug', 11, 1490),
(10, 'Kabelbinder', 'Material', 4, 450);

Optionaler Schnellstart mit der lokalen SQLite-Konsole:

sqlite3 :memory: < werkstatt_nord.sql

Dieser Befehl führt die Datei in einer temporären Datenbank im Arbeitsspeicher aus und beendet die Konsole anschließend.

Für ein interaktives Labor verwendest Du das folgende Python-Programm.


Schritt B: Interaktive Testumgebung starten

Speichere den nächsten Code im selben Verzeichnis als sql_lernlabor.py.

Das Programm erstellt eine SQLite-Datenbank ausschließlich im Arbeitsspeicher. Es überprüft Deine SELECT-Abfragen anhand erwarteter Ergebnisse und gibt individuelle Rückmeldungen.

from pathlib import Path
import sqlite3
import re

AUFGABEN = [
    (
        "Basis: Spalten auswählen",
        "Zeige artikel und bestand aller Artikel, "
        "sortiert nach artikel.",
        "SELECT artikel, bestand FROM artikel "
        "ORDER BY artikel ASC;",
        (
            "Welche zwei Spalten brauchst Du?",
            "Schreibe SELECT artikel, bestand FROM artikel.",
            "Ergänze ORDER BY artikel ASC."
        ),
        "SELECT bestimmt die Ausgabespalten. "
        "ORDER BY sorgt für eine festgelegte Reihenfolge."
    ),
    (
        "Basis: Werkzeuge filtern",
        "Zeige artikel und bestand aller Werkzeuge, "
        "sortiert nach artikel.",
        "SELECT artikel, bestand FROM artikel "
        "WHERE kategorie = 'Werkzeug' "
        "ORDER BY artikel ASC;",
        (
            "Welche Spalte enthält die Kategorie?",
            "WHERE filtert die Ergebniszeilen.",
            "Verwende WHERE kategorie = 'Werkzeug'."
        ),
        "WHERE lässt nur Datensätze der Kategorie "
        "Werkzeug durch."
    ),
    (
        "Anwendung: zweifach sortieren",
        "Zeige die Werkzeuge zuerst nach bestand ASC, "
        "bei Gleichstand nach artikel ASC.",
        "SELECT artikel, bestand FROM artikel "
        "WHERE kategorie = 'Werkzeug' "
        "ORDER BY bestand ASC, artikel ASC;",
        (
            "Filtere zuerst auf Werkzeug.",
            "ORDER BY erlaubt mehrere Sortierspalten.",
            "Sortiere zuerst bestand, dann artikel."
        ),
        "Der erste Schlüssel sortiert den Bestand, "
        "der zweite entscheidet bei Gleichstand."
    ),
    (
        "Anwendung: Bedingungen verbinden",
        "Zeige Werkzeuge mit hoechstens 4 Stueck. "
        "Sortiere nach bestand und dann artikel.",
        "SELECT artikel, bestand FROM artikel "
        "WHERE kategorie = 'Werkzeug' "
        "AND bestand <= 4 "
        "ORDER BY bestand ASC, artikel ASC;",
        (
            "Beide Bedingungen muessen stimmen.",
            "Verbinde die Bedingungen mit AND.",
            "Hoechstens 4 bedeutet <= 4."
        ),
        "AND verlangt beide Bedingungen. "
        "Mit <= 4 sind auch genau 4 Stueck enthalten."
    ),
    (
        "Transfer: Sicherheitsartikel",
        "Zeige Sicherheitsartikel mit weniger als "
        "10 Stueck. Sortiere nach bestand und artikel.",
        "SELECT artikel, bestand FROM artikel "
        "WHERE kategorie = 'Sicherheit' "
        "AND bestand < 10 "
        "ORDER BY bestand ASC, artikel ASC;",
        (
            "Uebertrage die vorherige Abfrage.",
            "Wechsle die Kategorie zu Sicherheit.",
            "Weniger als 10 bedeutet < 10."
        ),
        "Ein niedriger Bestand ist ein Pruefhinweis, "
        "aber noch keine automatische Bestellung."
    )
]

db = sqlite3.connect(":memory:")

daten = Path(__file__).with_name(
    "werkstatt_nord.sql"
).read_text(encoding="utf-8")

db.executescript(daten)

# Ab hier sind Aenderungen gesperrt.
db.execute("PRAGMA query_only = ON")


def abfragen(sql):
    if not re.match(r"(?is)^\s*SELECT\b", sql):
        raise ValueError("Nur SELECT ist erlaubt.")

    cursor = db.execute(sql)

    spalten = tuple(
        spalte[0] for spalte in cursor.description
    )
    zeilen = tuple(cursor.fetchall())

    return spalten, zeilen


def anzeigen(ergebnis):
    spalten, zeilen = ergebnis

    print(" | ".join(spalten))
    print("-" * 45)

    for zeile in zeilen:
        print(" | ".join(map(str, zeile)))

    print("Zeilen:", len(zeilen))


print("SQL-Lernlabor: Werkstatt Nord")
print("Offline | SQLite im Arbeitsspeicher")
print("Befehle: :h1 :h2 :h3 :muster :weiter :ende")

for titel, auftrag, muster, hilfen, feedback in AUFGABEN:
    print("\n" + titel)
    print(auftrag)

    erwartet = abfragen(muster)

    while True:
        eingabe = input("SQL> ").strip()

        if eingabe == ":ende":
            db.close()
            raise SystemExit

        if eingabe == ":weiter":
            print("Aufgabe uebersprungen.")
            break

        if eingabe in (":h1", ":h2", ":h3"):
            index = int(eingabe[-1]) - 1
            print("Hilfe:", hilfen[index])
            continue

        if eingabe == ":muster":
            print("Musterloesung:", muster)
            print("Begruendung:", feedback)
            continue

        if not eingabe:
            continue

        try:
            ergebnis = abfragen(eingabe)
        except (sqlite3.Error, ValueError) as fehler:
            print("Pruefe Deine SQL-Syntax:", fehler)
            continue

        anzeigen(ergebnis)

        if ergebnis == erwartet:
            print("PASSEND zum Testdatensatz!")
            print("Begruendung:", feedback)
            break

        if ergebnis[0] != erwartet[0]:
            print("Pruefe die SELECT-Spalten.")

        elif len(ergebnis[1]) != len(erwartet[1]):
            print("Pruefe WHERE und die Grenzwerte.")

        elif set(ergebnis[1]) == set(erwartet[1]):
            print("Die Zeilen stimmen.")
            print("Pruefe die ORDER BY-Reihenfolge.")

        else:
            print("Pruefe Deine Filterbedingungen.")
            print("Nutze :h1, :h2 oder :h3.")

print("\nAlle Aufgaben bearbeitet!")
print("Teste Deine Abfragen auch mit anderen Daten.")
db.close()

So startest Du das Labor:

python sql_lernlabor.py

Auf manchen Systemen lautet der Befehl:

python3 sql_lernlabor.py

Bedienung:

  1. SQL eingeben: Schreibe eine vollständige SELECT-Abfrage in eine Zeile.
  2. :h1: Erster Denkanstoß.
  3. :h2: Konkreter Hinweis.
  4. :h3: Fast vollständige Hilfe.
  5. :muster: Musterlösung mit Begründung.
  6. :weiter: Aufgabe überspringen.
  7. :ende: Programm beenden.

Sicherheit: Das Labor verwendet nur SQLite im Arbeitsspeicher. Die Abfragen dürfen nur mit SELECT beginnen; der Datenbankmodus untersagt Änderungen. sqlite3 führt jeweils nur eine SQL-Anweisung aus. Es gibt keinen Code zum Öffnen von Netzverbindungen und keine Verbindung zu betrieblichen Datenbanken.

Grenze des automatischen Feedbacks: Ein passendes Ergebnis auf den zehn Testdatensätzen beweist noch nicht, dass eine Abfrage für alle möglichen Daten korrekt ist. Deshalb kontrollierst Du zusätzlich die Bedeutung von WHERE und ORDER BY.


Lerneinheit 1: Daten auswählen

Dauer: 6 Minuten

Auftrag: Zeige die Artikelnamen und Lagerbestände.


SELECT und FROM

SELECT artikel, bestand
FROM artikel
ORDER BY artikel ASC;

Merke:

SELECT legt die Ausgabespalten fest.

FROM benennt die Datenquelle.

ORDER BY legt hier bereits eine eindeutige alphabetische Reihenfolge fest.

Ausschnitt der Ergebnisansicht
artikel bestand
Akkuschrauber 4
Bitsatz 11
Bohrerset 9
Gehörschutz 3
Kabelbinder 4

Die vollständige Abfrage liefert zehn Zeilen mit jeweils zwei Spalten.

Abb.: Wirkung von SELECT, FROM und WHERE auf eine SQL-Tabelle. Quelle: Wikimedia Commons, Dew1978, CC BY-SA 4.0.

Video: SQL Tutorial Deutsch von Fabian Rappert. Für diese Einheit ist das Kapitel SELECT ab 00:30:09 relevant. Die gezeigte MySQL-Umgebung ist nicht unsere lokale SQLite-Übungsumgebung.

Mini-Aufgabe: Lass Dir statt artikel und bestand die Spalten artikel und kategorie ausgeben.

Hilfe 1: Ändere nur die Spalten hinter SELECT.

Hilfe 2: Die Tabelle heißt weiterhin artikel.

Hilfe 3: `SELECT artikel, kategorie FROM artikel ORDER BY artikel;`

Feedback: Richtig ist eine Tabelle mit zehn Zeilen und den zwei gewünschten Spalten. WHERE fehlt bewusst, weil keine Datensätze ausgeschlossen werden sollen.


Lerneinheit 2: Daten filtern

Dauer: 7 Minuten

Auftrag: Zeige nur die Werkzeuge.


WHERE verwenden

SELECT artikel, bestand
FROM artikel
WHERE kategorie = 'Werkzeug'
ORDER BY artikel ASC;

WHERE prüft für jeden Datensatz eine Bedingung.

Ergebnis: Kategorie Werkzeug
artikel bestand
Akkuschrauber 4
Bitsatz 11
Bohrerset 9
Maßband 4

Vorher: 10 Datensätze.

Nachher: 4 Datensätze.

Unterschied: SELECT bestimmt die Spalten. WHERE bestimmt, welche Zeilen im Ergebnis enthalten sind.

Mini-Aufgabe: Zeige nur Sicherheitsartikel.

Hilfe 1: Behalte die Spalten bei.

Hilfe 2: Ändere die Bedingung hinter WHERE.

Hilfe 3: `WHERE kategorie = 'Sicherheit'`

Feedback: Die Abfrage muss drei Sicherheitsartikel liefern. Eine Ergebnismenge mit allen zehn Artikeln zeigt, dass der Filter fehlt oder nicht wie gewünscht wirkt.

Freies Unterrichtsvideo: Datenbanken – WHERE, HubbS.

Urheber: Andre Scherl, über mebis Tube; Lizenz CC BY 4.0. Das Video erläutert die Filterung von Datenbankabfragen.


Lerneinheit 3: Ergebnisse sortieren

Dauer: 7 Minuten

Auftrag: Ordne Werkzeuge nach ihrem Lagerbestand.


ORDER BY, ASC und DESC

SELECT artikel, bestand
FROM artikel
WHERE kategorie = 'Werkzeug'
ORDER BY bestand ASC, artikel ASC;
style="background:#fff0d1" style="background:#fff0d1"
Aufsteigend: zuerst wenig Bestand
artikel bestand
Akkuschrauber 4
Maßband 4
Bohrerset 9
Bitsatz 11

ASC bedeutet aufsteigend. DESC bedeutet absteigend.

Der zweite Sortierschlüssel, artikel, bestimmt die Reihenfolge bei identischem Lagerbestand.

Ohne ORDER BY ist die Zeilenreihenfolge nicht garantiert.

Mini-Aufgabe: Zeige dieselben Werkzeuge mit dem höchsten Bestand zuerst.

Hilfe 1: WHERE bleibt unverändert.

Hilfe 2: Ändere die Sortierrichtung.

Hilfe 3: `ORDER BY bestand DESC, artikel ASC`

Feedback: Bitsatz mit elf Stück muss jetzt zuerst erscheinen. Bohrerset folgt mit neun Stück. Die beiden Werkzeuge mit vier Stück bleiben alphabetisch sortiert.

Video: SQL Tutorial deutsch von Data Science Academy. Relevante Kapitel: SELECT ab 00:38:50, WHERE ab 01:06:48 und ORDER BY ab 01:21:37.

Freies Unterrichtsvideo: Datenbanken – ORDER BY, HubbS.

Urheber: Andre Scherl, über mebis Tube; Lizenz CC BY 4.0.


Lerneinheit 4: Bedingungen kombinieren

Dauer: 8 Minuten

Auftrag: Welche Werkzeuge haben höchstens vier Stück Bestand?


WHERE und AND

SELECT artikel, bestand
FROM artikel
WHERE kategorie = 'Werkzeug'
  AND bestand <= 4
ORDER BY bestand ASC, artikel ASC;

AND verlangt, dass beide Bedingungen erfüllt sind.

<= 4 bedeutet: kleiner oder gleich vier.

style="background:#e0f2e3" style="background:#e0f2e3"
Ergebnis: Werkzeuge mit höchstens 4 Stück
artikel bestand
Akkuschrauber 4
Maßband 4

Mini-Aufgabe: Was passiert, wenn Du statt `<= 4` die Bedingung `< 4` verwendest?

Hilfe 1: Beachte das Gleichheitszeichen.

Hilfe 2: Beide passenden Werkzeuge haben genau vier Stück.

Hilfe 3: `< 4` schließt den Wert vier aus.

Feedback: Das Ergebnis ist leer. Dies ist kein SQL-Fehler: Im Testdatensatz gibt es kein Werkzeug mit weniger als vier Stück. Die Bedeutung des Grenzwerts ist deshalb entscheidend.


Lerneinheit 5: Betriebliche Transferaufgabe

Dauer: 8 Minuten

Auftrag der Lagerleitung: Erstelle eine Prüfliste der Sicherheitsartikel mit weniger als zehn Stück Bestand.


Eine vollständige Abfrage entwickeln

SELECT artikel, bestand
FROM artikel
WHERE kategorie = 'Sicherheit'
  AND bestand < 10
ORDER BY bestand ASC, artikel ASC;
style="background:#ffe0dd" style="background:#fff0d1"
Prüfliste Sicherheit
artikel bestand Hinweis
Gehörschutz 3 Zuerst prüfen
Schutzbrille 7 Danach prüfen

Ergebnis: Zwei Artikel müssen auf Grundlage der gewählten Schwelle näher geprüft werden.

Feedback: Die Abfrage ist für die definierte Informationsanforderung passend, weil sie Kategorie, Grenzwert und Priorisierung berücksichtigt. Ob tatsächlich bestellt werden muss, hängt jedoch auch von Verbrauch, Lieferzeit und Mindestbestand ab. Diese Informationen fehlen im Datenmodell.

Transferfrage: Welche zusätzlichen Datenfelder benötigt der Betrieb für eine fundierte Bestellentscheidung?


SQL-Bauplan

Baustein Aufgabe Beispiel
SELECT Ausgabespalten artikel, bestand
FROM Datenquelle artikel
WHERE Filterbedingung bestand < 10
AND Bedingungen verbinden Zwei Bedingungen gleichzeitig
ORDER BY Sortierung bestand ASC
DESC Sortierrichtung Absteigend

Merksatz: Welche Spalten? Aus welcher Tabelle? Welche Zeilen? In welcher Reihenfolge?


Häufige Fehler und begründetes Feedback

Fehler Korrektur Begründung
SELECT ohne FROM FROM artikel ergänzen Die Spalten benötigen in unserem Fall eine Tabellenquelle.
WHERE artikel = Werkzeug WHERE kategorie = 'Werkzeug' Gefiltert wird die Kategorie; Textwerte stehen in Anführungszeichen.
WHERE bestand < 4 WHERE bestand <= 4 Genau vier Stück sind nur bei kleiner oder gleich enthalten.
WHERE mit OR statt AND Mit AND verbinden OR kann auch Datensätze einschließen, die nur eine Bedingung erfüllen.
Sortierung nur nach bestand Zweiten Sortierschlüssel ergänzen Bei gleichen Beständen bleibt die Reihenfolge sonst offen.
Textsortierung statt Zahlensortierung Numerischen Datentyp verwenden Zahlen müssen numerisch verglichen werden.


Interaktive Aufgaben

Die folgenden Aufgaben ergänzen das lokale SQL-Lernlabor. Sie verwenden ausschließlich Begriffe und fiktive Daten des Kurses.


Quiz: Teste Dein Wissen

Welche Aufgabe hat SELECT? (Ausgabespalten festlegen) (!Datensätze löschen) (!Tabellen verbinden) (!Daten verschlüsseln)




Welche Aufgabe hat FROM? (Die Datenquelle benennen) (!Die Sortierrichtung ändern) (!Das Ergebnis drucken) (!Eine Datensicherung starten)




Wofür verwendest Du WHERE? (Zum Filtern von Datensätzen) (!Zum Ändern der Tabellenstruktur) (!Zum alphabetischen Sortieren) (!Zum Erstellen einer Sicherung)




Was bewirkt ORDER BY? (Es sortiert die Ergebniszeilen) (!Es entfernt immer doppelte Werte) (!Es löscht nicht passende Zeilen aus der Tabelle) (!Es benennt die Datenbank um)




Was bedeutet DESC? (Absteigende Sortierung) (!Aufsteigende Sortierung) (!Alle Datensätze auswählen) (!Nur Textspalten anzeigen)




Was bedeutet eine Bedingung mit kleiner oder gleich vier? (Auch der Wert vier ist eingeschlossen) (!Nur Werte über vier sind erlaubt) (!Der Wert vier ist ausgeschlossen) (!Es werden immer vier Zeilen ausgegeben)




Was bedeutet AND zwischen zwei Bedingungen? (Beide Bedingungen müssen erfüllt sein) (!Mindestens eine Bedingung muss erfüllt sein) (!Beide Bedingungen werden ignoriert) (!Das Ergebnis wird zufällig sortiert)




Warum kann ein zweiter Sortierschlüssel sinnvoll sein? (Er legt die Reihenfolge bei gleichen ersten Sortierwerten fest) (!Er verdoppelt alle Datensätze) (!Er ersetzt den Tabellenfilter) (!Er erstellt automatisch einen Primärschlüssel)




Welche Aussage über SELECT trifft zu? (Eine einfache SELECT-Abfrage liest Daten ohne sie zu verändern) (!SELECT löscht die abgefragten Datensätze) (!SELECT ändert automatisch alle Lagerbestände) (!SELECT erstellt immer eine neue Datenbank)




Welche Übungsumgebung ist für diesen Kurs vorgesehen? (Eine lokale SQLite-Datenbank mit fiktiven Daten) (!Eine fremde Produktionsdatenbank) (!Ein unbekannter Server mit echten Kundendaten) (!Ein ungefragt kopiertes Firmensystem)





Memory

Ordne die SQL-Begriffe ihren Funktionen zu.

SELECT Ausgabespalten
FROM Quelltabelle
WHERE Filterbedingung
ORDER BY Ergebnisreihenfolge
ASC Aufsteigend
DESC Absteigend
AND Gleichzeitige Erfüllung





Drag and Drop

Ordne die SQL-Bestandteile ihren Aufgaben zu.

Ordne die richtigen Begriffe zu. Funktion
SELECT Spaltenauswahl
FROM Datenquelle
WHERE Zeilenfilter
ORDER BY Ergebnissortierung
AND Bedingungsverknüpfung





Kreuzworträtsel

TABELLE Wie heißt eine strukturierte Sammlung von Zeilen und Spalten in einer relationalen Datenbank?
SPALTE Wie heißt eine einzelne Eigenschaft innerhalb einer Datenbanktabelle?
FILTER Wie nennt man eine Bedingung zur Einschränkung der Ergebniszeilen?
ABSTEIGEND Welche Sortierrichtung bezeichnet DESC?
SCHLUESSEL Wie heißt eine Kennung zur eindeutigen Identifikation eines Datensatzes?
BESTAND Welches Datenfeld beschreibt im Ausbildungsfall die gelagerte Artikelmenge?





LearningApps

Freiwillige externe Ergänzung: Hier kannst Du nach weiteren SQL-Lernspielen suchen. Verwende dort keine echten betrieblichen Daten. Die lokalen Aufgaben des Kurses funktionieren vollständig ohne diese externe Webseite.


Lückentext

Vervollständige den Text.
Eine relationale Datenbank organisiert Informationen in einer

mit Zeilen und Spalten.
Eine Zeile beschreibt einen einzelnen

des Lagers.
Eine eindeutige Artikelkennung kann als

dienen.
Mit

legst Du die Spalten fest, die im Abfrageergebnis erscheinen.
Die Datenquelle wird mit

benannt.
Zum Filtern einzelner Datensätze verwendest Du das Schlüsselwort

vor der Bedingung.
Mehrere gleichzeitig erforderliche Bedingungen verknüpfst Du mit

in der Abfrage.
Die Ergebnissortierung wird durch

festgelegt.
Eine aufsteigende Sortierung wird mit

beschrieben.
Eine absteigende Sortierung erhältst Du mit

hinter dem Sortierschlüssel.
Bei identischen ersten Sortierwerten kann ein weiterer

die Reihenfolge festlegen.
Das Lernlabor verwendet die Datenbanksoftware

lokal im Arbeitsspeicher.




Offene Aufgaben

Bearbeite die Aufgaben mit der fiktiven Tabelle artikel. Halte SQL-Abfragen und Ergebnistabellen fest. Bei eigenen Erweiterungen arbeitest Du ausschließlich in der lokalen Testumgebung.


Leicht: Basisaufgaben

  1. Tabellenmodell: Zeichne eine eigene Übersicht mit drei Spalten und fünf fiktiven Lagerartikeln. Feedbackkriterium: Jede Zeile muss einen vollständigen Datensatz darstellen; nur so lassen sich Eigenschaften eindeutig zuordnen.
  2. SELECT: Schreibe eine Abfrage, die nur Artikelname und Kategorie zeigt. Feedbackkriterium: Das Ergebnis enthält zehn Zeilen und genau die gewünschten Ausgabespalten.
  3. WHERE: Finde alle Artikel aus der Kategorie Material. Feedbackkriterium: Schraubenset, Schleifpapier und Kabelbinder müssen erscheinen, da ihre Kategorie übereinstimmt.
  4. ORDER BY: Sortiere alle Artikel nach bestand absteigend. Feedbackkriterium: Schleifpapier steht mit 30 Stück vorne; die Sortierrichtung muss zum Auftrag passen.


Standard: Anwendungsaufgaben

  1. SQL-Abfrage: Erstelle eine Liste aller Artikel mit weniger als fünf Stück Bestand. Feedbackkriterium: Vier Datensätze sind zu erwarten; ein Grenzwertfehler verändert dieses Ergebnis.
  2. AND-Bedingung: Filtere Sicherheitsartikel mit weniger als zehn Stück. Feedbackkriterium: Gehörschutz und Schutzbrille erscheinen; beide Filterbedingungen müssen zugleich erfüllt sein.
  3. Sortierung: Sortiere die Artikel nach Kategorie und innerhalb der Kategorien nach Bestand. Dokumentiere einen Fall mit zwei unterschiedlichen Sortierschlüsseln. Feedbackkriterium: Die erste Spalte bestimmt die Gruppierung, die zweite die Reihenfolge innerhalb gleicher Kategorien.
  4. Datenvisualisierung: Erstelle aus einem lokalen SQL-Ergebnis eine farblich markierte Bestandstabelle. Feedbackkriterium: Die Hervorhebung muss sich aus einer vorher erklärten Bestandsgrenze ergeben.


Schwer: Transferaufgaben

  1. Lagerprozess: Entwickle eine kleine Entscheidungsregel zur Nachbestellung. Ergänze zunächst erfundene Lieferzeiten und Mindestbestände. Feedbackkriterium: Eine Bestellung muss durch mehr als den aktuellen Bestand begründet werden.
  2. Datenqualität: Verändere in einer separaten Kopie der fiktiven Testdaten einen Bestandswert und überprüfe, welche Abfragen andere Ergebnisse liefern. Feedbackkriterium: Erkläre, welche Filter- und Sortierbedingungen dadurch betroffen sind.
  3. Informationssicherheit: Entwirf ein Konzept, bei dem Auszubildende nur notwendige Lagerinformationen sehen. Feedbackkriterium: Begründe, warum die Auswahl erforderlicher Spalten hilfreich ist, und unterscheide sie von einer wirksamen technischen Zugriffsbeschränkung.
  4. Datenmodellierung: Entwirf eine zweite Tabelle für fiktive Lieferanten und zeichne mögliche Beziehungen zu Artikeln. Feedbackkriterium: Ein konsistentes Modell verwendet eindeutige Schlüssel und beschreibt, welche Verbindungen fachlich erlaubt sind. JOIN ist hier ein Ausblick, kein Pflichtstoff der SQL-Grundlagen.




Text bearbeiten Bild einfügen Video einbetten Interaktive Aufgaben erstellen



Lernkontrolle

Bei der Lernkontrolle steht nicht das Auswendiglernen von SQL-Befehlen im Mittelpunkt, sondern die Anwendung auf neue Anforderungen.

  1. Informationsbedarf: Eine Lagerleitung verlangt eine Liste der dringend zu prüfenden Werkzeuge. Formuliere zuerst die Informationsanforderung und entwickle daraus eine SQL-Abfrage. Begründe, weshalb Du genau diese Spalten und Filter auswählst.
  2. Grenzwertentscheidung: Vergleiche zwei Abfragen mit `bestand < 4` und `bestand <= 4`. Erkläre anhand des Lagerfalls, wie sich die Auswahl unterscheidet und welche betriebliche Fehlentscheidung aus dem falschen Operator entstehen könnte.
  3. Bedingungslogik: Vergleiche `kategorie = 'Werkzeug' AND bestand <= 4` mit einer entsprechenden OR-Verknüpfung. Erkläre, warum die zweite Variante auch fachlich unerwünschte Artikel liefern kann.
  4. Sortierschlüssel: Zwei Artikel haben denselben Bestand. Entwickle eine zweite Sortierbedingung und begründe, warum das Ergebnis dadurch nachvollziehbarer wird.
  5. Datenmodell: Der Betrieb möchte Bestellvorschläge erstellen. Untersuche, welche Informationen in der vorhandenen Tabelle fehlen, und begründe zwei sinnvolle Modellerweiterungen.
  6. Datenschutz und Datensicherheit: Ein Lernender möchte eine echte Unternehmensdatenbank für eine Übung verwenden. Entwickle eine sichere Alternative und erkläre, welche Risiken durch fiktive lokale Testdaten vermieden werden.

Bewertung: Eine überzeugende Bearbeitung verbindet korrekte SQL-Syntax, passende Ergebnisdaten und eine fachlich nachvollziehbare Begründung.




Lernnachweis

Erstelle eine kurze digitale Dokumentation mit folgenden Bestandteilen:

  1. Datenmodell: Eine Darstellung der fiktiven Artikeltabelle mit Primärschlüssel und Datentypen.
  2. SQL-Abfragen: Mindestens fünf funktionsfähige SELECT-Abfragen mit steigender Schwierigkeit.
  3. Ergebnisnachweis: Zu jeder Abfrage eine Ergebnistabelle oder ein lokaler Screenshot mit fiktiven Daten.
  4. Fehleranalyse: Ein selbst entdeckter SQL-Fehler und seine begründete Korrektur.
  5. Transfer: Eine kurze Prüfliste für den Lagerbetrieb und eine Erklärung ihrer Grenzen.
  6. Sicherheit: Eine Bestätigung, dass ausschließlich autorisierte lokale Testdaten verwendet wurden.

Bewertungsraster:

Kompetenz Punkte
Datenmodell verstanden 20
SELECT und FROM korrekt eingesetzt 20
WHERE und Grenzwerte korrekt verwendet 20
ORDER BY und Mehrfachsortierung begründet 20
Transfer, Datenqualität und sichere Arbeitsweise 20
Gesamt 100

Ein guter Lernnachweis zeigt nicht nur das korrekte Ergebnis. Er erklärt auch, warum die SQL-Abfrage die betriebliche Frage beantwortet.




OERs zum Thema


Wikipedia: SQL


Weitere fachliche Quellen

  1. SQLite-Dokumentation – SELECT: Offizielle Beschreibung von SELECT, WHERE und ORDER BY.
  2. SQLite-Dokumentation – Ausdrücke: Vergleichsoperatoren und logische Bedingungen.
  3. SQLite-Dokumentation – Kommandozeile: Lokaler Start und Datenbanken im Arbeitsspeicher.
  4. Python-Dokumentation – sqlite3: Offizielle Erläuterung der Python-SQLite-Schnittstelle.
  5. Wikipedia – Relationale Datenbank: Einführung in relationale Datenmodelle.
  6. HubbS – SELECT und FROM: Unterrichtsvideo von Andre Scherl, CC BY 4.0.
  7. HubbS – WHERE: Unterrichtsvideo von Andre Scherl, CC BY 4.0.
  8. HubbS – ORDER BY: Unterrichtsvideo von Andre Scherl, CC BY 4.0.


Medienrechte und sichere Verwendung

Die verwendeten Commons-Dateien wurden anhand ihrer Dateibeschreibungsseiten ausgewählt:

  1. Relational model concepts.png: AutumnSnow, CC BY-SA 3.0.
  2. SQL-Abfrage.png: Dew1978, CC BY-SA 4.0.
  3. SQL ERD Example.png: AlwaysSnailTime, CC0 1.0.
  4. Datenbankdiagram.png: Mot2, CC BY-SA 3.0.

Lizenzhinweis: Bei einer Weiterverwendung lizenzierter Bilder sind die jeweiligen Bedingungen zur Namensnennung und gegebenenfalls Weitergabe unter gleichen Bedingungen einzuhalten. YouTube-Videos werden als externe Lernmedien eingebettet; damit wird keine freie Nachnutzungslizenz für die Videos behauptet.

Sicherheitsregel: Die Datenbank-Übungen erfordern keine externen SQL-Editoren, keinen Fernzugriff und keine Übertragung betrieblicher Daten. Nur fiktive Daten aus dem lokalen Lernlabor verwenden.


Verknüpfte Lernbereiche


Weiterführende Lernideen

Wenn Du die Grundlagen sicher beherrschst, kannst Du später weitere Themen bearbeiten: JOIN, GROUP BY, Datenbanknormalisierung, Referentielle Integrität und Datenbankmanagementsystem.


aiMOOC-Projekte



Schulfach+




aiMOOCs



aiMOOC Projekte









MOOCwiki · Deutsch

Nach dem Lernen ist vor dem Lernen

Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.

Zur MOOCwiki-Hauptseite

Mediathek

Inhalte werden geladen ...

Mediathek wird aus dem Wiki geladen ...