Einführung

Teil 8

Datenbanken: Zustand prüfen, bevor Sie schreiben

Auch bei Datenbanken gilt: Ziel wählen, Struktur prüfen, Daten ansehen, eine begrenzte Änderung machen und danach kontrollieren.

Eine Datenbank ist strukturierter Zustand

Eine Datei zeigt ihren Inhalt direkt. Eine Datenbank stellt ihren Zustand über ein Datenbanksystem bereit: Tabellen oder Sammlungen, Datensätze, Indizes und Abfragen. Beginnen Sie nicht mit einer Schreiboperation. Prüfen Sie zuerst Treiber und Datenbank und sehen Sie sich die vorhandene Struktur an.

Dasselbe Prinzip wie bei Konfigurationsdateien gilt auch hier: Arbeiten Sie mit dem logischen Objekt — Tabelle, Zeile, Schlüssel oder Dokument — statt mit Details der physischen Speicherung.

`db` ist ein gemeinsames Vokabular, der Driver bleibt wichtig

db spiegelt häufige Operationen; direkte Commands wie sqlite, mysql, postgresql, redis, mongodb behalten die jeweilige Semantik.

install md db sqlite
db
db sqlite
sqlite

SQLite ist der sichere Übungsplatz

Eine SQLite-Datenbank ist eine lokale Datei ohne Netzwerk und Passwort. Erstelle die Tabelle und prüfe sie mit -t.

cd lil-playground
md data
sqlite -c data/notes.sqlite -f
sqlite : CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, title TEXT NOT NULL, status TEXT NOT NULL)
sqlite -t

Erst Struktur, dann Datensätze

-s zeigt Felder und Typen, -n eine Vorschau. Ein leeres Ergebnis ist bei einer neuen Tabelle eine sinnvolle Bestätigung.

sqlite -s notes
sqlite -n notes 10

Gezielte Writes können JSON verwenden

-a und -w nehmen Daten nach : als JSON entgegen. Nach jedem Write erneut anzeigen oder suchen; Delete bleibt eine bewusste Aktion.

sqlite -a notes : {"title":"First terminal note","status":"draft"}
sqlite -a notes : {"title":"Archive project","status":"done"}
sqlite -n notes 10
sqlite -w notes title "First terminal note" : {"status":"reviewed"}
sqlite -f notes reviewed 20

Native SQL bleibt für echte SQL-Aufgaben

Aggregate und komplexe Abfragen gehören in die native :-Form. Der kompakte gemeinsame Layer muss nicht alles nachbilden.

sqlite : SELECT status, COUNT(*) AS count FROM notes GROUP BY status

Export und Dump sind verschiedene Artefakte

Export liefert portable Daten, Dump sichert Schema und Inhalt für Wiederherstellung. Backup erst dann vertrauen, wenn Restore verstanden und getestet ist.

sqlite -o notes -j data/notes.json -f
sqlite dump data/notes.sql -f
stat data/notes.sql

Remote-Datenbanken bringen Zugangsdaten und Netzwerk hinzu

MySQL/PostgreSQL/Redis/MongoDB haben eigene Verbindungsmodelle. Passwörter nie in wiederverwendbare öffentliche Skripte schreiben.

db mysql
mysql -c localhost app shop
postgresql -c localhost app shop

Als Skript aufbewahren

database-checkpoint.lil öffnet die lokale SQLite-Übung, prüft die Tabelle und erzeugt einen Dump, ohne Business-Writes zu automatisieren.

#lil
@install md sqlite
cd lil-playground
md data
sqlite -c data/notes.sqlite -f
sqlite : CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, title TEXT NOT NULL, status TEXT NOT NULL)
sqlite -t
sqlite -n notes 10
sqlite dump data/notes.sql -f