SQLite3 für Webseiten, Apps und Node.js
SQLite ist eine Datenbank, die mit einer Datei und einem Treiber anstelle eines Datenbankprozess arbeitet. SQLite ist eine vollständige Implementierung von ANSI Standard-SQL. Als schnelle, zuverlässige und relationale Datenbank ist SQLite bestens für Web-Anwendungen geeignet und optimiert für mobile Geräte.
SQLite – Datenbank in einer Datei
SQLite nimmt eine Datei und nutzt sie als Datenbank. SQLite 3.6 war in den meisten PHP-Installation ab PHP 5.3 schon vertreten, die neuste stabile Version ist 3.51.2 vom Januar 2026. SQLite ist der zuverlässige Langzeitspeicher in Mobilgeräten und damit die meist genutzte Datenbank.
SQLite braucht keine Installation, keinen Server, keine Konfiguration, der Admin-Aufwand ist quasi Null. Einer der größten Vorteile von SQLite in kleinen Projekten ist das Backup des Webverzeichnisses reicht.
PHP: Natives SQLite3
PHP stellt zwei Schnittstellen für SQLite3 bereit. Das native PHP-SQLite3-Interface ist stark an SQLite3 in C ausgerichtet. Allerdings ist PHP SQLite3 nicht die vollständige Umsetzung von SQLite3 in C, unterstützt Exceptions nicht vollständig und die Fehlerbehandlung ist spartanisch.
PDO – PHP Data Objects
PDO ist eine normalisierte Schnittstelle zu Datenbanken auf verschiedenen Plattformen und stellt in den meisten Fällen das bevorzugte Interface zu SQLite3 dar.
$pdo = new PDO('sqlite:database.db');
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([1]);
$data = $stmt->fetch(PDO::FETCH_ASSOC);
PDO ist abstrakter, Datenbank-unabhängig, weist ein einheitliches API für MySQL, SQLite und PostgreSQL auf und ist am Ende auch noch meist ergonomischer.
Zugriff auf die SQLite3-Datenbank
Für SQLite-Datenbanken ist keine Konfiguration und kein Login erforderlich.
$db = new SQLite3(DB_FILENAME);
Erzeugt ein Datenbank-Handle $db.
SQLite3 CREATE TABLE
exec wird für INSERT, UPDATE und DELETE benutzt.
$db = new SQLite3(DB_FILENAME);
$db-> exec("CREATE TABLE IF NOT EXISTS tableSpieler(
id INTEGER PRIMARY KEY AUTOINCREMENT,
dokoname TEXT NOT NULL DEFAULT '0',
dokoinfo TEXT NOT NULL DEFAULT '0',
dokosince INTEGER NOT NULL DEFAULT '0')");
SQLite3 INSERT
$db->exec("INSERT INTO $table (
tracktable,
trackspieler,
trackdate) VALUES (
$tracktable,
$tspieler,
'$datetime')");
Fügt einen Datensatz in die Tabelle $table ein. Wenn die eingefügten Werte Zahlen sind, werden keine Hochkommas benötigt.
Beim Einfügen von Strings hingegen braucht PHP/SQLite3 Hochkommas.
SQLite3 – Zuletzt eingefügter Record
$lstrack = $db->lastInsertRowid();
Bei Tabellen mit Primary Key gibt $db->lastInsertRowid() die id des zuletzt eingefügten Datensatz zurück.
SQLite3 SELECT und JOIN
Anfragen an die SQLite3-Datenbank, die Daten zurück geben, werden mit query durchgeführt. Die Ergebnisse werden innerhalb von while mit fetchArray ausgelesen.
$db = new SQLite3(DB_FILENAME);
$results = $db->query("SELECT s.spielid, t.trackdate, t.id
FROM tableTracks AS t
JOIN tableSpieler AS s
WHERE t.trackspieler = s.id
ORDER BY t.id");
while ($row = $results->fetchArray()) {
echo $row['trackdate'];
echo $row['spielid'];
…
}
Die SQLite3-Console
Console öffnen
sqlite3 database.db
zeigt
SQLite version 3.6.20 Enter ".help" for instructions Enter SQL statements terminated with a ";"
Alle Tabellen einer SQLite3-Datenbank anzeigen lassen
select * from sqlite_master;
zeigt die create-Anweisungen für alle Tabellen der Datenbank
table|spieler|spieler|2|CREATE TABLE spieler(
id INTEGER PRIMARY KEY AUTOINCREMENT,
firstname TEXT NOT NULL DEFAULT '',
lastname TEXT NOT NULL DEFAULT '')
table|sqlite_sequence|sqlite_sequence|3|CREATE TABLE sqlite_sequence(name,seq)
table|track|track|4|CREATE TABLE "track"(
id INTEGER PRIMARY KEY AUTOINCREMENT,
spieler INTEGER NOT NULL DEFAULT '0',
points INTEGER INTEGER NOT NULL DEFAULT '0')
Alle Datensätze einer Tabelle anzeigen
select * from spieler;
Alle Datensätze einer Tabelle löschen
delete from track;
Einzelne Sätze löschen
delete from track where trackno < 2000;
SQLite3-Console beenden
.quit
SQLite3 direkt von der Kommandozeile mit dem Befehl in Hochkommas
sqlite3 test.db "select * from customer "
SQLite3-Befehl aus einer Textdatei ausführen
sqlite3 mytest.db < test-sqlite3.sql
SQLite Vor- und Nachteile
In SQLite fehlen einige SQL-Funktionen, so z.B. Right Join, for-each triggers, drop column, alter column.
Es gibt keinen Mechanismus, der einen falschen Datentyp in einem Feld verhindert – ich kann einen String in ein Integer-Feld setzen.
Bei hochfrequenten Schreibvorgängen wird SQLite langsam.
Auf der Pro-Seite enthält macOS weiterhin SQLite als Systembibliothek und viele Apple-Frameworks nutzen intern SQLite. Windows selbst bringt SQLite nicht standardmäßig mit, aber die offizielle SQLite-Website bietet fertige ZIP-Pakete (keine Installation nötig). Entpacken, sqlite3.exe starten, fertig. Die Portierung auf einen anderen Server ist denkbar einfach: kopieren und fertig. Und ein Backup: kopieren und fertig.