Kennisbank › Sqlite Nosql › SQLite: ingebedde database-engine zonder server
sqlite nosql starter 31 August 2026

SQLite: ingebedde database-engine zonder server

SQLite: ingebouwde database-engine zonder server

sqlite3 --version

Als u een versienummer ziet zoals `3.40.1`, is SQLite al geïnstalleerd en kunt u verdergaan naar stap 3.

2. Installeer SQLite

Op Debian/Ubuntu:

sudo apt update && sudo apt install sqlite3

Op Fedora/RHEL:

sudo dnf install sqlite

Dit installeert de `sqlite3`-command-line tool inclusief de onderliggende bibliotheek.

3. Maak een database aan

SQLite slaat een complete database — tabellen, indices, triggers en data — op in één enkel bestand. Maak een nieuwe database aan met:

sqlite3 mydata.db

Dit commando opent een interactieve SQL-shell en maakt het bestand `mydata.db` aan. Als het bestand al bestaat, opent SQLite het bestaande bestand.

4. Maak een tabel en voeg data toe

Voer binnen de SQLite-shell de volgende SQL-commando's uit:

CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE);
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');

De eerste regel maakt een tabel met drie kolommen. De volgende twee regels voegen rijen toe. SQLite ondersteunt standaard SQL-typen: `INTEGER`, `TEXT`, `REAL`, `BLOB` en `NULL`.

5. Verlaat de SQLite-shell

Typ `.exit` om de interactieve shell te sluiten:

.exit

Het databasebestand `mydata.db` staat nu op schijf. U kunt het kopiëren, e-mailen of in Git versiebeheer zetten — het is één enkel bestand.

6. Query de database zonder interactieve shell

U kunt SQL-commando's ook rechtstreeks vanaf de command-line uitvoeren:

sqlite3 mydata.db "SELECT * FROM users;"

Dit geeft alle rijen uit de `users`-tabel weer. Deze methode is handig voor scripts en geautomatiseerde taken.

7. Gebruik JSON-extensies voor document-achtige data

SQLite ondersteunt JSON1-extensies sinds versie 3.9.0. Hiermee kunt u JSON-data opslaan en queryen binnen relationele tabellen:

sqlite3 mydata.db "CREATE TABLE documents (id INTEGER PRIMARY KEY, data JSON);"
sqlite3 mydata.db "INSERT INTO documents (data) VALUES ('{\"title\": \"Test\", \"tags\": [\"linux\", \"sqlite\"]}');"
sqlite3 mydata.db "SELECT json_extract(data, '$.title') FROM documents;"

Dit combineert relationele structuur met de flexibiliteit van documentdatabases — zonder dat u een aparte NoSQL-server nodig hebt.

8. Vergelijk databases met sqldiff

SQLite levert een hulpprogramma `sqldiff` mee dat het verschil tussen twee databasebestanden toont:

sqldiff mydata.db mydata_backup.db

Dit genereert een SQL-script dat de ene database transformeert naar de andere. Handig voor migraties en debugging van schema-wijzigingen.

Verificatie

Controleer of uw database correct functioneert:

sqlite3 mydata.db "PRAGMA integrity_check;"

Dit commando moet `ok` teruggeven. Controleer daarnaast de tabelstructuur:

sqlite3 mydata.db ".schema"

Dit toont de CREATE TABLE-statements van alle tabellen in de database.

Veelgestelde problemen

1. Database is vergrendeld (database is locked)

SQLite staat slechts één schrijver tegelijk toe. Als u dit tegenkomt, gebruik dan de WAL-modus:

sqlite3 mydata.db "PRAGMA journal_mode=WAL;"

Dit staat gelijktijdig lezen en schrijven toe en vermindert vergrendelingsproblemen.

2. Versie te oud voor JSON-extensies

JSON1-extensies vereisen SQLite 3.9.0 of nieuwer. Upgrade op Debian/Ubuntu:

sudo apt update && sudo apt upgrade sqlite3

3. Flatpak-installatie van Air SQLite Manager werkt niet

Als `flatpak install flathub com.gesturedevelop.AirSQLiteManager` faalt, controleer dan of Flatpak geconfigureerd is:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Voer daarna het installatiecommando opnieuw uit.

Achtergrond: waarom SQLite geen NoSQL is

SQLite is relationeel en gebruikt SQL. De term NoSQL verscheen voor het eerst in 1998, toen Carlo Strozzi een relationele database zonder SQL-interface zo noemde. In 2011 kondigde SQLite-ontwikkelaar D. Richard Hipp plannen aan voor een NoSQL-interface en UnQL, een superset van SQL voor documentdatabases. Die interface is nooit mainstream geworden in het officiële project. In de plaats daarvan biedt SQLite sinds versie 3.9.0 JSON1-extensies waarmee u JSON-documenten binnen relationele tabellen kunt opslaan en bevragen — een hybride aanpak die voor de meeste toepassingen volstaat.

SQLite is geschreven in C en draait in Firefox, Chrome, Android, iOS en talloze embedded systemen. De eerste versie verscheen in augustus 2000, ontwikkeld door D. Richard Hipp voor de United States Navy. De opslaglaag evolueerde van gdbm naar een eigen B-tree-structuur, waardoor SQLite onafhankelijk werd van externe bibliotheken. De merknaam SQLite werd in 2008 geregistreerd. Die combinatie van eenvoud, backward compatibility en een strikte focus op stabiliteit verklaart waarom SQLite al meer dan twee decennia standhoudt — en waarom de NoSQL-pogingen van 2011 weliswaar geen mainstream realiteit werden, maar de vragen die ze opriepen over de grens tussen relationeel en documentgebaseerd, nog steeds relevant zijn voor elke ontwikkelaar die een database kiest.

← Terug naar kennisbank
← Terug naar kennisbank