SQL – SELECT und Datenabfragen

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.

Merken: SELECT bestimmt die Spalten. FROM bestimmt die Tabelle.

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üllerBerlin
Max SchmidtLeipzig
Lisa WeberDresden
Peter FischerHamburg
Laura BeckerLeipzig
Thomas WolfBerlin

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
2Max Schmidt Leipzig35
5Laura Becker Leipzig29

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

namealter
Max Schmidt35
Peter Fischer42
Thomas Wolf38

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

namestadtalter
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

namestadt
Anna MüllerBerlin
Lisa WeberDresden
Thomas WolfBerlin

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

namealter
Anna Müller28
Max Schmidt35
Laura Becker29

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

namestadt
Anna MüllerBerlin
Max SchmidtLeipzig
Laura BeckerLeipzig
Thomas WolfBerlin

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

namealter
Peter Fischer42
Thomas Wolf38
Max Schmidt35
Laura Becker29
Anna Müller28
Lisa Weber24

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_idname
1Anna Müller
2Max Schmidt
3Lisa 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;
Wichtig: Für NULL verwendet man nicht = NULL, sondern IS 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

KundennameWohnort
Anna MüllerBerlin
Max SchmidtLeipzig

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.