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.