8. Fortgeschrittene Themen

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:

  1. Was ist eine View?

    • a) Eine physische Tabelle.

    • b) Eine virtuelle Tabelle, die auf einer Abfrage basiert.

    • c) Ein Trigger.

  2. Welcher Befehl wird verwendet, um eine Stored Procedure aufzurufen?

    • a) EXECUTE

    • b) CALL

    • c) RUN

  3. Welche Eigenschaft einer Transaktion stellt sicher, dass entweder alle Befehle ausgeführt werden oder keiner?

    • a) Konsistenz

    • b) Atomarität

    • c) Dauerhaftigkeit