SQL Basic Kurs
Von Elyndra Valen, Senior Entwicklerin bei Java Fleet Systems Consulting


🗺️ Deine Position im Kurs

TagThemaStatus
1Warum Datenbanken?✅ Abgeschlossen
2Das relationale Modell✅ Abgeschlossen
3Schlüssel & Beziehungen✅ Abgeschlossen
4Tabellen erstellen & Daten pflegen✅ Abgeschlossen
→ 5SELECT – Deine erste Abfrage👉 DU BIST HIER!
6Filtern und Sortieren🔜 Kommt als nächstes
7Gruppieren und Auswerten🔒 Noch nicht freigeschaltet
8JOINs – Tabellen verbinden🔒 Noch nicht freigeschaltet
9Subqueries und Views🔒 Noch nicht freigeschaltet
10Zusammenfassung & Projekt🔒 Noch nicht freigeschaltet

Modul: SQL Basic
Gesamt-Dauer: 10 Kurstage
Dein Ziel: Daten aus Tabellen abfragen und gezielt auswählen


📋 Voraussetzungen für diesen Tag

Du brauchst:

  • ✅ Tag 1-4 abgeschlossen
  • ✅ XAMPP läuft, phpMyAdmin ist offen
  • ✅ Die adressen-Datenbank ist importiert
  • ✅ Die versandhandel-Datenbank ist importiert

Heute wird’s praktisch! Ab jetzt tippst du in jedem Abschnitt echtes SQL.

Fragen?
Schreib uns: elyndra.valen@java-developer.online


🔄 Kurzwiederholung: Lösung der Challenge von Tag 4

Erinnerst du dich an die 5 SQL-Befehle?

1. Neuen Kunden einfügen:

INSERT INTO kunden (name, vorname, stadt, plz)
VALUES ('Neumann', 'Felix', 'Köln', '50667');

2. Neues Produkt einfügen:

INSERT INTO produkte (name, preis, lagerbestand)
VALUES ('USB-Kabel', 9.99, 200);

3. Lagerbestand um 50 erhöhen:

UPDATE produkte 
SET lagerbestand = lagerbestand + 50 
WHERE produkte_id = 3;

4. Kundenstadt ändern:

UPDATE kunden 
SET stadt = 'Frankfurt' 
WHERE kunden_id = 5;

5. Produkt löschen:

DELETE FROM produkte 
WHERE produkte_id = 10;

Wichtig: Bei UPDATE und DELETE immer WHERE nicht vergessen!


⚡ Das Wichtigste in 30 Sekunden

Heute lernst du:

  • ✅ SELECT – der wichtigste SQL-Befehl überhaupt
  • ✅ Alle Spalten oder nur bestimmte auswählen
  • ✅ Spalten umbenennen mit AS (Alias)
  • ✅ Berechnungen direkt in der Abfrage

Am Ende des Tages kannst du: Daten aus jeder Tabelle abfragen und genau die Spalten auswählen, die du brauchst.

Schwierigkeitsgrad: 🟢 Einsteiger


Hi! 👋

Heute ist DER Tag! 🎉

Die letzten vier Tage waren Vorbereitung. Ab heute arbeitest du richtig mit SQL. Und wir starten mit dem wichtigsten Befehl überhaupt: SELECT.

SELECT ist das Schweizer Taschenmesser von SQL. Du wirst ihn in 90% aller Datenbankarbeiten nutzen. Egal ob du Kundenlisten brauchst, Umsätze analysierst oder Berichte erstellst – alles beginnt mit SELECT.

Die gute Nachricht: SELECT ist logisch aufgebaut und leicht zu lernen.

Los geht’s! 🚀


🟢 GRUNDLAGEN: Der SELECT-Befehl

Die Grundstruktur

SELECT was_du_sehen_willst
FROM welche_tabelle;

Das war’s. Ernsthaft. So einfach ist die Basis.

Alles anzeigen: SELECT *

Das Sternchen * bedeutet „alle Spalten“:

SELECT * FROM person;

