SQLite3 constituye una base de datos ligera integrada que encuentra широкое применación en dispositivos móviles, sistemas embebidos y aplicaciones de pequeño tamaño. No requiere un proceso de servidor independiente, ya que almacena todos los datos en un único archivo de disco, lo cual facilita enormemente el despliegue y la gestión de aplicaciones. Esta guía te llevará a dominar completamente el uso básico de SQLite3, incluyendo la creación de bases de datos, operaciones con tablas, manipulación de datos (inserción, actualización, eliminación y consulta), así como el uso de índices y transacciones.
一、SQLite3简介
SQLite3 es una biblioteca escrita en C que proporciona un motor de base de datos SQL independiente, sin servidor, sin configuración previa y transaccional. Su objetivo principal son los entornos embebidos, aunque también resulta ideal para aplicaciones pequeñas y entornos de desarrollo y pruebas.
二、Instalación de SQLite3
En la mayoría de los sistemas operativos modernos, SQLite3 viene preinstalado. Si no está instalado, puedes hacerlo mediante el gestor de paquetes correspondiente:
- Ubuntu/Debian:
sudo apt-get install sqlite3
- macOS:
brew install sqlite
- Windows:
Descarga los archivos binarios precompilados desde el sitio oficial de SQLite.
三、Operaciones Básicas con SQLite3
3.1 Crear una Base de Datos
Una base de datos SQLite3 es fundamentalmente un archivo. Crear una base de datos equivale a crear un archivo nuevo.
sqlite3 bibliotecadb.sqlite
Este comando genera un archivo llamado bibliotecadb.sqlite y abre la herramienta interactiva de línea de comandos de SQLite3.
3.2 Crear Tablas
Se utiliza la instrucción SQL estándar para crear tablas. El siguiente ejemplo define una tabla llamada lectores con los campos identificador, nombre y correo.
CREATE TABLE lectores (
identificador INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL,
correo TEXT NOT NULL UNIQUE
);
3.3 Insertar Datos
La instrucción INSERT permite agregar nuevos registros a una tabla.
INSERT INTO lectores (nombre, correo) VALUES ('María', 'maria@ejemplo.com');
INSERT INTO lectores (nombre, correo) VALUES ('José', 'jose@ejemplo.com');
3.4 Consultar Datos
La instrucción SELECT permite recuperar información de las tablas.
SELECT * FROM lectores;
Para aplicar filtros en las consultas, se utiliza la cláusula WHERE.
SELECT * FROM lectores WHERE nombre = 'María';
3.5 Actualizar Datos
La instrucción UPDATE modifica los valores existentes en los registros.
UPDATE lectores SET correo = 'maria_nuevo@ejemplo.com' WHERE nombre = 'María';
3.6 Eliminar Datos
La instrucción DELETE remove registros de una tabla.
DELETE FROM lectores WHERE nombre = 'José';
3.7 Crear Índices
Los índices mejoran significativamente la velocidad de las consultas. Se crean mediante la instrucción CREATE INDEX.
CREATE INDEX idx_lectores_nombre ON lectores (nombre);
3.8 Utilizar Transacciones
Las transacciones garantizan que un conjunto de operaciones se ejecute completamente o no se ejecute ninguna, manteniendo la integridad de los datos. Se utiliza BEGIN TRANSACTION para iniciar, COMMIT para confirmar y ROLLBACK para deshacer.
BEGIN TRANSACTION;
INSERT INTO lectores (nombre, correo) VALUES ('Carlos', 'carlos@ejemplo.com');
UPDATE lectores SET correo = 'maria_nuevo@ejemplo.com' WHERE nombre = 'María';
COMMIT;
Si ocurre algún error durante la transacción, se puede utilizar ROLLBACK para revertirlaxml-style.
BEGIN TRANSACTION;
INSERT INTO lectores (nombre, correo) VALUES ('Diego', 'diego@ejemplo.com');
-- Suponiendo que esta operación falla
UPDATE lectores SET correo = 'error@ejemplo.com' WHERE nombre = 'Error';
ROLLBACK;
四、Funciones Avanzadas de SQLite3
4.1 Triggers
Los triggers son instrucciones SQL que se ejecutan automáticamente cuando ocurre un evento específico. Se crean mediante la instrucción CREATE TRIGGER.
CREATE TRIGGER trigger_actualizacion_lector
AFTER UPDATE ON lectores
BEGIN
INSERT INTO registros_auditoria (id_lector, accion) VALUES (NEW.identificador, 'ACTUALIZACION');
END;
4.2 Vistas
Las vistas son tablas virtuales definidas a partir del resultado de una consulta. Se crean con CREATE VIEW.
CREATE VIEW vista_correos_lectores AS
SELECT nombre, correo FROM lectores;
4.3 Consultas Parametrizadas
Al utilizar SQLite3 en aplicaciones, las consultas parametrizadas previenen ataques de inyección SQL.
import sqlite3
conexion = sqlite3.connect('bibliotecadb.sqlite')
cursor = conexion.cursor()
nombre_buscado = 'María'
cursor.execute("SELECT * FROM lectores WHERE nombre = ?", (nombre_buscado,))
print(cursor.fetchall())
conexion.close()
4.4 Importar y Exportar Datos
SQLite3 permite importar y exportar datos fácilmente. Se utiliza el comando .import para cargar archivos CSV y .dump para exportra el contenido de la base de datos.
sqlite3 bibliotecadb.sqlite
sqlite> .import datos.csv lectores
sqlite> .dump > respaldo.sql
五、Caso Práctico
5.1 Contexto del Proyecto
Supongamos que estamos desarrollando un sistema sederhana de gestión bibliotecaria, donde necesitamos almacenar información de libros y registros de préstamos.
5.2 Diseño de la Base de Datos
Necesitamos dos tablas: libros y registros_prestamo.
CREATE TABLE libros (
id INTEGER PRIMARY KEY AUTOINCREMENT,
titulo TEXT NOT NULL,
autor TEXT NOT NULL,
disponible INTEGER NOT NULL DEFAULT 1
);
CREATE TABLE registros_prestamo (
id INTEGER PRIMARY KEY AUTOINCREMENT,
id_libro INTEGER NOT NULL,
prestatario TEXT NOT NULL,
fecha_prestamo TEXT NOT NULL,
fecha_devolucion TEXT,
FOREIGN KEY (id_libro) REFERENCES libros(id)
);
5.3 Ejemplos de Operaciones
Insertar Datos de Libros
INSERT INTO libros (titulo, autor) VALUES ('Cien Años de Soledad', 'Gabriel García Márquez');
INSERT INTO libros (titulo, autor) VALUES ('El Principito', 'Antoine de Saint-Exupéry');