Deine erste Abfrage
Schreibe deine erste SQL-Abfrage und lerne die Grundstruktur von SELECT-Anweisungen. Mit praktischen Beispielen aus unserer Shop-Datenbank.
Jetzt wird es spannend - du schreibst deine allererste SQL-Abfrage! In den letzten Tutorials hast du gelernt, was SQL ist und deine Umgebung eingerichtet. Jetzt fragen wir endlich Daten ab.
Deine erste Abfrage
Oeffne deine SQL-Umgebung (SQLite, PostgreSQL oder ein GUI-Tool) und stelle sicher, dass du die Uebungsdatenbank aus dem Setup-Tutorial geladen hast.
Tippe jetzt folgende Abfrage ein:
SELECT * FROM kunden;
Das Ergebnis sollte so aussehen:
id | name | email | stadt | registriert_am
---+---------------+--------------------+----------+---------------
1 | Anna Schmidt | anna@example.com | Berlin | 2026-03-10
2 | Max Mueller | max@example.com | Hamburg | 2026-03-10
3 | Lisa Weber | lisa@example.com | Muenchen | 2026-03-10
4 | Tom Becker | tom@example.com | Berlin | 2026-03-10
5 | Sarah Klein | sarah@example.com | Koeln | 2026-03-10
Herzlichen Glueckwunsch! Du hast gerade deine erste SQL-Abfrage geschrieben.
Die Grundstruktur verstehen
Jede SELECT-Abfrage hat mindestens zwei Teile:
SELECT was_du_sehen_willst
FROM welche_tabelle;
- SELECT sagt der Datenbank, welche Spalten du sehen willst
- FROM sagt der Datenbank, aus welcher Tabelle die Daten kommen
Das Sternchen (*)
Das * bedeutet “alle Spalten”. Es ist praktisch zum Erkunden, aber in der Praxis solltest du besser die Spalten angeben, die du wirklich brauchst:
-- Alle Spalten (zum Erkunden ok)
SELECT * FROM produkte;
-- Besser: Nur die Spalten, die du brauchst
SELECT name, preis FROM produkte;
Bestimmte Spalten auswaehlen
Meistens brauchst du nicht alle Spalten. Gib einfach die gewuenschten Spalten an, getrennt durch Kommas:
-- Nur Name und Stadt der Kunden
SELECT name, stadt
FROM kunden;
Ergebnis:
name | stadt
--------------+---------
Anna Schmidt | Berlin
Max Mueller | Hamburg
Lisa Weber | Muenchen
Tom Becker | Berlin
Sarah Klein | Koeln
-- Produkte mit Name, Preis und Kategorie
SELECT name, preis, kategorie
FROM produkte;
Ergebnis:
name | preis | kategorie
---------------+--------+------------
T-Shirt Basic | 19.99 | Kleidung
Jeans Classic | 49.99 | Kleidung
Sneaker Sport | 79.99 | Schuhe
Rucksack Urban | 39.99 | Accessoires
Muetze Winter | 14.99 | Accessoires
Jacke Outdoor | 129.99 | Kleidung
Spalten umbenennen mit AS
Manchmal moechtest du den Spalten im Ergebnis andere Namen geben. Dafuer nutzt du AS (Alias):
SELECT
name AS kundenname,
email AS kontakt,
stadt AS wohnort
FROM kunden;
Ergebnis:
kundenname | kontakt | wohnort
--------------+--------------------+---------
Anna Schmidt | anna@example.com | Berlin
Max Mueller | max@example.com | Hamburg
Lisa Weber | lisa@example.com | Muenchen
Aliase sind besonders nuetzlich, wenn du Berechnungen machst:
SELECT
name,
preis AS originalpreis,
preis * 0.9 AS reduzierter_preis
FROM produkte;
Ergebnis:
name | originalpreis | reduzierter_preis
---------------+--------------+------------------
T-Shirt Basic | 19.99 | 17.99
Jeans Classic | 49.99 | 44.99
Sneaker Sport | 79.99 | 71.99
Berechnungen in Abfragen
SQL kann direkt rechnen! Du kannst mathematische Ausdruecke in der SELECT-Klausel verwenden:
-- Preis mit Mehrwertsteuer berechnen
SELECT
name,
preis AS netto,
preis * 1.19 AS brutto
FROM produkte;
-- Lagerbestand als Wert berechnen
SELECT
name,
preis,
lagerbestand,
preis * lagerbestand AS lagerwert
FROM produkte;
Ergebnis:
name | preis | lagerbestand | lagerwert
---------------+--------+--------------+----------
T-Shirt Basic | 19.99 | 100 | 1999.00
Jeans Classic | 49.99 | 50 | 2499.50
Sneaker Sport | 79.99 | 30 | 2399.70
Rucksack Urban | 39.99 | 25 | 999.75
Muetze Winter | 14.99 | 75 | 1124.25
Jacke Outdoor | 129.99 | 20 | 2599.80
Texte verbinden (Konkatenation)
Du kannst Textspalten zusammenfuegen. Die Syntax unterscheidet sich leicht:
-- PostgreSQL: || Operator
SELECT name || ' kostet ' || preis || ' Euro' AS info
FROM produkte;
-- SQLite: || Operator (gleich wie PostgreSQL)
SELECT name || ' kostet ' || preis || ' Euro' AS info
FROM produkte;
Ergebnis:
info
-----------------------------
T-Shirt Basic kostet 19.99 Euro
Jeans Classic kostet 49.99 Euro
Sneaker Sport kostet 79.99 Euro
Kommentare in SQL
Kommentare helfen dir, deinen Code zu dokumentieren:
-- Das ist ein einzeiliger Kommentar
/* Das ist ein
mehrzeiliger
Kommentar */
SELECT name, preis -- Kommentar am Ende einer Zeile
FROM produkte;
Haeufige Anfaengerfehler
1. Semikolon vergessen
-- Falsch (fehlendes Semikolon):
SELECT * FROM kunden
-- Richtig:
SELECT * FROM kunden;
Das Semikolon beendet eine SQL-Anweisung. Manche Tools verzeihen das Fehlen, aber gewoehn dir an, es immer zu setzen.
2. Tabellenname falsch geschrieben
-- Falsch:
SELECT * FROM kunde;
-- Richtig:
SELECT * FROM kunden;
3. Komma vergessen zwischen Spalten
-- Falsch:
SELECT name preis FROM produkte;
-- Richtig:
SELECT name, preis FROM produkte;
Was kommt als Naechstes?
Im naechsten Tutorial lernst du SELECT im Detail kennen - mit allen Moeglichkeiten, die dir diese maechtige Anweisung bietet.
Zusammenfassung
- SELECT … FROM ist die Grundstruktur jeder Abfrage
*waehlt alle Spalten, besser ist es einzelne Spalten anzugeben- AS gibt Spalten im Ergebnis einen neuen Namen (Alias)
- Du kannst direkt in SQL rechnen (z.B.
preis * 1.19) - Kommentare beginnen mit
--oder stehen in/* */ - Jede Anweisung endet mit einem Semikolon
Uebungen
- Grundabfrage: Schreibe eine Abfrage, die alle Bestellungen anzeigt.
- Spaltenauswahl: Zeige nur den Namen und den Lagerbestand aller Produkte.
- Berechnungen: Zeige alle Produkte mit ihrem Preis und einem rabattierten Preis (20% Rabatt). Nutze Aliase.
- Kreativ: Erstelle eine Abfrage, die fuer jedes Produkt einen Satz ausgibt wie: “Das Produkt [Name] kostet [Preis] Euro.”
-- Loesung zu Uebung 1:
SELECT * FROM bestellungen;
-- Loesung zu Uebung 2:
SELECT name, lagerbestand FROM produkte;
-- Loesung zu Uebung 3:
SELECT
name,
preis AS originalpreis,
preis * 0.8 AS rabattpreis
FROM produkte;
Pro-Tipp: Gewoehn dir von Anfang an an, SQL-Abfragen uebersichtlich zu formatieren. Schreibe jede Klausel (SELECT, FROM, WHERE) in eine neue Zeile und ruecke Spalten ein. Das macht deinen Code viel lesbarer, besonders bei komplexeren Abfragen.