Probier es aus! Du bekommst alle ~600 Personen mit allen Spalten (PERSID, AGE, FIRSTNAME, LASTNAME).

Wann nutzt du *?

  • Zum schnellen Überblick: „Was ist überhaupt in dieser Tabelle?“
  • Beim Entwickeln und Testen
  • Bei kleinen Tabellen

Wann NICHT?

  • In Produktivsystemen (Performance!)
  • Wenn du nur 2 von 50 Spalten brauchst
  • In Berichten und Exporten

Bestimmte Spalten auswählen

Meist brauchst du nicht alle Spalten. Dann listest du auf, was du willst:

SELECT FIRSTNAME, LASTNAME FROM person;

Nur Vorname und Nachname – übersichtlicher!

SELECT FIRSTNAME, LASTNAME, AGE FROM person;

Jetzt auch mit Alter. Die Reihenfolge in deiner Abfrage bestimmt die Reihenfolge im Ergebnis.

Spalten umbenennen mit AS (Alias)

Die Spaltennamen in der Datenbank sind oft technisch. Für Berichte willst du schönere Namen:

SELECT 
    FIRSTNAME AS Vorname, 
    LASTNAME AS Nachname, 
    AGE AS Alter
FROM person;

Jetzt heißen die Spalten im Ergebnis „Vorname“, „Nachname“, „Alter“ statt „FIRSTNAME“, „LASTNAME“, „AGE“.

Tipp: Bei Alias-Namen mit Leerzeichen brauchst du Anführungszeichen:

SELECT FIRSTNAME AS "Vor Name" FROM person;

Aber besser: Vermeide Leerzeichen in Namen.


🟡 PROFESSIONALS: Mehr aus SELECT rausholen

Berechnungen in der Abfrage

Du kannst direkt in SELECT rechnen:

SELECT 
    name,
    preis,
    preis * 1.19 AS preis_brutto
FROM produkte;

Das zeigt den Nettopreis UND den berechneten Bruttopreis (mit 19% MwSt).

Weitere Beispiele:

-- Rabatt berechnen
SELECT name, preis, preis * 0.9 AS preis_mit_10_prozent_rabatt
FROM produkte;

-- Alter in Monaten (ungefähr)
SELECT FIRSTNAME, AGE, AGE * 12 AS alter_in_monaten
FROM person;

Texte verbinden (Konkatenation)

In MariaDB/MySQL nutzt du CONCAT():

SELECT CONCAT(FIRSTNAME, ' ', LASTNAME) AS vollstaendiger_name
FROM person;

Ergebnis: „Bruno Hoffmann“, „Roman Rabenstein“, usw.

Praktisches Beispiel – Adresszeile:

SELECT CONCAT(STREET, ', ', stadt) AS adresse
FROM adressen;

Ergebnis: „Röntgenstr. 32c, Neu Yannik“

Feste Werte und Texte hinzufügen

Du kannst auch feste Werte ins Ergebnis einbauen:

SELECT 
    FIRSTNAME,
    LASTNAME,
    'Jahre alt' AS einheit,
    AGE
FROM person;

Oder:

SELECT 
    name,
    preis,
    '€' AS waehrung
FROM produkte;

DISTINCT – Nur eindeutige Werte

Manchmal willst du wissen: „Welche verschiedenen Werte gibt es?“

SELECT DISTINCT stadt FROM adressen;

Das zeigt jede Stadt nur EINMAL – egal wie oft sie vorkommt.

Ohne DISTINCT:

Neu Yannik
Ricoscheid
Knorrstadt
Neu Yannik    <-- Duplikat!
Bad Milla
...

Mit DISTINCT:

Neu Yannik
Ricoscheid
Knorrstadt
Bad Milla
...

Praktische Anwendung: „In welchen Städten haben wir Kunden?“

SELECT DISTINCT stadt FROM kunden;

🔴 BONUS: Profi-Tipps

Kommentare im SQL

Du kannst deine Abfragen kommentieren:

-- Das ist ein einzeiliger Kommentar
SELECT FIRSTNAME, LASTNAME 
FROM person;

