Was du machst
Eine Datenbank beantwortet gut Fragen zu vielen Zeilen auf einmal: wie viele, wie viele von jeder Sorte, welche haben keine. In dieser Lektion stellst du der Shop-Datenbank vier solche Fragen, mit COUNT, GROUP BY, JOIN und LEFT JOIN. Du änderst nichts.
Bevor du anfängst
Notiz
Drücke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Der erste Start dauert etwas länger, weil dabei die Shop-Datenbank erstellt wird. Jede Schaltfläche Ausführen tippt ihren Befehl in das Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Willst du zuschauen oder eigene Befehle tippen, drücke in der Leiste auf Terminal öffnen (neuer Tab).
1. Sag dem Terminal, wie es sich anmeldet
Es sind dieselben zwei Befehle wie in SQL-Grundlagen. Der erste lässt den Client das eigene Zertifikat von MySQL annehmen. Der zweite macht den Kurznamen sql, mit dem du dich an der Datenbank shop anmeldest und eine Anweisung ausführst. Führe sie noch einmal aus, wenn das Terminal neu gestartet wurde. Das schadet nicht.
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
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.
2. Zähle Zeilen
COUNT(*) zählt Zeilen. AS customers gibt der Spalte in der Antwort einen Namen. Der Shop hat 40 Kundinnen und Kunden.
sql "SELECT COUNT(*) AS customers FROM customers"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
3. Zähle jede Sorte
GROUP BY country macht für jedes Land eine Zeile in der Antwort, und COUNT(*) zählt die Kundschaft in jedem Land. ORDER BY customers DESC stellt die größte Zahl nach oben. Das Vereinigte Königreich hat 14.
sql "SELECT country, COUNT(*) AS customers FROM customers GROUP BY country ORDER BY customers DESC 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.
4. Zähle über zwei Tabellen
Produkte kennen ihre Kategorie nur als Zahl. JOIN setzt den Namen der Kategorie daneben, und dann kannst du die Produkte in jeder Kategorie zählen. Books, Kitchen und Outdoors haben je fünf. Zwei Produkte haben keine Kategorie, deshalb lässt ein JOIN sie weg.
sql "SELECT categories.name, COUNT(*) AS products FROM products JOIN categories ON products.category_id = categories.id GROUP BY categories.name ORDER BY products DESC LIMIT 4"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
5. Finde, was fehlt
Ein einfacher JOIN behält nur Zeilen, die passen. LEFT JOIN behält jede Kundin und jeden Kunden und setzt NULL, wo es keine passende Bestellung gibt. WHERE orders.id IS NULL behält nur diese: die vier Personen, die nie bestellt haben.
sql "SELECT customers.first_name, customers.country FROM customers LEFT JOIN orders ON orders.customer_id = customers.id WHERE orders.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.
Für Lehrkräfte
Tipp
Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab bearbeitet wird: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Diese Lektion nutzt dasselbe MySQL-Lab wie SQL-Grundlagen, die Kurzform sql und der Verlauf der Lernenden bleiben also erhalten. Die Shop-Datenbank wurde so gebaut, dass es etwas zu finden gibt: Kundschaft, die nie bestellt hat, Produkte, die nie verkauft wurden, und fehlende Werte. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie mit dem Menü Lab im Lektionseditor eine neue.