SQLite
Instalación
sudo apt-get install sqlite3 libsqlite3-dev
Iniciar SQLite
sqlite3 basededatos.db
en windows: .open basededatos.db
Comando de Descripción
.show
Muestra los valores actuales de varios parámetros
.databases
Proporciona nombres de bases de datos y archivos
.quit
Salir del programa sqlite3
.tables
Mostrar tablas actuales
.schema
Pantalla de esquema de la tabla
.header ON
Mostrar (ON) u ocultar (OFF) el encabezado de la tabla de salida
.mode column
Selecciona el modo de la tabla de salida (csv, column o html)
.dump
Base de datos de volcado en formato de texto SQL
.index
Visualizar indices
Habilitar el manejo de Claves Foraneas
Para usar claves foraneas en SQLite, la biblioteca debe compilarse sin SQLITE_OMIT_FOREIGN_KEY ni SQLITE_OMIT_TRIGGER definidos. Si SQLITE_OMIT_TRIGGER está definido pero SQLITE_OMIT_FOREIGN_KEY no, entonces SQLite se comporta como lo hacía antes de la versión 3.6.19 (2009-10-14): las definiciones de clave foranea se analizan y se pueden consultar mediante PRAGMA Foreign_key_list , pero las restricciones de clave foranea no se aplican. El comando PRAGMA Foreign_keys no funciona en esta configuración.
Si se define OMIT_FOREIGN_KEY, las definiciones de clave foranea ni siquiera se pueden analizar (intentar especificar una definición de clave foranea es un error de sintaxis).
Suponiendo que la biblioteca se compila con restricciones de clave foranea habilitadas, la aplicación aún debe habilitarla en tiempo de ejecución, utilizando el comando PRAGMA Foreign_keys .
PRAGMA foreign_keys = ON;
Las restricciones de clave foranea están deshabilitadas de forma predeterminada (para compatibilidad con versiones anteriores), por lo que deben habilitarse por separado para cada conexión de base de datos . (Tenga en cuenta, sin embargo, que las versiones futuras de SQLite pueden cambiar para que las restricciones de clave foranea estén habilitadas de forma predeterminada. Los desarrolladores cuidadosos no harán suposiciones sobre si las claves foraneas están habilitadas de forma predeterminada, sino que las habilitarán o deshabilitarán según sea necesario). La aplicación también puede usar una instrucción PRAGMA Foreign_keys para determinar si las claves foraneas están habilitadas actualmente. La siguiente sesión de línea de comandos demuestra esto:
sqlite> PRAGMA foreign_keys;
0
sqlite> PRAGMA foreign_keys = ON;
sqlite> PRAGMA foreign_keys;
1
sqlite> PRAGMA foreign_keys = OFF;
sqlite> PRAGMA foreign_keys;
0
Sugerencia: si el comando "PRAGMA Foreign_keys" no devuelve datos en lugar de una sola fila que contiene "0" o "1", entonces la versión de SQLite que está utilizando no admite claves foraneas (ya sea porque es anterior a 3.6.19 o porque fue compilado con SQLITE_OMIT_FOREIGN_KEY o SQLITE_OMIT_TRIGGER definido).
No es posible habilitar o deshabilitar restricciones de clave foranea en medio de una transacción de declaración múltiple (cuando SQLite no está en modo de confirmación automática ). Intentar hacerlo no devuelve un error; simplemente no tiene ningún efecto.
Conocer Tipos de datos tabla
PRAGMA table_info(NOMBRE_TABLA);
Por ejemplo:
sqlite> PRAGMA table_info(a);
cid name type notnull dflt_value pk
--- ------ ---- ------- ---------- --
0 run INT 0 1
1 nombre INT 0 0
Tablas estrictas
SQLite usa un sistema de tipo dinámico más general. En SQLite, el tipo de datos de un valor está asociado con el valor en sí, no con su contenedor. El sistema de tipos dinámicos de SQLite es retrocompatible con los sistemas de tipos estáticos más comunes de otros motores de bases de datos en el sentido de que las instrucciones SQL que funcionan en bases de datos de tipos estáticos funcionan de la misma manera en SQLite. Sin embargo, la tipificación dinámica en SQLite le permite hacer cosas que no son posibles en las bases de datos tradicionales de tipificación rígida.
create table e(numero);
a partir de la versión 3.37.0 (2021-11-27), SQLite proporciona tablas ESTRICTAS que aplican tipos rígidos.
create table e(numero int) strict;
Mostrar tablas con atributos y con columnas de datos
Las siguientes instrucciones deben hacerse cada vez que se inicia sqlite.
.mode column
Organiza las columnas con tabulaciones
.header ON
Presenta en la primera fila el nombre de los atributos
Indices
Los indices por defecto son implementados en un B-Tree.
CREATE [UNIQUE] INDEX index_name ON table_name(column_list);
(No) se puede hacer en SQLITE
alter table add constraint check
Desde la versión 3.24 no es posible añadir check posterior a crear la tabla, deben ser creados junto a las tablas.
ALTER TABLE DROP COLUMN
Desde la versión 3.35
ALTER TABLE RENAME COLUMN
Desde la versión 3.25
ALTER TABLE ADD COLUMN
Desde la versión 3.2.