/* Das ist ein 
   mehrzeiliger 
   Kommentar */
SELECT * FROM adressen;

Warum Kommentare?

  • Du verstehst in 3 Monaten noch, was die Abfrage tut
  • Kollegen verstehen deinen Code
  • Du kannst Teile „auskommentieren“ zum Testen

Zeilenumbrüche und Formatierung

SQL ist es egal, wie du formatierst. Diese Abfragen sind identisch:

-- Alles in einer Zeile (unübersichtlich bei komplexen Abfragen)
SELECT FIRSTNAME, LASTNAME, AGE FROM person;

-- Schön formatiert (empfohlen)
SELECT 
    FIRSTNAME, 
    LASTNAME, 
    AGE 
FROM person;

Best Practice: Bei mehr als 2-3 Spalten → neue Zeilen nutzen.

LIMIT – Nur die ersten X Zeilen

Bei großen Tabellen willst du nicht immer alles sehen:

SELECT * FROM person LIMIT 10;

Zeigt nur die ersten 10 Zeilen. Super zum Testen!

SELECT * FROM adressen LIMIT 5;

Nur die ersten 5 Adressen.


💬 Real Talk: Die Kursplanung für Tag 5

Java Fleet Büro, Schulungsraum. Das Team plant den fünften Kurstag.


Franz-Martin: „Tag 5 – SELECT. Das ist der Durchbruch-Tag.“

Kat: „Endlich tippen sie echtes SQL. Die letzten vier Tage waren viel Theorie.“

Tom: „Ich erinnere mich noch an mein erstes SELECT. Das Gefühl, wenn plötzlich Daten auf dem Bildschirm erscheinen…“

Nova: „Honestly? Das war auch für mich der Moment, wo es klick gemacht hat. Vorher war alles abstrakt.“

Elyndra: „Genau deshalb fangen wir einfach an. SELECT *, dann gezielt Spalten, dann Alias, dann DISTINCT.“

Franz-Martin: „Berechnungen auch?“

Elyndra: „Ja, aber nur einfache. Preis mal 1.19 für Brutto. Nichts Kompliziertes.“

Kat: „CONCAT für Adresszeilen wäre praktisch. Das braucht man ständig.“

Tom: „Und LIMIT! Bei 600 Personen will keiner endlos scrollen.“

Nova: „Was ist mit WHERE? Filtern?“

Elyndra: „Das kommt morgen. Heute nur: Daten rausholen, Spalten auswählen, ein bisschen formatieren. Nicht zu viel auf einmal.“

Franz-Martin: „Also: SELECT als Schweizer Taschenmesser etablieren. Die Basis, auf der alles aufbaut.“

Elyndra: „Genau. Wer SELECT versteht, versteht SQL.“


✅ Checkpoint: Hast du es verstanden?

Bevor du weitermachst, teste dein Wissen:

Quiz:

Frage 1: Was bedeutet SELECT * FROM person;?

Frage 2: Wie fragst du nur die Spalten FIRSTNAME und AGE aus der Tabelle person ab?

Frage 3: Was macht das Schlüsselwort AS in einer SELECT-Abfrage?

Frage 4: Wie zeigst du jeden Städtenamen nur einmal an, auch wenn er mehrfach in der Tabelle vorkommt?

Frage 5: Du willst den Preis eines Produkts mit 20% Aufschlag anzeigen. Wie sieht die Berechnung in SELECT aus?


Mini-Challenge:

Aufgabe:

Arbeite mit der person– und adressen-Datenbank in phpMyAdmin:

  1. Zeige alle Personen an, aber nur Vorname und Nachname.
  2. Zeige alle Personen mit Vorname, Nachname und Alter an. Benenne die Spalten auf Deutsch um (Vorname, Nachname, Alter).
  3. Erstelle eine Abfrage, die den vollständigen Namen als EINE Spalte zeigt (Vorname + Leerzeichen + Nachname). Nenne die Spalte „Name“.
  4. Finde heraus: Wie viele verschiedene Städte gibt es in der adressen-Tabelle? (Tipp: DISTINCT + zählen)
  5. Zeige die ersten 20 Personen, sortiert nach ihrer ID.

