SQLite

Base de datos SQL embebida sin servidor - cero config, archivo unico, ideal para apps moviles y prototipos

TL;DR

Qué: Un motor de base de datos SQL ligero, sin servidor y autónomo.

Por qué: Cero configuración, archivo único, perfecto para almacenamiento embebido y local.

Quick Start

Instalar:

macOS (preinstalado) / Linux:

brew install sqlite  # macOS
sudo apt install sqlite3  # Ubuntu

Crear base de datos:

sqlite3 myapp.db

Crear tabla:

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

Insertar y consultar:

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

Cheatsheet

ComandoDescripción
sqlite3 file.dbAbrir/crear base de datos
.tablesListar tablas
.schema tableMostrar esquema de tabla
.headers onMostrar encabezados de columnas
.mode columnModo de salida en columnas
.exitSalir de SQLite
.dumpExportar base de datos
.read file.sqlEjecutar archivo 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