Dies ist eine alte Version des Dokuments!
LU02 - Daten mit SQL abfragen
Lernziele
Nach dieser Lerneinheit können Sie:
- Einfache Abfragen: Ich kann mit dem SQL-Befehl SELECT alle Spalten oder nur bestimmte Spalten aus einer Tabelle anzeigen.
- Sortieren von Daten: Ich kann mit ORDER BY die Ergebnisse sortieren (aufsteigend oder absteigend).
- Filtern mit Bedingungen: Ich kann mit WHERE Daten filtern – sowohl nach Zahlen als auch nach Text, inklusive der richtigen Anführungszeichen bei Textwerten.
- Mehrere Bedingungen kombinieren: Ich kann mit AND, OR und NOT mehrere Bedingungen verknüpfen.
- Richtig starten: Ich weiss, dass ich in WebStorm zuerst das richtige Schema auswählen muss, bevor ich Abfragen mache.
Einleitung: Was ist SQL?
Die Datenbanksprache SQL (Structured Query Language) basiert auf der relationalen Algebra. Es handelt sich um eine Datenbanksprache zur Erstellung von Datenbankstrukturen in relationalen Datenbanken sowie zum Bearbeiten und Abfragen der darin gespeicherten Datenbestände. Ihre Syntax ist vergleichsweise einfach und stark an die englische Sprache angelehnt.
SQL dient zur:
- Abfrage von Daten
- Auswertung von Daten
- Verwaltung von Daten
- Programmierung innerhalb von Datenbanken
Im Begriff SQL steckt das englische Wort query (= Abfrage). Mit dem Befehl
SELECT
können Daten abgefragt werden. Weitere wichtige Befehle sind:
INSERT– Daten einfügen
UPDATE– Daten ändern
DELETE– Daten löschen
Diese vier Befehle bilden zusammen die sogenannten CRUD-Operationen: C = Create, R = Read (=Select), U = Update, D = Delete. Sie sind die Grundlage jeder Datenbankarbeit. INSERT, UPDATE und DELETE lernen wir in einer späteren Lerneinheit – heute geht es um Read, also SELECT.
Bevor Sie loslegen: Schema auswählen
Bevor Sie in der Query-Console von WebStorm eine Abfrage ausführen können, müssen Sie zuerst das Schema (also Ihre Datenbank, z.B. `film_collection`) auswählen. Sonst weiss MySQL nicht, in welcher Datenbank gesucht werden soll, und Sie erhalten eine Fehlermeldung.
Daten abfragen
Das SELECT-Statement ist das am häufigsten verwendete SQL-Statement. Mit
SELECT
können Daten in verschiedenen Varianten ausgegeben werden:
- alle Spalten
- bestimmte Spalten
- mit Filterbedingungen
- sortiert
Alle Spalten ausgeben
Die einfachste Abfrageform ist:
SELECT * FROM imdb_top_1000;
Die FROM-Anweisung sagt, in welcher Tabelle gesucht werden soll.
Dies gibt alle Spalten und alle Zeilen der Tabelle zurück.
Beispielauszug (die tatsächliche Tabelle hat noch mehr Spalten):
Bestimmte Spalten ausgeben
Wenn nur bestimmte Daten benötigt werden, empfiehlt es sich, die Spalten explizit anzugeben. Die Spalten werden mit Kommas (,) getrennt:
SELECT Series_Title, Released_Year, IMDB_Rating FROM imdb_top_1000;
Beispielauszug:
| Filmtitel | Jahr | Bewertung |
|---|---|---|
| The Godfather | 1972 | 9.2 |
| Interstellar | 2014 | 8.6 |
| The Green Mile | 1999 | 8.6 |
| Whiplash | 2014 | 8.5 |
Ausgabe sortieren
Mit ORDER BY können Ergebnisse sortiert werden.
-- Die Filme nach Erscheinungsjahr sortieren SELECT Series_Title, Released_Year, IMDB_Rating FROM imdb_top_1000 ORDER BY Released_Year ASC;
Mit ASC (engl. ascending = aufsteigend) oder DESC (engl. descending = absteigend) kann die Sortierung bestimmt werden.
Die besten Filme zuerst:
SELECT Series_Title, Released_Year, IMDB_Rating FROM imdb_top_1000 ORDER BY IMDB_Rating DESC;
Daten filtern (WHERE)
Nicht immer sind alle Daten interessant – mit WHERE können Bedingungen definiert werden. Während die bisher behandelten SELECT- und FROM-Anweisungen in jedem SELECT-Befehl vorkommen müssen, ist die WHERE-Anweisung optional. Wegen ihrer wichtigen Bedeutung zur Einschränkung (Restriktion) einer Tabelle auf bestimmte Zeilen kommt die WHERE-Anweisung in der Praxis trotzdem in fast allen SELECT-Befehlen vor. Die Struktur einer Abfrage mit Bedingung lautet in Worten:
- Was? (welche Spalten werden ausgewählt → z.B. SELECT Series_Title)
- Woher? (aus welcher/n Tabelle/n → z.B. FROM imdb_top_1000)
- Unter welcher/n Bedingung/en? (welche Feldwerte → z.B. WHERE IMDB_Rating > 8.5)
-- Alle Filme mit Bewertung über 8.5 SELECT Series_Title, IMDB_Rating FROM imdb_top_1000 WHERE IMDB_Rating > 8.5;
Ergebnis (Auszug):
| Filmtitel | Bewertung |
|---|---|
| The Godfather | 9.2 |
| The Green Mile | 8.6 |
| Interstellar | 8.6 |
Zahlen vs. Text in der WHERE-Klausel: Zahlenwerte (wie 8.5) schreibt man ohne Anführungszeichen. Text (sogenannte Strings) muss dagegen immer in einfachen Anführungszeichen (''' ''') stehen:
WHERE IMDB_Rating > 8.5 -- Zahl: keine Anführungszeichen WHERE Director = 'Christopher Nolan' -- Text: einfache Anführungszeichen
Vergessen Sie die Anführungszeichen bei Text, meldet MySQL einen Fehler.
Mehrere Bedingungen kombinieren (AND, OR, NOT)
AND, OR, NOT
→ verbinden mehrere Bedingungen.
Filme von Regisseuren Christopher Nolan oder Francis Ford Coppola:
SELECT Series_Title, Director FROM imdb_top_1000 WHERE Director = 'Christopher Nolan' OR Director = 'Francis Ford Coppola';
Mit AND kann man Bedingungen kombinieren, z.B.:
-- Alle Drama-Filme von Christopher Nolan SELECT Series_Title, Director, Genre FROM imdb_top_1000 WHERE Director = 'Christopher Nolan' AND Genre = 'Drama';
Mit NOT kehrt man eine Bedingung um:
-- Alle Filme, die NICHT von Christopher Nolan sind SELECT Series_Title, Director FROM imdb_top_1000 WHERE NOT Director = 'Christopher Nolan';
Zusammenfassung
SELECT– bestimmt die Spalten
FROM– bestimmt die Tabelle
WHERE– filtert die Zeilen (Text in ''' ''', Zahlen ohne)
ORDER BY
– sortiert die Ergebnisse
AND / OR / NOT
– kombiniert mehrere Bedingungen
Mit diesen Befehlen sind die wichtigsten Grundlagen für Abfragen in relationalen Datenbanken gelegt.