Lösung:
Wir besprechen die Lösung am Anfang von Tag 6!


❓ Häufig gestellte Fragen

Frage 1: Ist die Groß-/Kleinschreibung bei SQL wichtig?

Nein, SELECT, select und SeLeCt sind identisch. Konvention: SQL-Schlüsselwörter GROSS, Tabellen-/Spaltennamen klein. Aber das ist nur Lesbarkeit, kein Muss.

Frage 2: Muss ich das Semikolon am Ende schreiben?

In phpMyAdmin: Meistens nicht nötig bei einzelnen Befehlen. Aber: Gewöhn es dir an! Sobald du mehrere Befehle hintereinander schreibst, MUSS das Semikolon da sein.

Frage 3: Warum SELECT * vermeiden?

Performance: Die Datenbank muss alle Spalten laden, auch wenn du nur 2 brauchst. Bei großen Tabellen mit vielen Spalten macht das einen Unterschied. Außerdem: Dein Code ist klarer, wenn du explizit sagst, was du willst.

Frage 4: Kann ich Spalten mehrfach auswählen?

Ja! SELECT name, name, name FROM produkte; zeigt die Spalte dreimal. Sinnlos, aber möglich.

Frage 5: Was passiert, wenn ich eine Spalte abfrage, die nicht existiert?

Fehlermeldung: „Unknown column ‚xyz‘ in ‚field list'“. Die Datenbank sagt dir genau, welche Spalte sie nicht kennt.

Frage 6: Kann ich Spalten aus verschiedenen Tabellen mischen?

Ja, aber dafür brauchst du JOIN – kommt an Tag 8. Heute bleiben wir bei einer Tabelle pro Abfrage.

Frage 7: Nova sagte, SELECT war ihr „Klick-Moment“. Was meint sie damit?

Real talk: Für viele ist SELECT der Moment, wo Datenbanken aufhören, abstrakt zu sein. Du tippst was ein, drückst Enter, und BOOM – Daten erscheinen. Das ist der Unterschied zwischen „ich lerne Theorie“ und „ich arbeite mit echten Daten“. Dieser Moment ist wichtig. Genieß ihn!


📚 Quiz-Lösungen

Hier sind die Antworten zum Quiz von oben:


Frage 1: Was bedeutet SELECT * FROM person;?

Antwort:

Zeige alle Spalten (*) aus der Tabelle person an. Das Ergebnis enthält PERSID, AGE, FIRSTNAME und LASTNAME für alle Zeilen.


Frage 2: Wie fragst du nur die Spalten FIRSTNAME und AGE aus der Tabelle person ab?

Antwort:

SELECT FIRSTNAME, AGE FROM person;

Einfach die gewünschten Spalten mit Komma getrennt auflisten.


Frage 3: Was macht das Schlüsselwort AS in einer SELECT-Abfrage?

Antwort:

AS erstellt einen Alias (Alternativnamen) für eine Spalte. Der Alias erscheint als Spaltenüberschrift im Ergebnis.

Beispiel: SELECT FIRSTNAME AS Vorname zeigt die Spalte mit der Überschrift „Vorname“ statt „FIRSTNAME“.


Frage 4: Wie zeigst du jeden Städtenamen nur einmal an?

Antwort:

SELECT DISTINCT stadt FROM adressen;

DISTINCT entfernt Duplikate aus dem Ergebnis.


Frage 5: Preis mit 20% Aufschlag anzeigen?

Antwort:

SELECT name, preis, preis * 1.20 AS preis_mit_aufschlag
FROM produkte;

Oder alternativ: preis + (preis * 0.20)


🎉 Tag 5 geschafft!

Herzlichen Glückwunsch! Du hast deinen ersten echten SQL-Befehl gemeistert! 🚀

