1. Was ist SELECT?
Mit dem SQL-Befehl SELECT können Daten aus einer Datenbank abgefragt werden. Dabei lassen sich bestimmte Spalten, Zeilen oder Werte auswählen.
SELECT verändert die gespeicherten Daten nicht. Der Befehl dient ausschließlich zur Abfrage.
Unsere Beispieltabelle: kunden
| kunden_id | name | stadt | alter |
|---|---|---|---|
| 1 | Anna Müller | Berlin | 28 |
| 2 | Max Schmidt | Leipzig | 35 |
| 3 | Lisa Weber | Dresden | 24 |
| 4 | Peter Fischer | Hamburg | 42 |
| 5 | Laura Becker | Leipzig | 29 |
| 6 | Thomas Wolf | Berlin | 38 |
Alle folgenden Beispiele beziehen sich auf diese Beispieldaten.
2. SELECT * – Alle Spalten auswählen
Das Sternchen (*) steht für alle Spalten einer Tabelle.
SQL-Code
SELECT *
FROM kunden;
Ergebnis
Alle sechs Kunden werden mit sämtlichen Spalten angezeigt.
3. Bestimmte Spalten auswählen
Es müssen nicht immer alle Spalten abgefragt werden. Mehrere Spaltennamen werden durch Kommas getrennt.
SQL-Code
SELECT name, stadt
FROM kunden;
Ergebnis
| name | stadt |
|---|---|
| Anna Müller | Berlin |
| Max Schmidt | Leipzig |
| Lisa Weber | Dresden |
| Peter Fischer | Hamburg |
| Laura Becker | Leipzig |
| Thomas Wolf | Berlin |
4. WHERE – Datensätze filtern
Mit WHERE können bestimmte Bedingungen festgelegt werden. Nur Datensätze, die diese Bedingungen erfüllen, werden angezeigt.
SQL-Code
SELECT *
FROM kunden
WHERE stadt = 'Leipzig';
Ergebnis
| kunden_id | name | stadt | alter |
|---|---|---|---|
| 2 | Max Schmidt | Leipzig | 35 |
| 5 | Laura Becker | Leipzig | 29 |
5. Vergleichsoperatoren
Mit Vergleichsoperatoren können Zahlen und andere Werte verglichen werden.
| Operator | Bedeutung |
|---|---|
| = | Gleich |
| > | Größer als |
| < | Kleiner als |
| >= | Größer oder gleich |
| <= | Kleiner oder gleich |
| <> | Ungleich |
Beispiel: Kunden über 30 Jahre
SELECT name, alter
FROM kunden
WHERE alter > 30;
Ergebnis
| name | alter |
|---|---|
| Max Schmidt | 35 |
| Peter Fischer | 42 |
| Thomas Wolf | 38 |
6. AND – Mehrere Bedingungen
Mit AND werden mehrere Bedingungen verbunden. Alle Bedingungen müssen erfüllt sein.
SQL-Code
SELECT *
FROM kunden
WHERE stadt = 'Leipzig'
AND alter > 30;
Ergebnis
| name | stadt | alter |
|---|---|---|
| Max Schmidt | Leipzig | 35 |
7. OR – Alternative Bedingungen
Bei OR muss mindestens eine der Bedingungen erfüllt sein.
SQL-Code
SELECT name, stadt
FROM kunden
WHERE stadt = 'Berlin'
OR stadt = 'Dresden';
Ergebnis
| name | stadt |
|---|---|
| Anna Müller | Berlin |
| Lisa Weber | Dresden |
| Thomas Wolf | Berlin |
8. NOT – Bedingungen ausschließen
Mit NOT wird eine Bedingung verneint.
SQL-Code
SELECT name, stadt
FROM kunden
WHERE NOT stadt = 'Berlin';
Es werden alle Kunden angezeigt, die nicht aus Berlin kommen.
9. LIKE – Nach Textmustern suchen
LIKE wird verwendet, um Texte nach bestimmten Mustern zu durchsuchen.
Das Prozentzeichen (%) steht für beliebig viele Zeichen. Der Unterstrich (_) steht für genau ein Zeichen.
Beispiel: Namen mit A
SELECT *
FROM kunden
WHERE name LIKE 'A%';
Ergebnis
| name |
|---|
| Anna Müller |
Weitere Beispiele
-- Beginnt mit A
WHERE name LIKE 'A%';
-- Endet mit r
WHERE name LIKE '%r';
-- Enthält "Sch"
WHERE name LIKE '%Sch%';
-- Genau ein Zeichen zwischen M und x
WHERE name LIKE 'M_x%';
Ob Groß- und Kleinschreibung unterschieden wird, hängt von der verwendeten Datenbank-Kollation ab.
10. BETWEEN – Wertebereich
BETWEEN überprüft, ob ein Wert innerhalb eines bestimmten Bereichs liegt. Die angegebenen Grenzwerte sind eingeschlossen.
SQL-Code
SELECT name, alter
FROM kunden
WHERE alter BETWEEN 25 AND 35;
Ergebnis
| name | alter |
|---|---|
| Anna Müller | 28 |
| Max Schmidt | 35 |
| Laura Becker | 29 |
11. IN – Mehrere Werte vergleichen
Mit IN kann überprüft werden, ob ein Wert in einer Liste von möglichen Werten enthalten ist.
SQL-Code
SELECT name, stadt
FROM kunden
WHERE stadt IN ('Berlin', 'Leipzig');
Ergebnis
| name | stadt |
|---|---|
| Anna Müller | Berlin |
| Max Schmidt | Leipzig |
| Laura Becker | Leipzig |
| Thomas Wolf | Berlin |
12. ORDER BY – Ergebnisse sortieren
Mit ORDER BY werden Abfrageergebnisse nach einer oder mehreren Spalten sortiert.
ASC bedeutet aufsteigend. DESC bedeutet absteigend.
Aufsteigende Sortierung
SELECT name, alter
FROM kunden
ORDER BY alter ASC;
Absteigende Sortierung
SELECT name, alter
FROM kunden
ORDER BY alter DESC;
Ergebnis: DESC
| name | alter |
|---|---|
| Peter Fischer | 42 |
| Thomas Wolf | 38 |
| Max Schmidt | 35 |
| Laura Becker | 29 |
| Anna Müller | 28 |
| Lisa Weber | 24 |
13. DISTINCT – Doppelte Werte entfernen
DISTINCT entfernt doppelte Werte aus dem Abfrageergebnis.
SQL-Code
SELECT DISTINCT stadt
FROM kunden;
Beispielergebnis
| stadt |
|---|
| Berlin |
| Leipzig |
| Dresden |
| Hamburg |
Jede Stadt erscheint nur einmal. Die Reihenfolge ist ohne ORDER BY nicht garantiert.
14. LIMIT – Anzahl der Ergebnisse begrenzen
Mit LIMIT wird festgelegt, wie viele Datensätze maximal zurückgegeben werden.
SQL-Code
SELECT *
FROM kunden
ORDER BY kunden_id
LIMIT 3;
Ergebnis
| kunden_id | name |
|---|---|
| 1 | Anna Müller |
| 2 | Max Schmidt |
| 3 | Lisa Weber |
LIMIT wird häufig zusammen mit ORDER BY verwendet, damit eindeutig festgelegt ist, welche Datensätze angezeigt werden.
15. IS NULL – Fehlende Werte finden
NULL bedeutet, dass kein Wert gespeichert ist. NULL wird mit IS NULL oder IS NOT NULL überprüft.
SQL-Code
SELECT *
FROM kunden
WHERE alter IS NULL;
Weitere Möglichkeit
SELECT *
FROM kunden
WHERE alter IS NOT NULL;
16. AS – Spalten umbenennen
Mit AS kann einer Spalte im Abfrageergebnis ein anderer Name gegeben werden.
SQL-Code
SELECT name AS Kundenname,
stadt AS Wohnort
FROM kunden;
Beispielergebnis
| Kundenname | Wohnort |
|---|---|
| Anna Müller | Berlin |
| Max Schmidt | Leipzig |
AS verändert nicht die ursprünglichen Spaltennamen in der Datenbank.
17. Mehrere SQL-Befehle kombinieren
In einer SQL-Abfrage können mehrere Befehle kombiniert werden.
Beispiel
SELECT name, stadt, alter
FROM kunden
WHERE alter >= 25
AND stadt IN ('Berlin', 'Leipzig')
ORDER BY alter DESC
LIMIT 3;
Ergebnis
| name | stadt | alter |
|---|---|---|
| Thomas Wolf | Berlin | 38 |
| Max Schmidt | Leipzig | 35 |
| Laura Becker | Leipzig | 29 |
Reihenfolge der SQL-Klauseln
SELECT spalten
FROM tabelle
WHERE bedingung
ORDER BY spalte
LIMIT anzahl;
18. Praktische Übungen
Versuchen Sie, die folgenden Aufgaben selbstständig zu lösen. Die Lösungen können aufgeklappt werden.
Aufgabe 1
Zeigen Sie alle Kunden aus Berlin an.
Lösung anzeigen
SELECT *
FROM kunden
WHERE stadt = 'Berlin';
Aufgabe 2
Zeigen Sie alle Kunden, die älter als 30 Jahre sind.
Lösung anzeigen
SELECT *
FROM kunden
WHERE alter > 30;
Aufgabe 3
Sortieren Sie alle Kunden nach ihrem Alter absteigend.
Lösung anzeigen
SELECT *
FROM kunden
ORDER BY alter DESC;
Aufgabe 4
Zeigen Sie die drei jüngsten Kunden an.
Lösung anzeigen
SELECT *
FROM kunden
ORDER BY alter ASC
LIMIT 3;
Aufgabe 5
Zeigen Sie alle Kunden aus Berlin oder Leipzig, die mindestens 30 Jahre alt sind.
Lösung anzeigen
SELECT *
FROM kunden
WHERE stadt IN ('Berlin', 'Leipzig')
AND alter >= 30;
19. Zusammenfassung
Mit SELECT können Daten aus Tabellen abgefragt werden. WHERE filtert Datensätze, ORDER BY sortiert Ergebnisse und LIMIT begrenzt ihre Anzahl. AND, OR, NOT, LIKE, BETWEEN und IN ermöglichen zusätzliche Bedingungen. DISTINCT entfernt doppelte Ergebniswerte.