In diesem Kapitel lernst du fortgeschrittene SQL-Konzepte, die dir helfen, komplexe Datenbankoperationen effizient zu gestalten. Wir werden uns mit Views, Stored Procedures, Trigger und Transaktionen beschäftigen.
8.1 Views
Eine View ist eine virtuelle Tabelle, die auf dem Ergebnis einer SQL-Abfrage basiert. Sie enthält keine eigenen Daten, sondern zeigt Daten aus einer oder mehreren Tabellen an.
Vorteile von Views:
Vereinfachung: Komplexe Abfragen können in einer View gekapselt werden.
Sicherheit: Du kannst bestimmte Daten für Benutzer zugänglich machen, ohne die zugrunde liegenden Tabellen freizugeben.
Wiederverwendbarkeit: Views können in mehreren Abfragen verwendet werden.
Syntax:
CREATE VIEW view_name AS SELECT spalten FROM tabellen WHERE bedingung;
Beispiel:
Um eine View zu erstellen, die alle Benutzer anzeigt, die älter als 25 sind, schreibst du:
CREATE VIEW benutzer_ueber_25 AS SELECT * FROM benutzer WHERE alter > 25;
Verwendung:
Du kannst eine View wie eine normale Tabelle abfragen:
SELECT * FROM benutzer_ueber_25;
8.1 Views
Eine View ist eine virtuelle Tabelle, die auf dem Ergebnis einer SQL-Abfrage basiert. Sie enthält keine eigenen Daten, sondern zeigt Daten aus einer oder mehreren Tabellen an.
Vorteile von Views:
Vereinfachung: Komplexe Abfragen können in einer View gekapselt werden.
Sicherheit: Du kannst bestimmte Daten für Benutzer zugänglich machen, ohne die zugrunde liegenden Tabellen freizugeben.
Wiederverwendbarkeit: Views können in mehreren Abfragen verwendet werden.
Syntax:
CREATE VIEW view_name AS SELECT spalten FROM tabellen WHERE bedingung;
Beispiel:
Um eine View zu erstellen, die alle Benutzer anzeigt, die älter als 25 sind, schreibst du:
CREATE VIEW benutzer_ueber_25 AS SELECT * FROM benutzer WHERE alter > 25;
Verwendung:
Du kannst eine View wie eine normale Tabelle abfragen:
SELECT * FROM benutzer_ueber_25;
8.2 Stored Procedures
Eine Stored Procedure ist ein vordefinierter SQL-Code, der in der Datenbank gespeichert und später ausgeführt werden kann. Stored Procedures sind nützlich, um wiederkehrende Aufgaben zu automatisieren.
Syntax:
CREATE PROCEDURE procedure_name (parameter1, parameter2, ...) BEGIN -- SQL-Code END;
Beispiel:
Um eine Stored Procedure zu erstellen, die alle Benutzer anzeigt, schreibst du:
CREATE PROCEDURE GetUsers() BEGIN SELECT * FROM benutzer; END;
Aufruf:
Du kannst eine Stored Procedure mit dem Befehl CALL
aufrufen:
CALL GetUsers();
8.3 Trigger
Ein Trigger ist ein SQL-Code, der automatisch ausgeführt wird, wenn ein bestimmtes Ereignis eintritt, z. B. das Einfügen, Aktualisieren oder Löschen von Daten.
Syntax:
CREATE TRIGGER trigger_name BEFORE|AFTER INSERT|UPDATE|DELETE ON tabelle FOR EACH ROW BEGIN -- SQL-Code END;
Beispiel:
Um einen Trigger zu erstellen, der das Erstellungsdatum eines neuen Benutzers automatisch setzt, schreibst du:
CREATE TRIGGER before_insert_benutzer BEFORE INSERT ON benutzer FOR EACH ROW SET NEW.erstellt_am = NOW();
8.4 Transaktionen
Eine Transaktion ist eine Folge von SQL-Befehlen, die als eine Einheit ausgeführt werden. Transaktionen stellen sicher, dass entweder alle Befehle erfolgreich ausgeführt werden oder keiner, um die Datenintegrität zu gewährleisten.
ACID-Eigenschaften:
Atomarität: Eine Transaktion ist unteilbar (entweder ganz oder gar nicht).
Konsistenz: Die Datenbank bleibt nach der Transaktion in einem konsistenten Zustand.
Isolation: Transaktionen beeinflussen sich nicht gegenseitig.
Dauerhaftigkeit: Nach dem Commit einer Transaktion sind die Änderungen dauerhaft.
Syntax:
START TRANSACTION; -- SQL-Befehle COMMIT; -- Änderungen speichern ROLLBACK; -- Änderungen rückgängig machen
Beispiel:
Um eine Transaktion zu erstellen, die zwei Konten aktualisiert, schreibst du:
START TRANSACTION; UPDATE konten SET guthaben = guthaben - 100 WHERE id = 1; UPDATE konten SET guthaben = guthaben + 100 WHERE id = 2; COMMIT;
8.5 Zusammenfassung
In diesem Kapitel hast du gelernt:
Wie du Views verwendest, um komplexe Abfragen zu vereinfachen.
Wie du Stored Procedures erstellst, um wiederkehrende Aufgaben zu automatisieren.
Wie du Trigger verwendest, um automatische Aktionen bei bestimmten Ereignissen auszulösen.
Wie du Transaktionen verwendest, um die Datenintegrität zu gewährleisten.
Im nächsten Kapitel werden wir uns mit Best Practices und Tipps beschäftigen, um deine SQL-Kenntnisse weiter zu verbessern.
Quiz zu fortgeschrittenen Themen
Teste dein Wissen mit diesen Fragen:
Was ist eine View?
a) Eine physische Tabelle.
b) Eine virtuelle Tabelle, die auf einer Abfrage basiert.
c) Ein Trigger.
Welcher Befehl wird verwendet, um eine Stored Procedure aufzurufen?
a)
EXECUTE
b)
CALL
c)
RUN
Welche Eigenschaft einer Transaktion stellt sicher, dass entweder alle Befehle ausgeführt werden oder keiner?
a) Konsistenz
b) Atomarität
c) Dauerhaftigkeit
Antworten:
1. b) Eine virtuelle Tabelle, die auf einer Abfrage basiert.
2. b) CALL
3. b) Atomarität