Das hast du heute gelernt:

  • ✅ SELECT * für alle Spalten
  • ✅ Gezielte Spaltenauswahl
  • ✅ Alias mit AS für schönere Namen
  • ✅ Berechnungen direkt in der Abfrage
  • ✅ CONCAT für Textverbindungen
  • ✅ DISTINCT für eindeutige Werte
  • ✅ LIMIT für begrenzte Ergebnisse

Du kannst jetzt: Daten aus jeder Tabelle holen und genau die Spalten auswählen, die du brauchst – mit schönen Namen und Berechnungen!

Das ist die Basis für ALLES, was noch kommt. Ab morgen lernst du, die Daten zu filtern und zu sortieren. 💪


Wie geht’s weiter?

Morgen (Tag 6): Filtern und Sortieren

Was dich erwartet:

  • WHERE – nur bestimmte Zeilen anzeigen
  • Vergleichsoperatoren (=, <, >, !=, LIKE)
  • ORDER BY – Ergebnisse sortieren
  • AND, OR, NOT – Bedingungen kombinieren

Brauchst du eine Pause?
Mach sie! Aber vorher: Spiel noch ein bisschen mit SELECT. Probiere verschiedene Spalten, verschiedene Tabellen. Je mehr du tippst, desto natürlicher wird es.


🛠️ Troubleshooting

Problem: „Unknown column ‚xyz‘ in ‚field list'“

Lösung: Tippfehler im Spaltennamen. Prüfe die genaue Schreibweise. In phpMyAdmin kannst du links die Tabellenstruktur sehen.

Problem: „Table ‚xyz‘ doesn’t exist“

Lösung: Falsche Datenbank ausgewählt? Oben links in phpMyAdmin steht die aktive Datenbank. Klicke auf die richtige.

Problem: Ergebnis ist leer, obwohl Daten da sein sollten.

Lösung: Heute noch kein Problem (wir filtern noch nicht). Aber prüfe: Richtige Tabelle? Richtige Datenbank?


📖 Im Buch nachlesen

Mehr Details zu den heutigen Themen findest du in:

Kapitel 4: Einfache Datenauswahl

  • 4.1 Der SELECT-Befehl
  • 4.2 Spalten auswählen
  • 4.3 Spalten-Aliase
  • 4.4 Berechnete Spalten
  • 4.5 DISTINCT

SQL Ressourcen & Weiterführende Links

Elyndra’s Schatzkiste – Alles, was du für deinen SQL-Lernweg brauchst


🎮 Interaktive Übungsplattformen

Übung macht den Meister. Diese Plattformen lassen dich SQL direkt im Browser ausprobieren – ohne Installation, ohne Risiko.

SQLBolt – Der Klassiker für Einsteiger

🔗 sqlbolt.com

  • Interaktive Lektionen mit sofortigem Feedback
  • Perfekt strukturiert: SELECT → JOINs → Subqueries
  • Keine Registrierung nötig
  • Empfohlen für: Tag 5-8 unseres Kurses

SQLZoo – Echte Daten, echte Herausforderungen

🔗 sqlzoo.net

  • Seit über 20 Jahren der Goldstandard
  • Übungen mit echten Datensätzen (Nobel-Preise, Fußball-WM, etc.)
  • Progressiv schwieriger werdende Aufgaben
  • Empfohlen für: Tag 9-10 und danach

W3Schools SQL Tutorial

🔗 w3schools.com/sql

  • „Try it Yourself“ Editor bei jedem Beispiel
  • Komplette Referenz aller SQL-Befehle
  • Gut zum Nachschlagen
  • Empfohlen für: Schnelles Nachschlagen während des Kurses

SQL Easy – Minimalistisch & Effektiv

🔗 sql-easy.com

  • Reduziert auf das Wesentliche
  • Sofort loslegen ohne Ablenkung
  • Über 200.000 Lernende seit 2017
  • Empfohlen für: Schnelle Wiederholung

Learn SQL Online

🔗 learnsqlonline.org

  • Komplett kostenlos
  • Interaktive Code-Beispiele
  • Community-getrieben
  • Empfohlen für: Zusätzliche Übungen

📚 Offizielle Dokumentation

