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

Nach den passenden Zeilen fragen

Nach dieser Lektion: Ich kann eine Datenbank nach den Zeilen fragen, die ich brauche.

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

Welche Notebooks sind zu alt?

Der IT-Support einer Firma bekommt eine einfache Frage. Welche Notebooks wurden vor 2023 gekauft, und wer hat sie?

In einer Tabellenkalkulation würden Sie scrollen und suchen. Eine Datenbank antwortet sofort.

Sie müssen die Frage nur in einer Form stellen, die die Datenbank versteht.

Am Ende dieser Lektion

Notiz

Ich kann eine Datenbank nach den Zeilen fragen, die ich brauche.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Abfrageeine Frage an eine Datenbank, in SQL geschrieben
Klauselein Teil einer Abfrage, den ein Schlüsselwort einleitetWHERE
Bedingungein Test, den eine Zeile besteht oder nichtprice < 30
Ergebnisdie Zeilen, die eine Abfrage zurückgibt
Platzhalterein Zeichen in einem Muster, das für beliebigen Text steht%
NULLdie Markierung für einen fehlenden Wert

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

WHERE behält die Zeilen, die bestehen

Eine Abfrage beginnt mit SELECT. Es nennt die Spalten. FROM nennt die Tabelle.

WHERE fügt eine Bedingung hinzu. Eine Zeile bleibt nur im Ergebnis, wenn sie besteht. Verbinden Sie Bedingungen mit AND und OR.

Text steht in einfachen Anführungszeichen. Zahlen nicht.

Starten Sie zuerst die zwei Einrichtungszeilen. Sie kennen sie aus der letzten Lektion, und eine Wiederholung schadet nicht.

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 den 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.

Nach einem Text suchen

Befehl
sql "SELECT first_name, city FROM customers WHERE country = 'France' ORDER BY city, first_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.

Zwei Bedingungen zugleich

Befehl
sql "SELECT name, price FROM products WHERE category_id = 4 AND price < 30 ORDER BY price"

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

Ein Beispiel: die Tests, die Sie nutzen können

TestBedeutungBeispiel
= <>Gleich, ungleichcountry = 'Spain'
< <= > >=Kleiner oder größerprice < 30
BETWEENIn einem Bereich, Enden eingeschlossenstock BETWEEN 5 AND 10
LIKEPasst zu einem Muster, % ist beliebiger Textname LIKE '%Set%'
IS NULLDer Wert fehltphone IS NULL

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

Ein Bereich, beide Enden eingeschlossen

Befehl
sql "SELECT name, stock FROM products WHERE stock BETWEEN 5 AND 10 ORDER BY stock, 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.

Namen mit einem Muster finden

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.

NULL heißt fehlend, nicht null

Manche Kunden haben keine Telefonnummer. Die Spalte enthält dann NULL: Es ist nichts bekannt.

NULL ist mit nichts gleich, nicht einmal mit NULL. Darum findet = NULL nie eine Zeile.

Fragen Sie mit IS NULL. Starten Sie beide Runs und vergleichen Sie.

Kunden ohne Telefon zählen

Befehl
sql "SELECT COUNT(*) AS no_phone FROM customers WHERE phone 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, falsch geschrieben

Befehl
sql "SELECT COUNT(*) AS no_phone FROM customers WHERE phone = 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.

Ein häufiger Fehler

Warnung

Viele glauben, phone = NULL finde die fehlenden Nummern. Es findet keine, und es warnt nicht. Ein fehlender Wert ist mit nichts gleich. Schreiben Sie immer IS NULL oder IS NOT NULL.

ORDER BY und LIMIT formen das Ergebnis

Eine Tabelle hat keine feste Reihenfolge. Kommt es darauf an, verlangen Sie sie mit ORDER BY. DESC stellt den größten Wert nach vorn.

LIMIT 3 behält die ersten drei Zeilen des Ergebnisses. OFFSET 2 überspringt vorher zwei.

Nutzen Sie LIMIT mit ORDER BY. Ohne Reihenfolge sagen „die ersten drei“ nichts.

Die drei günstigsten Artikel

Befehl
sql "SELECT name, price FROM products 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.

Zwei überspringen, zwei nehmen

Befehl
sql "SELECT name, price FROM products ORDER BY price DESC LIMIT 2 OFFSET 2"

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

Ein Beispiel: wie eine Abfrage gelesen wird

SchrittKlauselWas die Datenbank tut
1FROMWählt die Tabelle
2WHEREWirft Zeilen weg, die den Test nicht bestehen
3SELECTBehält nur die genannten Spalten
4ORDER BYBringt die Zeilen in Reihenfolge
5LIMITKürzt die Liste auf die verlangte Größe

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

Probieren Sie es: Geräte nach Abteilung

Code: sql
-- Geräte der Abteilung Recht oder Vertrieb.
SELECT inventar_nr, modell, abteilung FROM geraete
WHERE abteilung = 'Recht' OR abteilung = 'Vertrieb';
-- Ändern Sie die Abfrage: Geräte, die 2024 oder später gekauft wurden.

Probieren Sie es: die teuersten Geräte

Code: sql
-- Die drei teuersten Geräte, das teuerste zuerst.
SELECT inventar_nr, preis FROM geraete
ORDER BY preis DESC
LIMIT 3;
-- Ändern Sie DESC in ASC und starten Sie noch einmal.

Weiterführend: ein Ergebnis in Seiten teilen

Ein Shop zeigt seine Artikel in Seiten zu je fünf, die günstigsten zuerst. Schreiben Sie die Abfrage für Seite drei.

Sehen Sie dann nach, ob zwei Artikel denselben Preis haben. Was kann an der Grenze zwischen zwei Seiten schiefgehen, und wie verhindern Sie es?

Ü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.