Kennisbank › Sqlite Nosql › SQLite : moteur de base de données embarqué sans serveur
sqlite nosql starter 31 August 2026

SQLite : moteur de base de données embarqué sans serveur

SQLite : moteur de base de données embarqué sans serveur

sqlite3 --version

Si vous voyez un numéro de version comme `3.40.1`, SQLite est déjà installé et vous pouvez passer à l’étape 3.

2. Installez SQLite

Sur Debian/Ubuntu :

sudo apt update && sudo apt install sqlite3

Sur Fedora/RHEL :

sudo dnf install sqlite

Cela installe l’outil en ligne de commande `sqlite3` avec la bibliothèque sous-jacente.

3. Créez une base de données

SQLite stocke une base de données complète — tables, index, déclencheurs et données — dans un seul fichier. Créez une nouvelle base de données avec :

sqlite3 mydata.db

Cette commande ouvre un shell SQL interactif et crée le fichier `mydata.db`. Si le fichier existe déjà, SQLite ouvre le fichier existant.

4. Créez une table et ajoutez des données

Dans le shell SQLite, exécutez les commandes SQL suivantes :

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');

La première ligne crée une table avec trois colonnes. Les deux lignes suivantes ajoutent des rangées. SQLite prend en charge les types SQL standard : `INTEGER`, `TEXT`, `REAL`, `BLOB` et `NULL`.

5. Quittez le shell SQLite

Tapez `.exit` pour fermer le shell interactif :

.exit

Le fichier de base de données `mydata.db` est maintenant sur le disque. Vous pouvez le copier, l’envoyer par courriel ou le placer sous gestion de versions Git — c’est un seul fichier.

6. Interrogez la base de données sans shell interactif

Vous pouvez aussi exécuter des commandes SQL directement depuis la ligne de commande :

sqlite3 mydata.db "SELECT * FROM users;"

Cela affiche toutes les rangées de la table `users`. Cette méthode est pratique pour les scripts et les tâches automatisées.

7. Utilisez les extensions JSON pour les données de type document

SQLite prend en charge les extensions JSON1 depuis la version 3.9.0. Cela permet de stocker et d’interroger des données JSON dans des tables relationnelles :

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;"

Cela combine la structure relationnelle avec la flexibilité des bases de données documentaires — sans avoir besoin d’un serveur NoSQL séparé.

8. Comparez les bases de données avec sqldiff

SQLite fournit un utilitaire `sqldiff` qui affiche la différence entre deux fichiers de base de données :

sqldiff mydata.db mydata_backup.db

Cela génère un script SQL qui transforme une base de données en l’autre. Utile pour les migrations et le débogage des modifications de schéma.

Vérification

Vérifiez que votre base de données fonctionne correctement :

sqlite3 mydata.db "PRAGMA integrity_check;"

Cette commande doit renvoyer `ok`. Vérifiez ensuite la structure de la table :

sqlite3 mydata.db ".schema"

Cela affiche les instructions CREATE TABLE de toutes les tables de la base de données.

Problèmes fréquents

1. Base de données verrouillée (database is locked)

SQLite n’autorise qu’un seul rédacteur à la fois. Si vous rencontrez ce problème, utilisez le mode WAL :

sqlite3 mydata.db "PRAGMA journal_mode=WAL;"

Cela permet la lecture et l’écriture simultanées et réduit les problèmes de verrouillage.

2. Version trop ancienne pour les extensions JSON

Les extensions JSON1 nécessitent SQLite 3.9.0 ou plus récent. Mettez à niveau sur Debian/Ubuntu :

sudo apt update && sudo apt upgrade sqlite3

3. L’installation Flatpak d’Air SQLite Manager ne fonctionne pas

Si `flatpak install flathub com.gesturedevelop.AirSQLiteManager` échoue, vérifiez que Flatpak est configuré :

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

Exécutez ensuite la commande d’installation à nouveau.

Contexte : pourquoi SQLite n’est pas du NoSQL

SQLite est relationnel et utilise SQL. Le terme NoSQL est apparu pour la première fois en 1998, quand Carlo Strozzi a ainsi nommé une base de données relationnelle sans interface SQL. En 2011, le développeur de SQLite, D. Richard Hipp, a annoncé des plans pour une interface NoSQL et UnQL, un sur-ensemble de SQL pour les bases de données documentaires. Cette interface n’est jamais devenue courante dans le projet officiel. À la place, SQLite propose depuis la version 3.9.0 les extensions JSON1 qui permettent de stocker et d’interroger des documents JSON dans des tables relationnelles — une approche hybride qui suffit pour la plupart des applications.

SQLite est écrit en C et tourne dans Firefox, Chrome, Android, iOS et d’innombrables systèmes embarqués. La première version est apparue en août 2000, développée par D. Richard Hipp pour l’United States Navy. La couche de stockage a évolué de gdbm vers une structure B-tree propre, ce qui a rendu SQLite indépendant des bibliothèques externes. La marque SQLite a été enregistrée en 2008. Cette combinaison de simplicité, de compatibilité ascendante et d’un strict accent sur la stabilité explique pourquoi SQLite tient depuis plus de deux décennies — et pourquoi les tentatives NoSQL de 2011 ne sont certes pas devenues une réalité mainstream, mais les questions qu’elles soulevaient sur la frontière entre relationnel et documentaire restent toujours pertinentes pour tout développeur qui choisit une base de données.

← Retour à la base de connaissances
← Terug naar kennisbank