Wenn du es genau wissen willst, führt kein Weg an der offiziellen Doku vorbei.

MariaDB Knowledge Base (Deutsch)

🔗 mariadb.com/kb/de/mariadb

  • Offizielle Dokumentation auf Deutsch
  • Alle Befehle, Datentypen, Konfigurationen
  • Das Nachschlagewerk für unseren Kurs

MariaDB.org Documentation

🔗 mariadb.org/documentation

  • Hauptdokumentation der MariaDB Foundation
  • PDF-Download verfügbar
  • Release Notes für alle Versionen
  • Kostenlose Video-Kurse zu fortgeschrittenen Themen

MySQL Referenz

🔗 dev.mysql.com/doc

  • Gilt zu 95% auch für MariaDB
  • Sehr detailliert und umfangreich
  • Englisch, aber sehr präzise

🛠️ Setup & Installation

Alles, was du brauchst, um SQL auf deinem Rechner zum Laufen zu bringen.

XAMPP – Das Rundum-Sorglos-Paket

🔗 apachefriends.org/de

  • Apache + MariaDB + PHP in einem Paket
  • Windows, Mac, Linux
  • Unsere Empfehlung für den Kurs!
  • Ein Klick → Datenbank läuft

MariaDB Standalone

🔗 mariadb.com/get-started-with-mariadb

  • Offizielle Installationsanleitung
  • Für alle Betriebssysteme
  • Docker-Variante verfügbar

HeidiSQL – Der komfortable Client

🔗 heidisql.com

  • Kostenloser SQL-Client für Windows
  • Grafische Oberfläche statt Kommandozeile
  • Perfekt für Einsteiger
  • Export/Import von Daten

DBeaver – Der Alleskönner

🔗 dbeaver.io

  • Universeller Datenbank-Client
  • Windows, Mac, Linux
  • Unterstützt MySQL, MariaDB, PostgreSQL, Oracle, …
  • Community Edition kostenlos

🇩🇪 Tutorials auf Deutsch

Nicht jeder mag englische Tutorials. Hier die besten deutschen Ressourcen.

IONOS Digital Guide

🔗 ionos.de – MySQL/MariaDB installieren

  • Schritt-für-Schritt Installationsanleitung
  • Screenshots für jeden Schritt
  • Linux, Windows, Mac abgedeckt

Guru99 MariaDB Tutorial

🔗 guru99.com/de/mariadb-tutorial-install.html

  • Übersetztes Tutorial
  • Viele Screenshots
  • Grundlagen gut erklärt

GeeksforGeeks SQL Tutorial

🔗 geeksforgeeks.org/sql-tutorial

  • Sehr umfangreich
  • Von Basics bis Advanced
  • Viele Code-Beispiele

🎬 Video-Kurse (kostenlos)

Manchmal ist Zuschauen einfacher als Lesen.

freeCodeCamp – SQL Full Course

🔗 YouTube: 4-Stunden-Kurs

  • Kompletter SQL-Kurs in einem Video
  • 4+ Stunden Inhalt
  • Sehr beliebt (Millionen Views)
  • Englisch mit guter Aussprache

Bro Code – SQL Playlist

🔗 YouTube Playlist

Gut für Pausen zwischendurch

Viral gegangen 2024

Kurze, knackige Videos

Schritt für Schritt


💬 Feedback?

Hat SELECT bei dir auch „klick“ gemacht?
Schreib uns: elyndra.valen@java-developer.online


Bis morgen – dann filtern wir! 👋

Elyndra


SQL Basic – Tag 5 von 10
© Java Fleet Systems Consulting
www.java-developer.online

Autor

  • Elyndra Valen

    28 Jahre alt, wurde kürzlich zur Senior Entwicklerin befördert nach 4 Jahren intensiver Java-Entwicklung. Elyndra kennt die wichtigsten Frameworks und Patterns, beginnt aber gerade erst, die tieferen Zusammenhänge und Architektur-Entscheidungen zu verstehen. Sie ist die Brücke zwischen Junior- und Senior-Welt im Team.