Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Mit SELECT und WHERE Zeilen finden

Nach dieser Lektion: Ich kann mit SQL genau die Zeilen finden, die ich brauche.

Lektion, 45 Min.6 BefehleMySQL-und-phpMyAdmin-Lab mit Beispieldatenbank eines Shops zum Üben von SQL

Nur die Gerichte unter drei Euro

In der Schulmensa hängt ein Plan mit 300 Gerichten. Du willst wissen, was vegetarisch ist und weniger als 3 Euro kostet.

Niemand liest dafür 300 Zeilen. Eine Datenbank filtert sie in einem Augenblick, wenn du die Frage richtig stellst.

Am Ende dieser Lektion

Notiz

Ich kann mit SQL genau die Zeilen finden, die ich brauche.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Abfrageeine Frage an eine Datenbank, in SQL geschrieben
Klauselein Teil einer Abfrage mit einem SchlüsselwortWHERE
Bedingungein Test, den jede Zeile besteht oder nichtpreis < 3
NULLdie Markierung für einen fehlenden Wert
Musterein Suchtext mit Platzhalter%suppe%

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

SELECT wählt Spalten, FROM nennt die Tabelle

Jede Abfrage beginnt mit SELECT. Dahinter stehen die Spalten, die du sehen willst. Mit FROM nennst du die Tabelle.

SELECT name, preis_euro FROM gerichte zeigt zwei Spalten für alle Zeilen. Mit einem Stern * bekommst du alle Spalten.

WHERE behält nur Zeilen, die eine Bedingung bestehen

Mit WHERE schreibst du eine Bedingung. Die Datenbank prüft jede Zeile und behält nur die, die bestehen.

Mit AND müssen beide Bedingungen stimmen, mit OR genügt eine. Text steht in einfachen Anführungszeichen, Zahlen ohne.

Beispiel: drei Bedingungen, drei Ergebnisse

BedingungBehält
art = 'Suppe'Linsensuppe und Kartoffelsuppe
preis_euro < 1.5Pudding, Apfelschorle, Mineralwasser und Kakao
art = 'Suppe' AND preis_euro < 2.4Nur die Kartoffelsuppe

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Probier es: nicht vegetarische Hauptgerichte

Code: sql
-- Alle Hauptgerichte, die nicht vegetarisch sind.
SELECT name, preis_euro FROM gerichte
WHERE art = 'Hauptgericht' AND vegetarisch = 0;
-- Ändere die Abfrage: alle Suppen oder Desserts.

Bevor du anfängst

Notiz

Drück oben in der Leiste auf Lab starten, warte auf beide Dienste und öffne das Terminal. Die zwei ersten Runs richten die Anmeldung ein. Die Abfragen lesen nur und ändern nichts.

Das Zertifikat des Servers annehmen

Befehl
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Abkürzung für die Datenbank shop

Befehl
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die drei billigsten lieferbaren Artikel unter 10

Befehl
sql "SELECT name, price FROM products WHERE price < 10 AND discontinued = 0 ORDER BY price LIMIT 3"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

ORDER BY ordnet, LIMIT kürzt

ORDER BY preis_euro sortiert die Zeilen vom kleinsten Preis zum größten. Mit DESC dahinter kehrst du die Reihenfolge um.

LIMIT 3 zeigt nur die ersten drei Zeilen. Ohne ORDER BY ist nicht festgelegt, welche Zeilen vorn stehen. Darum gehören beide zusammen.

Artikel, deren Name „Set“ enthält

Befehl
sql "SELECT name FROM products WHERE name LIKE '%Set%' ORDER BY name"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

LIKE sucht ein Muster im Text

Mit LIKE suchst du Text nach einem Muster. Das Zeichen % steht für beliebig viele beliebige Zeichen.

LIKE '%suppe%' findet jeden Namen, der „suppe“ irgendwo enthält. LIKE 'Apfel%' findet nur Namen, die mit „Apfel“ beginnen.

NULL ist kein Wert, sondern ein fehlender

NULL heißt: Hier steht nichts. Die Kalorien eines neuen Gerichts sind vielleicht noch nicht gemessen.

Mit = NULL findest du solche Zeilen nie, denn NULL ist mit nichts gleich, nicht einmal mit NULL. Nimm IS NULL oder IS NOT NULL.

Ein häufiger Fehler

Warnung

Viele schreiben WHERE spalte = NULL und wundern sich über keine Treffer. Die Abfrage läuft ohne Fehlermeldung, aber sie ist falsch. Schreib immer IS NULL. Eine falsche Abfrage, die läuft, ist die gefährlichste.

Artikel ohne Kategorie richtig finden

Befehl
sql "SELECT name, price FROM products WHERE category_id IS NULL"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Dieselbe Frage mit dem Gleichheitszeichen

Befehl
sql "SELECT COUNT(*) AS treffer FROM products WHERE category_id = NULL"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Probier es: Gerichte ohne Kalorien

Code: sql
-- Gerichte, bei denen die Kalorien fehlen.
SELECT name FROM gerichte WHERE kalorien IS NULL;
-- Ändere IS NULL in IS NOT NULL und starte noch einmal.

Über dieses Lab und seinen Quellcode: MySQL-und-phpMyAdmin-Lab mit Beispieldatenbank eines Shops zum Üben von SQL

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.