SQL Schulung Grundlagen
-
Was verstehen wir unter dem relationalen Modell in der SQL Schulung?
In der SQL Schulung beschreiben Tabellen (Relationen) fachliche Objekte als Zeilen (Tupel) mit Spalten (Attribute). Beziehungen zwischen Tabellen werden über Schlüssel hergestellt. Ziel ist eine klare, widerspruchsfreie Datenbasis, auf der Abfragen reproduzierbare Ergebnisse liefern.
Beispielcode aus der SQL Schulung:
-- Beispieltabellen in der SQL Schulung CREATE TABLE teilnehmer ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL ); CREATE TABLE buchung ( id SERIAL PRIMARY KEY, teilnehmer_id INT NOT NULL REFERENCES teilnehmer(id), kurs TEXT NOT NULL, datum DATE NOT NULL );
-
Wie definieren wir Tabellen, Zeilen und Spalten in der SQL Schulung?
Tabellen sind strukturierte Sammlungen gleichartiger Zeilen. Jede Zeile enthält Werte je Spalte. In der SQL Schulung legen wir Spaltentypen so fest, dass sie den realen Daten entsprechen (z. B. DATE für Termine).
Beispielcode aus der SQL Schulung:
CREATE TABLE kurs ( id SERIAL PRIMARY KEY, titel TEXT NOT NULL, tage INT NOT NULL );
-
Welche Rolle hat der Primärschlüssel in der SQL Schulung?
Ein Primärschlüssel identifiziert eine Zeile eindeutig. In der SQL Schulung setzen wir surrogatbasierte Schlüssel (SERIAL/IDENTITY) oder natürliche Schlüssel ein — je nach Domäne und Stabilität.
Beispielcode aus der SQL Schulung:
CREATE TABLE raum ( raum_nr TEXT PRIMARY KEY, plaetze INT NOT NULL );
-
Wie sichern wir Beziehungen per Fremdschlüssel in der SQL Schulung?
Fremdschlüssel stellen referenzielle Integrität her. In der SQL Schulung verhindern wir so verwaiste Datensätze und definieren bewusst das Verhalten bei Lösch- und Update-Operationen (ON DELETE/UPDATE).
Beispielcode aus der SQL Schulung:
CREATE TABLE teilnahme ( id SERIAL PRIMARY KEY, teilnehmer_id INT NOT NULL REFERENCES teilnehmer(id) ON DELETE CASCADE, kurs_id INT NOT NULL REFERENCES kurs(id) );
-
Welche Datentypen verwenden wir in der SQL Schulung?
Wir wählen Datentypen passend zum Inhalt: TEXT/VARCHAR für Namen, INTEGER für Zähler, NUMERIC/DECIMAL für Geld, DATE/TIMESTAMP für Termine, BOOLEAN für Zustände. Ziel ist korrekte Speicherung und sinnvolle Vergleiche.
Beispielcode aus der SQL Schulung:
CREATE TABLE rechnung ( id SERIAL PRIMARY KEY, betrag NUMERIC(10,2) NOT NULL, faellig DATE NOT NULL, bezahlt BOOLEAN NOT NULL DEFAULT FALSE );
-
Wie formulieren wir einfache SELECT-Abfragen in der SQL Schulung?
Wir beginnen mit Projektion (Spaltenauswahl) und Selektion (Zeilenfilter). In der SQL Schulung achten wir auf explizite Spaltenlisten statt SELECT *, um Stabilität und Performance zu fördern.
Beispielcode aus der SQL Schulung:
SELECT id, name FROM teilnehmer WHERE name LIKE 'A%';
-
Wie filtern und sortieren wir in der SQL Schulung?
WHERE reduziert die Ergebnismenge, ORDER BY legt die Reihenfolge fest, LIMIT beschränkt die Anzahl Zeilen. Wir formulieren klare Bedingungen und definieren deterministische Sortierungen.
Beispielcode aus der SQL Schulung:
SELECT kurs, datum FROM buchung WHERE datum >= CURRENT_DATE ORDER BY datum ASC LIMIT 10;
-
Wann setzen wir DISTINCT in der SQL Schulung ein?
DISTINCT entfernt Duplikate auf Zeilenebene. In der SQL Schulung nutzen wir es gezielt, prüfen aber zuerst die Datenmodellierung und Joins, um unbeabsichtigte Duplikate zu vermeiden.
Beispielcode aus der SQL Schulung:
SELECT DISTINCT kurs FROM buchung ORDER BY kurs;
-
Wie verbinden wir Tabellen mit INNER JOIN in der SQL Schulung?
INNER JOIN liefert nur passende Zeilen beider Tabellen. In der SQL Schulung benennen wir Join-Bedingungen explizit und achten auf eindeutige Aliase bei mehrfachen Joins.
Beispielcode aus der SQL Schulung:
SELECT b.id, t.name, b.kurs, b.datum FROM buchung b JOIN teilnehmer t ON t.id = b.teilnehmer_id WHERE b.datum >= CURRENT_DATE;
-
Wann verwenden wir LEFT/RIGHT JOIN in der SQL Schulung?
LEFT JOIN liefert alle Zeilen der linken Tabelle, auch ohne passende Rechte. RIGHT JOIN analog für die rechte Seite. In der SQL Schulung nutzen wir LEFT JOIN häufig für Berichte mit ‚fehlenden‘ Zuordnungen.
Beispielcode aus der SQL Schulung:
SELECT k.titel, b.id AS buchung_id FROM kurs k LEFT JOIN buchung b ON b.kurs = k.titel ORDER BY k.titel;
-
Wie gruppieren und verdichten wir Daten in der SQL Schulung?
COUNT/AVG/SUM/MIN/MAX verdichten Daten. GROUP BY bildet Gruppen, HAVING filtert auf Gruppenebene. In der SQL Schulung trennen wir bewusst WHERE (vor Gruppierung) und HAVING (nach Gruppierung).
Beispielcode aus der SQL Schulung:
SELECT kurs, COUNT(*) AS anzahl FROM buchung GROUP BY kurs HAVING COUNT(*) >= 5 ORDER BY anzahl DESC;
-
Wie ändern wir Daten in der SQL Schulung sicher?
INSERT fügt Zeilen ein, UPDATE ändert Werte, DELETE entfernt Zeilen. In der SQL Schulung arbeiten wir mit klaren WHERE-Bedingungen und testen Updates/Deletes zunächst in einer Transaktion oder per SELECT-Vorschau.
Beispielcode aus der SQL Schulung:
-- INSERT INSERT INTO teilnehmer (name, email) VALUES ('Anna', 'anna@example.org'); -- UPDATE (nur offene Rechnungen) UPDATE rechnung SET bezahlt = TRUE WHERE faellig < CURRENT_DATE AND bezahlt = FALSE; -- DELETE (Testlauf erst als SELECT!) DELETE FROM buchung WHERE datum < CURRENT_DATE - INTERVAL '2 years';
-
Wie gehen wir mit NULL in der SQL Schulung um?
NULL steht für ‚unbekannt/fehlt‘. Vergleiche mit NULL ergeben UNKNOWN. In der SQL Schulung verwenden wir IS NULL/IS NOT NULL und COALESCE für Standardwerte. Wir vermeiden zweideutige Auswertungen in Bedingungen.
Beispielcode aus der SQL Schulung:
SELECT COALESCE(email, 'keine E-Mail hinterlegt') AS kontakt FROM teilnehmer WHERE email IS NULL;
-
Wie sichern wir Datenqualität in der SQL Schulung ab?
Constraints prüfen Regeln auf Datenbankebene. In der SQL Schulung setzen wir NOT NULL, UNIQUE und CHECK ein, um valide Zustände zu erzwingen, unabhängig von der Anwendungsschicht.
Beispielcode aus der SQL Schulung:
CREATE TABLE kurs_termin ( id SERIAL PRIMARY KEY, kurs TEXT NOT NULL, datum DATE NOT NULL, preis NUMERIC(10,2) NOT NULL CHECK (preis >= 0), UNIQUE (kurs, datum) );
-
Wann nutzen wir Mengenoperationen in der SQL Schulung?
UNION/UNION ALL vereinigt Ergebnismengen, INTERSECT bildet Schnittmengen, EXCEPT bildet Differenzen. In der SQL Schulung achten wir auf kompatible Spaltenanzahl und -typen.
Beispielcode aus der SQL Schulung:
(SELECT name FROM teilnehmer WHERE name LIKE 'A%') UNION (SELECT name FROM teilnehmer WHERE name LIKE 'B%') ORDER BY name;
-
Wie klassifizieren wir Werte mit CASE in der SQL Schulung?
CASE erlaubt bedingte Ableitungen direkt in Abfragen. In der SQL Schulung nutzen wir CASE für Gruppierungen, Labels und Ausnahmen ohne nachgelagerte Verarbeitung.
Beispielcode aus der SQL Schulung:
SELECT name, CASE WHEN email LIKE '%.de' THEN 'DE' WHEN email LIKE '%.at' THEN 'AT' ELSE 'andere' END AS region FROM teilnehmer;
-
Welche Hilfsfunktionen nutzen wir in der SQL Schulung häufig?
Wir verwenden TRIM/LOWER/UPPER/CONCAT für Texte und DATE/TIMESTAMP-Funktionen (z. B. CURRENT_DATE, DATE_TRUNC) für Zeitbezüge. Ziel ist saubere Normalisierung und auswertbare Zeitachsen.
Beispielcode aus der SQL Schulung:
SELECT UPPER(TRIM(name)) AS name_norm, DATE_TRUNC('month', datum) AS monat FROM buchung;
-
Wie arbeiten wir mit Transaktionen in der SQL Schulung?
Transaktionen bündeln Änderungen atomar. ACID (Atomicity, Consistency, Isolation, Durability) sichert Korrektheit. In der SQL Schulung nutzen wir BEGIN/COMMIT/ROLLBACK und testen Fehlerszenarien.
Beispielcode aus der SQL Schulung:
BEGIN; UPDATE rechnung SET bezahlt = TRUE WHERE id = 101; INSERT INTO zahlung (rechnung_id, betrag) VALUES (101, 450.00); COMMIT; -- oder ROLLBACK bei Fehlern
-
Was beachten wir bei Isolation/Sperren in der SQL Schulung?
Gleichzeitige Zugriffe benötigen Isolation. In der SQL Schulung erläutern wir gängige Niveaus (READ COMMITTED etc.) und zeigen, wie Sperren Anomalien verhindern, aber auch Wartezeiten verursachen.
Beispielcode aus der SQL Schulung:
-- Beispiel: explizite Sperre auf Zeile/Relation (DB-abhängig) BEGIN; SELECT * FROM rechnung WHERE id = 101 FOR UPDATE; -- Bearbeitung ... COMMIT;
-
Warum normalisieren wir Datenmodelle in der SQL Schulung?
Normalformen reduzieren Redundanz und Anomalien. In der SQL Schulung prüfen wir 1NF (atomare Werte), 2NF (vollständige Abhängigkeit vom Schlüssel) und 3NF (keine transitiven Abhängigkeiten).
Beispielcode aus der SQL Schulung:
-- Beispiel: Auslagerung mehrfach verwendeter Werte CREATE TABLE format ( id SERIAL PRIMARY KEY, name TEXT UNIQUE NOT NULL ); -- kurs.format_id statt kurs.format_text
-
Wie steuern wir Zugriffe in der SQL Schulung?
Wir vergeben minimale Rechte per Rolle. In der SQL Schulung trennen wir Lese-/Schreibrechte und verhindern so unbeabsichtigte Änderungen in produktionsnahen Umgebungen.
Beispielcode aus der SQL Schulung:
-- (DB-abhängig, Beispiel PostgreSQL) CREATE ROLE reporter NOINHERIT; GRANT SELECT ON ALL TABLES IN SCHEMA public TO reporter;
SQL Schulung Fortgeschritten
-
Wann setzen wir Subqueries in der SQL Schulung ein?
Subqueries kapseln Teilabfragen. In der SQL Schulung nutzen wir skalare, korrelierte und IN/EXISTS-Varianten für klar strukturierte, wiederverwendbare Abfragen.
Beispielcode aus der SQL Schulung:
SELECT name FROM teilnehmer t WHERE EXISTS ( SELECT 1 FROM buchung b WHERE b.teilnehmer_id = t.id AND b.kurs = 'SQL Grundlagen' );
-
Wie verbessern CTEs die Lesbarkeit in der SQL Schulung?
Common Table Expressions (WITH) zerlegen komplexe Abfragen in benannte Schritte. In der SQL Schulung fördern wir damit Wartbarkeit und Testbarkeit.
Beispielcode aus der SQL Schulung:
WITH kommende AS ( SELECT * FROM buchung WHERE datum >= CURRENT_DATE ) SELECT kurs, COUNT(*) FROM kommende GROUP BY kurs;
-
Wozu dienen Views in der SQL Schulung?
Views speichern wiederkehrende Abfrage-Logik unter einem Namen. In der SQL Schulung verwenden wir sie als stabile Berichts- oder Integrationsschnittstellen.
Beispielcode aus der SQL Schulung:
CREATE VIEW v_buchungen_heute AS SELECT b.*, t.name FROM buchung b JOIN teilnehmer t ON t.id = b.teilnehmer_id WHERE b.datum = CURRENT_DATE;
-
Wie und wann legen wir Indizes in der SQL Schulung an?
Indizes beschleunigen Suchen und Joins auf selektiven Spalten. In der SQL Schulung analysieren wir Abfragepläne, erstellen gezielte (auch zusammengesetzte) Indizes und vermeiden Überindizierung wegen Schreibkosten.
Beispielcode aus der SQL Schulung:
CREATE INDEX idx_buchung_datum ON buchung(datum); CREATE INDEX idx_buchung_teilnehmer ON buchung(teilnehmer_id, datum);
-
Wie lesen wir Abfragepläne in der SQL Schulung?
EXPLAIN/EXPLAIN ANALYZE zeigt den Ausführungsplan (z. B. Index Scan vs. Seq Scan). In der SQL Schulung interpretieren wir Kosten, Kardinalitäten und Engpässe und leiten Optimierungen ab (Index, Filter, Umformulierung).
Beispielcode aus der SQL Schulung:
EXPLAIN ANALYZE SELECT b.* FROM buchung b WHERE b.datum >= CURRENT_DATE;
-
Wann nutzen wir Window Functions in der SQL Schulung?
Window Functions (OVER/PARTITION BY/ORDER BY) berechnen laufende Werte ohne Gruppierung. In der SQL Schulung erstellen wir Rankings, gleitende Durchschnitte und kumulative Summen.
Beispielcode aus der SQL Schulung:
SELECT kurs, datum, COUNT(*) OVER (PARTITION BY kurs ORDER BY datum ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS kumulativ FROM buchung;
-
Was bedeutet set-basiertes Arbeiten in der SQL Schulung?
SQL operiert auf Mengen, nicht auf Einzelzeilen-Schleifen. In der SQL Schulung formulieren wir Abfragen so, dass die Datenbank Optimierungen ausführen kann, statt Daten in die Anwendung zu ziehen.
Beispielcode aus der SQL Schulung:
-- Statt pro Teilnehmer zu zählen, in einer Abfrage gruppieren: SELECT teilnehmer_id, COUNT(*) FROM buchung GROUP BY teilnehmer_id;
-
Welche Isolationsniveaus behandeln wir in der SQL Schulung?
Wir diskutieren READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ und SERIALIZABLE und zeigen typische Anomalien (Dirty/Non-Repeatable Reads, Phantom Reads) samt Gegenmaßnahmen.
Beispielcode aus der SQL Schulung:
-- DB-abhängig, Beispiel PostgreSQL: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-
Wie denken wir Backup/Restore in der SQL Schulung?
Wir besprechen logische und physische Backups, Wiederherstellungsziele (RPO/RTO) und testen Wiederherstellung in einer separaten Umgebung. Ziel ist belastbare Betriebsfähigkeit.
Beispielcode aus der SQL Schulung:
-- Werkzeugspezifisch (pg_dump/mysqldump etc.); im Kurs erläutern wir Abläufe und Prüfschritte.
-
Wie nutzen wir Views zur Zugriffskontrolle in der SQL Schulung?
Views können sensible Spalten ausblenden und nur geprüfte Daten zeigen. In der SQL Schulung kombinieren wir Views mit Rollenrechten für Least Privilege.
Beispielcode aus der SQL Schulung:
CREATE VIEW v_teilnehmer_public AS SELECT id, name FROM teilnehmer; -- Rolle erhält nur Zugriff auf die View, nicht auf die Basistabelle.
-
Wie gehen wir mit Import/Export in der SQL Schulung um?
Wir importieren/entladen Daten kontrolliert (z. B. CSV), berücksichtigen Zeichensatz/Trennzeichen und validieren Ergebnisse mit Stichproben und Constraints.
Beispielcode aus der SQL Schulung:
-- DB-abhängig, Beispiel PostgreSQL COPY: -- COPY teilnehmer(name,email) FROM '/pfad/teilnehmer.csv' CSV HEADER;
-
Wann setzen wir Trigger in der SQL Schulung ein?
Trigger führen Logik auf DML-Ereignisse aus. In der SQL Schulung nutzen wir sie sparsam für Querschnittsaufgaben (Audit, technische Konsistenz), nicht für komplexe Fachlogik.
Beispielcode aus der SQL Schulung:
-- DB-abhängig; im Kurs zeigen wir ein Audit-Beispiel für Änderungen an rechnung.
-
Wie nutzen wir prozedurale Erweiterungen in der SQL Schulung?
Prozeduren/Funktionen kapseln servernahe Logik. In der SQL Schulung bewerten wir Nutzen (Nähe zu Daten, Performance) gegenüber Nachteilen (Portabilität, Deployment). Einsatz gezielt und testbar gestalten.
Beispielcode aus der SQL Schulung:
-- DB-abhängig (PL/pgSQL, T-SQL, PL/SQL); wir zeigen Muster für Validierung und Batch-Verarbeitung.
-
Wie verhindern wir SQL-Injection in der SQL Schulung?
Wir nutzen ausschließlich parametrisierte Abfragen/Prepared Statements. In der SQL Schulung zeigen wir, warum String-Konkatenation für SQL strikt zu vermeiden ist.
Beispielcode aus der SQL Schulung:
-- Parameterbindung wird in der Anwendung gesetzt (Framework/Driver). -- Das Statement enthält Platzhalter statt zusammengebauter Strings.
-
Wann hilft Partitionierung in der SQL Schulung?
Partitionierung teilt große Tabellen in Segmente (z. B. nach Datum). In der SQL Schulung zeigen wir bessere Wartung, gezielte Abfragen und vereinfachte Archivierung.
Beispielcode aus der SQL Schulung:
-- DB-abhängig; Beispiel: Range-Partitionen nach Datum für buchung.
-
Wofür nutzen wir materialisierte Sichten in der SQL Schulung?
Materialized Views persistieren Abfrageergebnisse. In der SQL Schulung nutzen wir sie für teure Reports mit geplanten Aktualisierungen (REFRESH).
Beispielcode aus der SQL Schulung:
-- DB-abhängig; Beispiel PostgreSQL: -- CREATE MATERIALIZED VIEW mv_report AS SELECT ...; -- REFRESH MATERIALIZED VIEW mv_report;
-
Welche Performance-Grundsätze gelten in der SQL Schulung?
Nur benötigte Spalten/Zeilen abfragen, passende Indizes verwenden, Joins/Filter früh anwenden, Abfragepläne prüfen und unnötige Funktionen in Prädikaten vermeiden (Sargability).
Beispielcode aus der SQL Schulung:
-- Sargable: Spalte links, Konstante/Funktion rechts SELECT * FROM buchung WHERE datum >= DATE '2025-01-01';
-
Wann ist Denormalisierung sinnvoll in der SQL Schulung?
Denormalisierung kann Reporting vereinfachen oder Performance verbessern. In der SQL Schulung setzen wir sie gezielt ein und sichern Konsistenz über ETL/Materialization oder Trigger.
Beispielcode aus der SQL Schulung:
-- Beispiel: voraggregierte Tabelle für Dashboard-KPIs (nächtlicher ETL-Job).
-
Wie modellieren wir zeitabhängige Daten in der SQL Schulung?
Wir speichern Gültigkeitszeiträume (valid_from/valid_to) oder nutzen Systemversionierung (DB-abhängig). In der SQL Schulung zeigen wir Punkte-/Periodenabfragen und Überlappungsprüfungen.
Beispielcode aus der SQL Schulung:
CREATE TABLE preisregel ( id SERIAL PRIMARY KEY, kurs TEXT NOT NULL, betrag NUMERIC(10,2) NOT NULL, valid_from DATE NOT NULL, valid_to DATE );
-
Wie gehen wir mit JSON in der SQL Schulung um?
Moderne RDBMS unterstützen JSON-Spalten. In der SQL Schulung nutzen wir sie für flexible Attribute, achten aber auf Indizierung/Validierung und behalten relationale Kerndaten normalized.
Beispielcode aus der SQL Schulung:
-- DB-abhängig; Beispiel PostgreSQL: -- SELECT details->>'unternehmen' AS firma FROM teilnehmer_extras;
-
Welche Datenschutzaspekte berücksichtigen wir in der SQL Schulung?
Wir minimieren gespeicherte personenbezogene Daten, pseudonymisieren wo möglich und begrenzen Zugriffe über Rollen/Views. Audit- und Löschkonzepte werden fachlich abgestimmt.
Beispielcode aus der SQL Schulung:
-- Beispiel: Trennung Stammdaten vs. Reporting-View ohne E-Mail
-
Wie verankern wir ETL/ELT in der SQL Schulung?
Für Integrationen nutzen wir reproduzierbare Ladeprozesse (Staging → Validierung → Produktion). In der SQL Schulung definieren wir Idempotenz, Protokollierung und Fehlerroutinen.
Beispielcode aus der SQL Schulung:
-- Typisches Muster: -- 1) COPY in Staging -- 2) Validierung mit CHECK-Queries -- 3) Merge/Upsert in Zieltabelle
-
Wie konsolidieren wir Daten mit MERGE/UPSERT in der SQL Schulung?
Wir fügen neue Datensätze ein und aktualisieren vorhandene in einem Schritt. In der SQL Schulung nutzen wir DB-spezifische Syntax (MERGE, INSERT ... ON CONFLICT).
Beispielcode aus der SQL Schulung:
-- PostgreSQL: INSERT INTO teilnehmer (id, name, email) VALUES (1, 'Anna', 'anna@example.org') ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name, email = EXCLUDED.email;
-
Wie strukturieren wir Schemas/Rollen in der SQL Schulung?
Wir trennen Anwendungs-, Staging- und Reporting-Schemas und vergeben Rechte rollenbasiert. In der SQL Schulung erleichtert das Deployments und kontrolliert Zugriffspfade.
Beispielcode aus der SQL Schulung:
-- Beispiel: -- SCHEMA app, staging, rpt -- Rollen: app_rw, rpt_ro etc.
-
Wie testen wir SQL-Abfragen in der SQL Schulung?
Wir nutzen Beispieldatasets, deterministische Fixtures und vergleichen erwartete mit tatsächlichen Ergebnissen. Abfragen werden versionsverwaltet und Review-pflichtig gemacht.
Beispielcode aus der SQL Schulung:
-- Golden-Master-Ansatz: Ergebnis in Referenztabelle ablegen und regelmäßig vergleichen.