Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Speicherdauer und Löschfristen

Nach dieser Lektion: Ich kann festlegen, wie lange Daten bleiben, und sie rechtzeitig löschen.

Lektion, 60 Min.9 BefehleMySQL-und-phpMyAdmin-Lab mit Beispieldatenbank eines Shops zum Üben von SQL

Wie lange darf ein Kundenkonto bleiben?

Die Speicherdauer ist die Zeit, für die Daten aufbewahrt werden dürfen. Danach müssen personenbezogene Daten gelöscht oder anonymisiert werden, wenn kein Grund mehr besteht, sie zu behalten.

Ein Online-Shop hat Konten von Personen, die seit Jahren nichts mehr gekauft haben. Wer entscheidet, wann diese Konten verschwinden, und wie findet man sie in der Datenbank?

Am Ende dieser Lektion

Notiz

Ich kann festlegen, wie lange Daten bleiben, und sie rechtzeitig löschen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Speicherdauerdie Zeit, für die Daten aufbewahrt werden dürfen
Löschfristder Zeitpunkt, an dem Daten gelöscht sein müssen
Aufbewahrungspflichteine Regel, die verlangt, bestimmte Daten zu behaltenRechnungen
Löschkonzepteine Liste, die für jede Datenart Frist und Löschweg nennt
Sicherungeine Kopie der Daten für den Notfall

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Jede Datenart braucht einen Zweck und eine Frist

Daten dürfen nur so lange bleiben, wie ihr Zweck besteht. Ein Newsletter-Abo endet mit der Abmeldung. Eine Rechnung muss oft mehrere Jahre bleiben, weil eine Aufbewahrungspflicht es verlangt.

Ein Löschkonzept hält das für jede Datenart fest. Die Fristen in der Tabelle unten sind Beispiele. Ihre Organisation legt die echten fest.

Ein Beispiel: ein kleines Löschkonzept

DatenartZweckBeispielfristDanach
Newsletter-AdresseMails sendenBis zur AbmeldungZeile löschen
KundenkontoBestellen und Support2 Jahre nach dem letzten KaufKonto löschen
RechnungBuchführungWie die Aufbewahrungspflicht es verlangtLöschen, wenn die Pflicht endet
BewerbungsunterlagenAuswahl der Stelle6 Monate nach der AbsageDokumente löschen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Abfrage findet die Zeilen jenseits der Frist

Eine Frist ist nur wirksam, wenn jemand die Zeilen findet, die sie überschritten haben. Das geht mit einem Vergleich auf ein Datum. In SQL schreiben Sie Daten als Text der Form 2025-01-01, das Jahr zuerst.

Die Lektion arbeitet an einer Kopie der Kundentabelle. Richten Sie zuerst das Terminal ein.

Das Zertifikat des Servers annehmen

Befehl
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Abkürzung für den Client

Befehl
alias db='mariadb -h db -u student -pstudent -t -e'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine eigene Datenbank anlegen

Befehl
db "CREATE DATABASE IF NOT EXISTS student_datenschutz"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine alte Kopie wegwerfen

Befehl
db "DROP TABLE IF EXISTS student_datenschutz.kunden_kopie"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Kundentabelle kopieren

Befehl
db "CREATE TABLE student_datenschutz.kunden_kopie AS SELECT id, first_name, last_name, email, joined_on FROM shop.customers"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Wer hat seit 2025 nichts bestellt?

Befehl
db "SELECT customer_id, MAX(ordered_at) AS letzte_bestellung FROM shop.orders GROUP BY customer_id HAVING MAX(ordered_at) < '2025-01-01' ORDER BY customer_id"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Neunzehn Personen sind über die Frist

Der Run zeigt 19 Personen, deren letzte Bestellung vor dem 1. Januar 2025 liegt. Angenommen, die Frist für ein Konto ist abgelaufen, wenn zwei Jahre nichts bestellt wurde: Dann wären das die Konten, die weg müssen.

Erst ansehen, dann löschen. So wie bei jedem DELETE sehen Sie vorher, welche Zeilen es trifft.

Die Zeilen der Kopie zählen

Befehl
db "SELECT COUNT(*) AS vorher FROM student_datenschutz.kunden_kopie"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Konten über der Frist in der Kopie löschen

Befehl
db "DELETE FROM student_datenschutz.kunden_kopie WHERE id IN (SELECT customer_id FROM shop.orders GROUP BY customer_id HAVING MAX(ordered_at) < '2025-01-01')"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Zeilen noch einmal zählen

Befehl
db "SELECT COUNT(*) AS nachher FROM student_datenschutz.kunden_kopie"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Von vierzig Zeilen bleiben einundzwanzig

Vorher standen 40 Zeilen in der Kopie, danach 21. Genau die 19 Personen aus dem Run vorher sind weg.

Vier Personen im Shop haben nie bestellt. Sie stehen in keiner der beiden Abfragen. Ein Löschkonzept muss auch für sie eine Frist nennen, zum Beispiel ab dem Beitrittsdatum.

Ein häufiger Fehler

Warnung

Viele glauben, mit dem DELETE sei die Person aus dem System verschwunden. Das stimmt nicht. Die Daten stehen noch in Sicherungen, in Exporten und in Protokollen. Ein Löschkonzept nennt darum auch, wie lange eine Sicherung lebt.

Probieren Sie es: Belege über der Frist

Code: sql
-- Belege, die vor dem 1. Januar 2020 ausgestellt wurden.
SELECT id, kunde, ausgestellt FROM belege
WHERE ausgestellt < '2020-01-01'
ORDER BY id;
-- Ändern Sie das Datum auf 2022-01-01. Wie viele Belege sind jetzt zu alt?

Über dieses Lab und seinen Quellcode: MySQL-und-phpMyAdmin-Lab mit Beispieldatenbank eines Shops zum Üben von SQL

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.