SQLite

Base de donnees SQL embarquee sans serveur - zero config, fichier unique, parfait pour apps mobiles et prototypes

TL;DR

Quoi : Un moteur de base de données SQL léger, sans serveur et autonome.

Pourquoi : Zéro configuration, fichier unique, parfait pour le stockage embarqué et local.

Quick Start

Installer :

macOS (pré-installé) / Linux :

brew install sqlite  # macOS
sudo apt install sqlite3  # Ubuntu

Créer une base de données :

sqlite3 myapp.db

Créer une table :

CREATE TABLE users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  email TEXT UNIQUE,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

Insérer et interroger :

INSERT INTO users (name, email) VALUES ('John', '[email protected]');
SELECT * FROM users;
.exit

Cheatsheet

CommandeDescription
sqlite3 file.dbOuvrir/créer base de données
.tablesLister les tables
.schema tableAfficher le schéma de table
.headers onAfficher les en-têtes de colonnes
.mode columnMode d’affichage en colonnes
.exitQuitter SQLite
.dumpExporter la base de données
.read file.sqlExécuter un fichier SQL

Gotchas

Type affinity

-- SQLite uses dynamic typing
-- These are all valid:
CREATE TABLE test (
  id INTEGER,      -- INT, BIGINT, etc. → INTEGER
  name TEXT,       -- VARCHAR, CHAR, etc. → TEXT
  price REAL,      -- FLOAT, DOUBLE → REAL
  data BLOB        -- Binary data
);

Auto-increment

-- INTEGER PRIMARY KEY auto-increments automatically
CREATE TABLE users (
  id INTEGER PRIMARY KEY,  -- Auto-increments
  name TEXT
);

-- Or explicitly
CREATE TABLE items (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT
);

Date/time functions

SELECT datetime('now');
SELECT date('now', '-1 day');
SELECT strftime('%Y-%m-%d', 'now');

CREATE TABLE events (
  created_at DATETIME DEFAULT (datetime('now'))
);

Backup database

# Copy the file
cp myapp.db myapp_backup.db

# Or use .dump
sqlite3 myapp.db .dump > backup.sql

Use in code

# Python
import sqlite3
conn = sqlite3.connect('myapp.db')
cursor = conn.execute('SELECT * FROM users')
// Node.js with better-sqlite3
const Database = require('better-sqlite3');
const db = new Database('myapp.db');
const rows = db.prepare('SELECT * FROM users').all();

Next Steps