Begriff
SQL
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
SQL (gesprochen "Es-Kju-El" oder "Sequel") ist die Sprache, mit der man mit Datenbanken redet. Stell dir die Datenbank als riesiges Archiv vor. Der Archivar versteht nur SQL. Du sagst: "Gib mir alle Kunden aus Berlin!" (auf SQL). Der Archivar flitzt los und bringt dir die Liste.
Du kannst damit:
- Create (Daten anlegen)
- Read (Daten lesen)
- Update (Daten ändern)
- Delete (Daten löschen) Das nennt man CRUD.
Merksatz: Die Standardsprache zum Verwalten und Abfragen von relationalen Datenbanken.
Die Grammatik ist fast wie Englisch.
Beispiel: Wir haben eine Tabelle users.
Alles lesen:
SELECT * FROM users;("Wähle alles von Benutzern")Filtern:
SELECT name FROM users WHERE age > 18;("Wähle den Namen von Benutzern, wo das Alter größer als 18 ist")Neuen User anlegen:
INSERT INTO users (name, age) VALUES ('Max', 25);
Das lernst du oft schon am ersten Tag im Informatik-Studium oder in der Ausbildung.
Praxisroutine
In der Praxis lernst du SQL, indem du mit einem kleinen, kontrollierten Beispiel beginnst. Baue zuerst einen Minimalfall, prüfe das Ergebnis, veraendere genau eine Sache und beobachte, was sich ändert. Notiere dir Eingabe, Aktion, Ausgabe und typischen Fehler.
Übung: Erstelle ein Beispiel aus deinem Alltag, fuehre den Ablauf gedanklich Schritt für Schritt durch und markiere die Stelle, an der du Feedback oder ein Log brauchst. Wenn du diese Stelle benennen kannst, verstehst du den Begriff praktisch.
1. Joins (Die Superkraft)
SQL kann Daten aus verschiedenen Tabellen verknüpfen.
Tabelle A: Kunden. Tabelle B: Bestellungen.
SELECT * FROM kunden INNER JOIN bestellungen ON kunden.id = bestellungen.kunden_id;
Das klebt die passende Bestellung an den passenden Kunden. NoSQL-Datenbanken tun sich damit oft schwer.
2. SQL Injection (Die Gefahr)
Wenn Programmierer schlampig sind, nehmen sie Eingaben von Nutzern direkt in den SQL-Befehl auf.
Hacker geben dann im Login-Feld ein: ' OR '1'='1.
Der Befehl wird zu: SELECT * FROM users WHERE password = '' OR '1'='1';
Da 1 immer 1 ist, ist die Bedingung WAHR. Der Hacker ist eingeloggt, ohne Passwort.
Schutz: Prepared Statements.
1. Das ACID-Prinzip (Transaktionen)
Warum vertrauen Banken auf SQL? Wegen ACID:
- Atomicity (Atomarität): Ganz oder gar nicht. Wenn Geld von Konto A abgebucht, aber bei Konto B nicht gutgeschrieben werden kann (Serverabsturz), wird alles rückgängig gemacht.
- Consistency (Konsistenz): Die Datenbank bleibt immer in einem gültigen Zustand (Regeln wie "Kontosatnd darf nicht negativ sein" werden erzwungen).
- Isolation (Isolation): Wenn zwei Leute gleichzeitig Geld überweisen, stören sie sich nicht gegenseitig.
- Durability (Dauerhaftigkeit): Einmal gespeichert (Commit), sind die Daten sicher, selbst wenn danach der Strom ausfällt.
2. Execution Plans (Der "Explain" Befehl)
SQL ist deklarativ: Du sagst dem Server, was du willst. Der Server muss entscheiden, wie er es holt.
Dazu nutzt er einen Query Optimizer. Mit dem Befehl EXPLAIN SELECT ... kannst du dem Server bei der Arbeit zuschauen.
Er berechnet: "Soll ich erst sortieren oder erst filtern? Nutze ich den Index oder muss ich die ganze Tabelle lesen (Full Table Scan)?" Ein guter Entwickler schaut ständig auf diese Pläne, um langsame Queries zu finden, bevor sie das System im Betrieb lahmlegen.
3. Window Functions & CTEs
Moderne SQL-Anwendungen verlassen einfache SELECTs.
- CTEs (Common Table Expressions): Mit
WITHkannst du temporäre Ergebnistabellen bauen, was den Code viel lesbarer macht als verschachtelte Subqueries. - Window Functions: Funktionen wie
RANK()oderOVER(). Sie erlauben Berechnungen über eine Gruppe von Zeilen hinweg (z. B. "Zeige mir den Umsatz jedes Verkäufers im Vergleich zum Durchschnitt seiner Abteilung"), ohne dass man die Daten mühsam in der App-Logik zusammenrechnen muss. Das spart massiv Rechenleistung im Backend.
Quick-Check
Ist SQL eine Programmiersprache?
Jain. Es ist eine "deklarative" Sprache. Du sagst was du willst ("Gib mir die Daten"), nicht wie der Computer es machen soll (Schleifen, Variablen). Es ist Turing-vollständig, aber man schreibt damit keine Apps.Was bedeutet "Relational"?
Dass Daten in Beziehung zueinander stehen. "Kunde A gehört zu Bestellung B". Diese Beziehungen werden durch Tabellen und Schlüssel (IDs) abgebildet.Warum ist SQL Injection so gefährlich?
Weil ein Hacker damit die komplette Datenbank stehlen oder löschen kann ("DROP TABLE users"). Es ist immer noch eine der häufigsten Sicherheitslücken im Web.