SQLite
# SQLite
**SQLite** es un sistema de gestión de bases de datos relacional (RDBMS) ligero, embebido y sin servidor, implementado como una biblioteca en C. Fue creado por D. Richard Hipp en el año 2000 y es de dominio público.
A diferencia de otros motores como MySQL o PostgreSQL, SQLite no utiliza arquitectura cliente-servidor, sino que funciona directamente dentro de la aplicación que lo usa.
---
## Características
- **Sin servidor (serverless)**: no requiere instalación ni configuración de un servicio.
- **Archivo único**: la base de datos completa se almacena en un solo archivo.
- **Ligero**: tamaño muy reducido.
- **Portable**: funciona en múltiples sistemas operativos sin cambios.
- **ACID**: garantiza atomicidad, consistencia, aislamiento y durabilidad.
- **Embebido**: se integra directamente en la aplicación.
- **Transaccional**: soporta transacciones completas.
- **Multiplataforma**: Windows, Linux, macOS, Android, iOS.
---
## Arquitectura
SQLite no sigue el modelo cliente-servidor:
- La aplicación accede directamente al archivo de base de datos.
- No hay procesos en segundo plano.
- Todo se maneja mediante llamadas a la biblioteca SQLite.
---
## Funcionamiento
SQLite ejecuta sentencias SQL estándar sobre un archivo local.
Operaciones principales:
- `CREATE`
- `INSERT`
- `SELECT`
- `UPDATE`
- `DELETE`
Ejemplo:
```sql
CREATE TABLE usuarios (
id INTEGER PRIMARY KEY,
nombre TEXT,
edad INTEGER
);
INSERT INTO usuarios (nombre, edad)
VALUES ('Juan', 25);
SELECT * FROM usuarios;
```
---
## Tipos de datos
SQLite usa tipado dinámico. Tipos principales:
- **NULL**
- **INTEGER**
- **REAL**
- **TEXT**
- **BLOB**
---
## Ventajas
- No requiere instalación
- Muy rápido en local
- Bajo consumo de recursos
- Fácil de transportar
- Ideal para apps pequeñas o embebidas
---
## Desventajas
- Concurrencia limitada
- No escala bien a sistemas grandes
- Sin gestión avanzada de usuarios
- Bloqueo de escritura a nivel de archivo
---
## Casos de uso
- Aplicaciones móviles
- Software de escritorio
- Sistemas embebidos / IoT
- Navegadores
- Prototipos
---
## Comparación
| Característica | SQLite | PostgreSQL / MySQL |
|--------------|--------|--------------------|
| Arquitectura | Embebida | Cliente-servidor |
| Instalación | No | Sí |
| Escalabilidad | Baja | Alta |
| Concurrencia | Limitada | Alta |
---
## Comandos útiles
- `.open archivo.db`
- `.tables`
- `.schema`
- `.exit`
---
## Seguridad
SQLite no tiene autenticación interna. Depende de:
- Permisos del sistema operativo
- Encriptación externa (ej: SQLCipher)
---
## Licencia
Dominio público. Uso libre sin restricciones.