2.2 SQLite
SQLite es una de las bases de datos más desplegadas en el mundo.
La encontrarás en aplicaciones móviles, navegadores web, sistemas operativos y embebidos.
Es relacional, muy ligera y no requiere un servidor para funcionar, ya que almacena los datos en un único archivo.
- Pros:
- Muy ligera y rápida.
- No requiere instalación de servidor.
- Ideal para aplicaciones pequeñas y medianas.
- Soporta transacciones ACID.
- Escala bien para aplicaciones de escritorio y móviles.
- Contras:
- No es adecuada para aplicaciones de gran escala o con alta concurrencia.
- Carece de algunas características avanzadas de bases de datos más grandes (como PostgreSQL o MySQL).
- Si necesitas una base de datos distribuida o con alta disponibilidad, no es la mejor opción.
- Carece de soporte de un sistema de usuarios y permisos.
Instalación
En la mayoría de las distribuciones de Linux, SQLite ya viene instalado por defecto. Si no lo tienes, puedes instalarlo con:
Diferencias con otras bases de datos
Aunque usamos SQL como lenguaje de consulta, SQLite tiene algunas diferencias en cuanto a su DDL (Data Definition Language) y DML (Data Manipulation Language) en comparación con otras bases de datos como MySQL o PostgreSQL. Algunas de las diferencias más notables son:
- Tipos de datos: SQLite es más flexible con los tipos de datos. Por ejemplo, no requiere que declares un tipo de dato específico para una columna; puedes insertar cualquier tipo de dato en cualquier columna si no has especificado un tipo de dato.
- Autoincremento: En SQLite, puedes usar
INTEGER PRIMARY KEY AUTOINCREMENTpara crear una columna que se incremente automáticamente. No es necesario especificarAUTO_INCREMENTcomo en MySQL. - Funciones de agregación: Algunas funciones de agregación pueden comportarse de manera diferente. Por ejemplo, SQLite no soporta
GROUP BYcon columnas que no están en la lista de selección a menos que se useANY_VALUE(). - Vistas: Las vistas en SQLite son más simples y no soportan algunas características avanzadas que podrías encontrar en otras bases de datos, como las vistas materializadas.
REPL (Read-Eval-Print Loop)
Para iniciar el REPL de SQLite, simplemente ejecuta:
Esto abrirá una consola interactiva donde puedes ejecutar comandos SQL directamente.
Crear una base de datos
Para crear una nueva base de datos, simplemente especifica el nombre del archivo al iniciar SQLite:
Esto creará un archivo llamado mi_base_de_datos.db en el directorio actual y abrirá la consola de SQLite para interactuar con esa base de datos. A partir de este momento puedes lanzar algo como:
CREATE TABLE usuarios (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
password TEXT NOT NULL UNIQUE
);
INSERT INTO usuarios (name, password) VALUES ('admin', 'admin');
Crear una base de datos a partir de un .sql
Si tienes un archivo .sql con las instrucciones para crear una base de datos, puedes ejecutarlo directamente desde la línea de comandos:
Esto ejecutará todas las instrucciones SQL contenidas en script.sql sobre la base de datos mi_base_de_datos.db.
Consultar una base de datos
Puedes lanzar consultas sobre una base de datos sin necesidad de abrir el REPL:
Exportar una base de datos a un archivo .sql
Para exportar una base de datos a un archivo .sql, puedes usar el comando .dump dentro del REPL de SQLite:
Esto generará un archivo mi_base_de_datos.sql con todas las instrucciones SQL necesarias para recrear la base de datos.