SQLite es un sistema de base de datos relacional contenida en una biblioteca desarrollada en C, que se integra en la aplicación que la utiliza con lo que es un proceso integrado, sin servidor, sin configuración, con un motor de base de datos SQL con soporte para transacciones de base de datos atómicas (ACID acrónimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad), su código es de dominio público y libre para el uso para cualquier propósito, comercial o privado.
SQLite
SQLite tiene incorporado un motor de base de datos SQL que no tiene un proceso de servidor independiente como pueden tener PostgreSQL o MySQL por ejemplo.
Así SQLite lee y escribe directamente en archivos de disco ordinarios, el contenido de una base de datos se almacena en un solo archivo de disco multiplataforma, lo que le proporciona una gran versatilidad. En su funcionamiento hay un equilibrio entre el uso de memoria y velocidad, a más memoria más rapidez de ejecución, y tiene un rendimiento óptimo incluso en entornos con poca memoria.
Las funcionalidades y capacidades de SQLite se actualizan continuamente para mejorar su fiabilidad y rendimiento al tiempo que mantiene la compatibilidad con la especificación publicada interfaz, la sintaxis SQL, y el formato de archivo de base de datos.
A continuación, explicamos la instalación, el funcionamiento y el desarrollo de una base de datos con SQLite desarrollando un proyecto y aprendiendo con ejemplos, esto lo hacemos desarrollando el proyecto Learning Project:
- EL PROYECTO
- PREPARACIÓN DEL ENTORNO
- CREACIÓN DE LA BASE DE DATOS
- CREACIÓN DE UNA TABLA cb_language
- POBLACIÓN DE DATOS Y CONSULTAS EN cb_language
- INSTALACIÓN DEL ENTORNO GRÁFICO SQLITEMAN
- DOCUMENTACIÓN
1. EL PROYECTO
Creamos un proyecto con la base de datos SQLite para aprender su funcionamiento y para comparar sus limitaciones y usos adecuados en comparación con otras bases de datos..
Definición del proyecto
Proyecto básico de administración de clientes para diferentes empresas, cada empresa podrá tener múltiples clientes, para el caso de estudio se plantea que ambas entidades tengan los campos básicos y direcciones que podrán ser una o varias. Este desarrollo se encuentra dentro de mi proyecto personal Learning Project ahí tienes más detalles del proyecto y su finalidad, se realizan implementaciones del mismo proyecto con diferentes bases de datos y desarrollos de aplicaciones para comparar y aprender con agilidad.
Esquema SQL
Para este proyecto se implementan 8 tablas básicas que se explican a continuación:
Learning Project
|
||
TABLA
|
DESCRIPCIÓN
|
CARACTERÍSTICAS DE DISEÑO
|
cb_enterprise
|
Empresas de la aplicación, cada empresa tendrá sus clientes.
|
Las empresas tendrán definido inicialmente: idioma, país y moneda, así como otros campos básicos propios.
|
cb_customer
|
Tabla general de cliente, donde se almacenarán los clientes de las diferentes empresas.
|
Tendrán definido inicialmente: idioma, país, direcciones, empresas, métodos de pago y moneda, así como otros campos básicos propios.
|
cb_addresses
|
Tabla de registro de las direcciones, se asocian aquí las direcciones que tienen un cliente.
|
Registro para asociar las direcciones al cliente, cada cliente tendrá un número ilimitado de direcciones con cb_address relacionado mediante cb_addresses (es básicamente una tabla relacional)
|
cb_address
|
Tabla de dirección donde se guardan los datos de la dirección en sí.
|
Tabla de dirección que tendrá los campos generales de una dirección, así como números de teléfono, transportista y tipos de dirección.
|
cb_language
|
Tabla con los idiomas registrados en la aplicación, se podrá relacionar con múltiples tablas.
|
|
cb_currency
|
Tabla con las monedas registradas en la aplicación, se podrá relacionar con múltiples tablas.
|
|
cb_country
|
Tabla con los países registrados en la aplicación, se podrá relacionar con múltiples tablas.
|
Para cada país se especificará la moneda y el idioma utilizado por defecto.
|
cb_paymentmethod
|
Métodos de pago definidos para el cliente u otras entidades.
|
A continuación, una imagen con el el Esquema E-R de Customerdb donde se muestran las relaciones reales de la base de datos, con los nombres de las claves foráneas, …
2. PREPARACIÓN DEL ENTORNO
Instalación de SQLite
Para la instalación de SQLite podemos acceder a la zona de descargas de la base de datos Download SQLite, es sencillo y tienes versiones ya precompiladas para Linux, Mac y Windows. En mi caso para la elaboración de este tutorial estoy usando Ubuntu así que detallaré su instalación en este sistema operativo.
En Ubuntu tenemos una instalación de SQLite en la propia distribución por defecto, usamos el comando apt-get para instalarlo, simplemente ejecuta en un terminal:
sudo apt-get install sqlite3 libsqlite3-dev
Este repositorio incluye todo lo que necesitamos para este proyecto:
- sqlite3 : es un frontend basado en terminal a la librería SQLite que puede evaluar las consultas de forma interactiva y mostrar los resultados en múltiples, también se puede utilizar dentro de scripts de shell y otras aplicaciones.
- libsqlite3-dev: SQLite 3 development files
Puesta en marcha básica de la base de datos
Como ya explicamos anteriormente SQLite tiene incorporado un motor de base de datos SQL que no tiene un proceso de servidor independiente, así que no necesitamos hacer ninguna instalación adicional ni puesta en marcha.
Ahora simplemente podemos crear una base de datos de prueba utilizando sqlite3 desde el terminal para comprobar que está funcionando correctamente:
sqlite3 prueba.db
Una vez hecho esto accedemos a sqlite> donde ya podemos crear nuestras tablas y poblarlas de datos.
3. CREACIÓN DE LA BASE DE DATOS
Creamos la base de datos para nuestro ejemplo en nuestra consola ejecutamos sqlite3 customerdb.db, este será el resultado:
xules@cxubuntuserver:~$ sqlite3 customerdb.db SQLite version 3.8.11.1 2015-07-29 20:00:57 Enter ".help" for usage hints. sqlite>
Ten en cuenta que al ejecutar este comando debes escoger previamente la ruta donde quieres almacenar la base de datos ya que lo que estamos creando es un archivo SQLite que una vez generado con este comando lo puedes ver en el directorio directamente.
4. CREACIÓN DE UNA TABLA cb_language
Empezaremos el desarrollo del proyecto Learning Project con el desarrollo de la tabla cb_language, durante el cual aprovecharemos para comentar la sintaxis SQL y especificar algunas cosas que no podemos hacer en SQLite y si en otras bases de datos relacionales.
El código que necesario para crear la primera tabla es el siguiente:
CREATE TABLE cb_language ( idlanguage VARCHAR(6) NOT NULL, namelanguage VARCHAR(60) NOT NULL, isactive VARCHAR(1) NOT NULL DEFAULT 'N', languageiso VARCHAR(2), countrycode VARCHAR(2), isbaselanguage VARCHAR(1) NOT NULL DEFAULT 'N', issystemlanguage VARCHAR(1) NOT NULL DEFAULT 'N', CONSTRAINT pk_cb_language PRIMARY KEY (idlanguage), CONSTRAINT u_cb_language_namelanguage UNIQUE (namelanguage) );
Veamos ahora su significado, definimos la tabla cb_language utilizando la sintaxis SQL general puedes consultar la documentación en SQLite CREATE TABLE:
CREATE TABLE cb_language ( ... );
Primeros pasos con SQLite con ejemplos sencillos
Usamos el proyecto base Learning Project para ir aprendiendo el funcionamiento de SQLite y SQL de forma fácil
Clave Primaria (Primary Key)
Vamos a definir como clave primaria (primary key) el campo idlanguage, no utilizamos un tipo serial (generación automática de un contador único), sino que como clave primaria usamos la codificación del idioma i18n e i10n, las principales: es_ES y en_EN, que serán las que se usarán por defecto.
Una clave primaria (primary key) es un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla, es decir, comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
La estructura para definir la clave primaria es la siguiente tal y como la utilizamos en la creación de nuestra tabla:
CONSTRAINT nombre_pk PRIMARY KEY (campo_pk)
Clave Única(Unique Key)
La estructura para definir una clave única es la siguiente tal y como la utilizamos en la creación de nuestra tabla:
CONSTRAINT nombre_clave_unica UNIQUE(campo_unico)
Con esto nos aseguramos que en ese campo no estará repetido en otro registro de la tabla, esto lo utilizamos con campos que no forman parte de la clave primaria pero que igualmente necesitamos que sean únicos por registro.
Tipos de datos
Los tipos de datos en SQLITE se agrupan por afinidad en 5 tipos de datos básicos que puedes consultar en Datatypes In SQLite Version 3 y son estos:
- TEXT: variable de tipo texto que se almacena en formato UTF, aquí tenemos agrupados los diferentes tipos de datos SQL para las variables de texto: CHARACTER(20), VARCHAR(255), VARYING CHARACTER(255), NCHAR(55), NATIVE CHARACTER(70), NVARCHAR(100), TEXT y CLOB.
- NUMERIC: NUMERIC, DECIMAL(10,5), BOOLEAN, DATE y DATETIME
- INTEGER: es un entero con signo que se almacena con un longitud que va en función del tipo de dato definido: INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT, UNSIGNED BIG INT, INT2 y INT8
- REAL: es un dato de tipo float, sus diferentes versiones variarán en la precisión: REAL, DOUBLE, DOUBLE PRECISION y FLOAT
- BLOB: los datos se almacean en el mismo formato en que se introducen.
En nuestro ejemplo de tabla inicial solo hemos utilizado un tipo de datos VARCHAR(255) para definir las diferentes columnas por ejemplo:
namelanguage VARCHAR(60) NOT NULL, isactive VARCHAR(1) NOT NULL DEFAULT 'N',
Como puedes ver en el código hemos añadido unas especificaciones a la creación de la columna:
- NOT NULL: para indicar que la columna siempre tiene que tener un valor, y este no puede ser NULL
- DEFAULT: en SQL podemos definir un valor por defecto para una columna que se introduce si al crear un nuevo registro este valor no se pasa.
5. POBLACIÓN DE DATOS Y CONSULTAS EN cb_language
Para finalizar la comprobación de la tabla que hemos creado vamos a hacer una pequeña inserción de datos en la tabla y una consulta sobre la misma para cerciorarnos del éxito.
Población de datos: INSERT
Para añadir nuevos registros a una tabla de una base de datos relacional usamos la sentencia SQL: INSERT. Este comando tiene varias formas de utilización como puedes comprobar en la documentación de SQLITE – INSERT como explicaré con ejemplos en una publicación posterior.
Ahora usamos el comando INSERT detallando todas las columnas de la tabla y a continuación los valores, esta es la sintaxis:
INSERT INTO nombre_de_la_tabla ( nombre_de_la_columna [, ...] ) VALUES (valor_de_la_columna [, ...] )
Así, para nuestro ejemplo y utilizando las sintaxis de INSERT podemos añadir las siguientes columnas:
INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('da_DK', 'Y', 'Danish (Denmark)', 'da', 'DK', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('de_AT', 'Y', 'German (Austria)', 'de', 'AT', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('de_DE', 'Y', 'German (Germany)', 'de', 'DE', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('en_GB', 'Y', 'English (United Kingdom)', 'en', 'GB', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('en_IE', 'Y', 'English (Ireland)', 'en', 'IE', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('es_AR', 'Y', 'Spanish (Argentina)', 'es', 'AR', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('es_UY', 'Y', 'Spanish (Uruguay)', 'es', 'UY', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('es_ES', 'Y', 'Spanish (Spain)', 'es', 'ES', 'N', 'N' );
Listo, ya tenemos nuestros datos introducidos en la tabla, ten en cuenta al añadir nuevos INSERT que si los cargas todos seguidos los debes separar con ; ya que para cada uno se realiza una ejecución.
Consulta: SELECT
Ahora vamos a mostrar los datos por nuestra consola para ello usamos el comando SELECT, esta es la sintaxis básica SQL:
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ ORDER BY expression [ ASC | DESC ]
- SELECT FROM WHERE ORDER BY: las cláusulas SQL SELECT y SQL FROM son el ABC de las consultas de bases de datos, con estas dos cláusulas podemos listar los datos de cualquier tabla.
- SELECT: con él indicamos que campos queremos mostrar separándolos por comas, para mostrar todos los campos de una tabla usamos el símbolo *.
- FROM: aquí indicamos las tabla o tablas que vamos a consultar, y por lo tanto, obtener los datos.
Así, para nuestra consulta de comprobación usamos las clausulas SELECT y FROM:
SELECT * FROM cb_language;
Esta consulta la introducimos en nuestra aplicación sqlite3 y los resultados se mostrarán por consola de la siguiente manera:
sqlite> SELECT * FROM cb_language; da_DK|Danish (Denmark)|Y|da|DK|N|N de_AT|German (Austria)|Y|de|AT|N|N de_DE|German (Germany)|Y|de|DE|N|N en_GB|English (United Kingdom)|Y|en|GB|N|N en_IE|English (Ireland)|Y|en|IE|N|N es_AR|Spanish (Argentina)|Y|es|AR|N|N es_UY|Spanish (Uruguay)|Y|es|UY|N|N es_ES|Spanish (Spain)|Y|es|ES|N|N
6. INSTALACIÓN DEL ENTORNO GRÁFICO SQLITEMAN
Como herramienta gráfica voy a instalar un entorno sencillo y fácil de usar con SQLiteman, en el enlace a la web del desarrollo puedes ver las versiones disponibles para distintos sistemas operativos es sencillo de instalar, la instalación que yo utilizo es para Ubuntu para su instalación simplemente ejecuta:
Ahora vamos a abrir la base de datos que hemos creado, para eso hemos de saber donde la hemos ubicado y abrirla con SQLiteman tal y como se indica en la imagen:

SQLITEMAN – Open Database
Una vez abierta la base de datos en el programa podemos ver en el árbol de tablas el contenido y la definición de la tabla que hemos creado:

SQLiteman Database -Customerdb tabla cb_language
En la ventana superior izquierda podemos ejecutar consultas SQL que se mostrarán en el programa, coge la consulta utilizada antes por ejemplo, y ejecútala en el programa el resultado será el que puedes ver en la imagen:

SQLiteman Database – Consulta sobre cb_language
Por último, también tenemos una visualización de los SQLite Pragmas

SQLiteman – Pragmas
Los Pragmas son una extensión SQL específica para SQLite y se utiliza para modificar el funcionamiento de la biblioteca SQLite o para consultar la biblioteca SQLite para obtener datos internos. La declaración PRAGMA se crea utilizando la misma interfaz que otros comandos SQLite como SELECT o INSERT aunque como es evidente difiere en otros aspectos importantes.
Documentación SQLite con ejemplos
- SQLite: web oficial del proyecto de la base de datos
- SQLite Download: página de descargas e instalación de SQLite
- SQLite Pragmas: son una extensión SQL específica para SQLite y se utiliza para modificar el funcionamiento de la biblioteca SQLite o para consultar la biblioteca SQLite para obtener datos internos, en este enlace tienes toda la información.
- SQLiteman: web de la aplicación que nos proporciona un entorno gráfico sencillo y fácil de usar con SQLite.
Primeros pasos con SQLite con ejemplos sencillos
Espero que te haya sido útil esta introducción a SQLite, si es así compártela, gracias.
This publication is currently being translated into English, will be available as soon as possible
SQLite is a database system contained relational database in a library developed in C, hich is integrated into the application using it with what is an integrated process, serverless, zero-configuration, with an engine SQL database with support for atomic database transaction data (ACID acronym for Atomicity, Consistency, Isolation and Durability), its code is public domain and free for use for any purpose, commercial or private.
SQLite
SQLite has a built-engine SQL database does not have a separate server process as PostgreSQL or MySQL can have for example.
So SQLite reads and writes directly to ordinary disk files, the contents of a database is stored in a single file multiplatform disk,which provides great versatility. In performance there is a balance between memory usage and speed, more memory faster execution, and has an optimum performance even in low memory.
The features and capabilities of SQLite are continually updated to improve reliability and performance while maintaining compatibility with the published interface specification, SQL syntax, and file format database.
Then we explain the installation, operation and development of a database with SQLite developing a project and learning from examples, we do this by developing the project Learning Project:
- THE PROJECT
- PREPARACIÓN DEL ENTORNO
- CREACIÓN DE LA BASE DE DATOS
- CREACIÓN DE UNA TABLA cb_language
- POBLACIÓN DE DATOS Y CONSULTAS EN cb_language
- INSTALACIÓN DEL ENTORNO GRÁFICO SQLITEMAN
- DOCUMENTACIÓN
1. THE PROJECT
We create a project with the SQLite database to learn its operation and to compare their limitations and appropriate uses compared with other databases.
Project definition
Basic project client management for different companies, each company may have multiple customers, for the case study suggests that both entities have the basic fields and addresses that may be one or more. This development is within my personal project Learning Project there you have more details of the project and its purpose, the same project implementations are made with different databases and application development to compare and learn with agility.
SQL Schema
For this project 8 basic tables are implemented, which are explained below
Learning Project
|
||
TABLA
|
DESCRIPCIÓN
|
CARACTERÍSTICAS DE DISEÑO
|
cb_enterprise
|
Empresas de la aplicación, cada empresa tendrá sus clientes.
|
Las empresas tendrán definido inicialmente: idioma, país y moneda, así como otros campos básicos propios.
|
cb_customer
|
Tabla general de cliente, donde se almacenarán los clientes de las diferentes empresas.
|
Tendrán definido inicialmente: idioma, país, direcciones, empresas, métodos de pago y moneda, así como otros campos básicos propios.
|
cb_addresses
|
Tabla de registro de las direcciones, se asocian aquí las direcciones que tienen un cliente.
|
Registro para asociar las direcciones al cliente, cada cliente tendrá un número ilimitado de direcciones con cb_address relacionado mediante cb_addresses (es básicamente una tabla relacional)
|
cb_address
|
Tabla de dirección donde se guardan los datos de la dirección en sí.
|
Tabla de dirección que tendrá los campos generales de una dirección, así como números de teléfono, transportista y tipos de dirección.
|
cb_language
|
Tabla con los idiomas registrados en la aplicación, se podrá relacionar con múltiples tablas.
|
|
cb_currency
|
Tabla con las monedas registradas en la aplicación, se podrá relacionar con múltiples tablas.
|
|
cb_country
|
Tabla con los países registrados en la aplicación, se podrá relacionar con múltiples tablas.
|
Para cada país se especificará la moneda y el idioma utilizado por defecto.
|
cb_paymentmethod
|
Métodos de pago definidos para el cliente u otras entidades.
|
A continuación, una imagen con el el Esquema E-R de Customerdb donde se muestran las relaciones reales de la base de datos, con los nombres de las claves foráneas, …
2. PREPARACIÓN DEL ENTORNO
Instalación de SQLite
Para la instalación de SQLite podemos acceder a la zona de descargas de la base de datos Download SQLite, es sencillo y tienes versiones ya precompiladas para Linux, Mac y Windows. En mi caso para la elaboración de este tutorial estoy usando Ubuntu así que detallaré su instalación en este sistema operativo.
En Ubuntu tenemos una instalación de SQLite en la propia distribución por defecto, usamos el comando apt-get para instalarlo, simplemente ejecuta en un terminal:
sudo apt-get install sqlite3 libsqlite3-dev
Este repositorio incluye todo lo que necesitamos para este proyecto:
- sqlite3 : es un frontend basado en terminal a la librería SQLite que puede evaluar las consultas de forma interactiva y mostrar los resultados en múltiples, también se puede utilizar dentro de scripts de shell y otras aplicaciones.
- libsqlite3-dev: SQLite 3 development files
Puesta en marcha básica de la base de datos
Como ya explicamos anteriormente SQLite tiene incorporado un motor de base de datos SQL que no tiene un proceso de servidor independiente, así que no necesitamos hacer ninguna instalación adicional ni puesta en marcha.
Ahora simplemente podemos crear una base de datos de prueba utilizando sqlite3 desde el terminal para comprobar que está funcionando correctamente:
sqlite3 prueba.db
Una vez hecho esto accedemos a sqlite> donde ya podemos crear nuestras tablas y poblarlas de datos.
3. CREACIÓN DE LA BASE DE DATOS
Creamos la base de datos para nuestro ejemplo en nuestra consola ejecutamos sqlite3 customerdb.db, este será el resultado:
xules@cxubuntuserver:~$ sqlite3 customerdb.db SQLite version 3.8.11.1 2015-07-29 20:00:57 Enter ".help" for usage hints. sqlite>
Ten en cuenta que al ejecutar este comando debes escoger previamente la ruta donde quieres almacenar la base de datos ya que lo que estamos creando es un archivo SQLite que una vez generado con este comando lo puedes ver en el directorio directamente.
4. CREACIÓN DE UNA TABLA cb_language
Empezaremos el desarrollo del proyecto Learning Project con el desarrollo de la tabla cb_language, durante el cual aprovecharemos para comentar la sintaxis SQL y especificar algunas cosas que no podemos hacer en SQLite y si en otras bases de datos relacionales.
El código que necesario para crear la primera tabla es el siguiente:
CREATE TABLE cb_language ( idlanguage VARCHAR(6) NOT NULL, namelanguage VARCHAR(60) NOT NULL, isactive VARCHAR(1) NOT NULL DEFAULT 'N', languageiso VARCHAR(2), countrycode VARCHAR(2), isbaselanguage VARCHAR(1) NOT NULL DEFAULT 'N', issystemlanguage VARCHAR(1) NOT NULL DEFAULT 'N', CONSTRAINT pk_cb_language PRIMARY KEY (idlanguage), CONSTRAINT u_cb_language_namelanguage UNIQUE (namelanguage) );
Veamos ahora su significado, definimos la tabla cb_language utilizando la sintaxis SQL general puedes consultar la documentación en SQLite CREATE TABLE:
CREATE TABLE cb_language ( ... );
Primeros pasos con SQLite con ejemplos sencillos
Usamos el proyecto base Learning Project para ir aprendiendo el funcionamiento de SQLite y SQL de forma fácil
Clave Primaria (Primary Key)
Vamos a definir como clave primaria (primary key) el campo idlanguage, no utilizamos un tipo serial (generación automática de un contador único), sino que como clave primaria usamos la codificación del idioma i18n e i10n, las principales: es_ES y en_EN, que serán las que se usarán por defecto.
Una clave primaria (primary key) es un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla, es decir, comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
La estructura para definir la clave primaria es la siguiente tal y como la utilizamos en la creación de nuestra tabla:
CONSTRAINT nombre_pk PRIMARY KEY (campo_pk)
Clave Única(Unique Key)
La estructura para definir una clave única es la siguiente tal y como la utilizamos en la creación de nuestra tabla:
CONSTRAINT nombre_clave_unica UNIQUE(campo_unico)
Con esto nos aseguramos que en ese campo no estará repetido en otro registro de la tabla, esto lo utilizamos con campos que no forman parte de la clave primaria pero que igualmente necesitamos que sean únicos por registro.
Tipos de datos
Los tipos de datos en SQLITE se agrupan por afinidad en 5 tipos de datos básicos que puedes consultar en Datatypes In SQLite Version 3 y son estos:
- TEXT: variable de tipo texto que se almacena en formato UTF, aquí tenemos agrupados los diferentes tipos de datos SQL para las variables de texto: CHARACTER(20), VARCHAR(255), VARYING CHARACTER(255), NCHAR(55), NATIVE CHARACTER(70), NVARCHAR(100), TEXT y CLOB.
- NUMERIC: NUMERIC, DECIMAL(10,5), BOOLEAN, DATE y DATETIME
- INTEGER: es un entero con signo que se almacena con un longitud que va en función del tipo de dato definido: INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT, UNSIGNED BIG INT, INT2 y INT8
- REAL: es un dato de tipo float, sus diferentes versiones variarán en la precisión: REAL, DOUBLE, DOUBLE PRECISION y FLOAT
- BLOB: los datos se almacean en el mismo formato en que se introducen.
En nuestro ejemplo de tabla inicial solo hemos utilizado un tipo de datos VARCHAR(255) para definir las diferentes columnas por ejemplo:
namelanguage VARCHAR(60) NOT NULL, isactive VARCHAR(1) NOT NULL DEFAULT 'N',
Como puedes ver en el código hemos añadido unas especificaciones a la creación de la columna:
- NOT NULL: para indicar que la columna siempre tiene que tener un valor, y este no puede ser NULL
- DEFAULT: en SQL podemos definir un valor por defecto para una columna que se introduce si al crear un nuevo registro este valor no se pasa.
5. POBLACIÓN DE DATOS Y CONSULTAS EN cb_language
Para finalizar la comprobación de la tabla que hemos creado vamos a hacer una pequeña inserción de datos en la tabla y una consulta sobre la misma para cerciorarnos del éxito.
Población de datos: INSERT
Para añadir nuevos registros a una tabla de una base de datos relacional usamos la sentencia SQL: INSERT. Este comando tiene varias formas de utilización como puedes comprobar en la documentación de SQLITE – INSERT como explicaré con ejemplos en una publicación posterior.
Ahora usamos el comando INSERT detallando todas las columnas de la tabla y a continuación los valores, esta es la sintaxis:
INSERT INTO nombre_de_la_tabla ( nombre_de_la_columna [, ...] ) VALUES (valor_de_la_columna [, ...] )
Así, para nuestro ejemplo y utilizando las sintaxis de INSERT podemos añadir las siguientes columnas:
INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('da_DK', 'Y', 'Danish (Denmark)', 'da', 'DK', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('de_AT', 'Y', 'German (Austria)', 'de', 'AT', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('de_DE', 'Y', 'German (Germany)', 'de', 'DE', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('en_GB', 'Y', 'English (United Kingdom)', 'en', 'GB', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('en_IE', 'Y', 'English (Ireland)', 'en', 'IE', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('es_AR', 'Y', 'Spanish (Argentina)', 'es', 'AR', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('es_UY', 'Y', 'Spanish (Uruguay)', 'es', 'UY', 'N', 'N' ); INSERT INTO cb_language( idlanguage, isactive, namelanguage, languageiso, countrycode, isbaselanguage, issystemlanguage ) VALUES ('es_ES', 'Y', 'Spanish (Spain)', 'es', 'ES', 'N', 'N' );
Listo, ya tenemos nuestros datos introducidos en la tabla, ten en cuenta al añadir nuevos INSERT que si los cargas todos seguidos los debes separar con ; ya que para cada uno se realiza una ejecución.
Consulta: SELECT
Ahora vamos a mostrar los datos por nuestra consola para ello usamos el comando SELECT, esta es la sintaxis básica SQL:
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ ORDER BY expression [ ASC | DESC ]
- SELECT FROM WHERE ORDER BY: las cláusulas SQL SELECT y SQL FROM son el ABC de las consultas de bases de datos, con estas dos cláusulas podemos listar los datos de cualquier tabla.
- SELECT: con él indicamos que campos queremos mostrar separándolos por comas, para mostrar todos los campos de una tabla usamos el símbolo *.
- FROM: aquí indicamos las tabla o tablas que vamos a consultar, y por lo tanto, obtener los datos.
Así, para nuestra consulta de comprobación usamos las clausulas SELECT y FROM:
SELECT * FROM cb_language;
Esta consulta la introducimos en nuestra aplicación sqlite3 y los resultados se mostrarán por consola de la siguiente manera:
sqlite> SELECT * FROM cb_language; da_DK|Danish (Denmark)|Y|da|DK|N|N de_AT|German (Austria)|Y|de|AT|N|N de_DE|German (Germany)|Y|de|DE|N|N en_GB|English (United Kingdom)|Y|en|GB|N|N en_IE|English (Ireland)|Y|en|IE|N|N es_AR|Spanish (Argentina)|Y|es|AR|N|N es_UY|Spanish (Uruguay)|Y|es|UY|N|N es_ES|Spanish (Spain)|Y|es|ES|N|N
6. INSTALACIÓN DEL ENTORNO GRÁFICO SQLITEMAN
Como herramienta gráfica voy a instalar un entorno sencillo y fácil de usar con SQLiteman, en el enlace a la web del desarrollo puedes ver las versiones disponibles para distintos sistemas operativos es sencillo de instalar, la instalación que yo utilizo es para Ubuntu para su instalación simplemente ejecuta:
Ahora vamos a abrir la base de datos que hemos creado, para eso hemos de saber donde la hemos ubicado y abrirla con SQLiteman tal y como se indica en la imagen:

SQLITEMAN – Open Database
Una vez abierta la base de datos en el programa podemos ver en el árbol de tablas el contenido y la definición de la tabla que hemos creado:

SQLiteman Database -Customerdb tabla cb_language
En la ventana superior izquierda podemos ejecutar consultas SQL que se mostrarán en el programa, coge la consulta utilizada antes por ejemplo, y ejecútala en el programa el resultado será el que puedes ver en la imagen:

SQLiteman Database – Consulta sobre cb_language
Por último, también tenemos una visualización de los SQLite Pragmas

SQLiteman – Pragmas
Los Pragmas son una extensión SQL específica para SQLite y se utiliza para modificar el funcionamiento de la biblioteca SQLite o para consultar la biblioteca SQLite para obtener datos internos. La declaración PRAGMA se crea utilizando la misma interfaz que otros comandos SQLite como SELECT o INSERT aunque como es evidente difiere en otros aspectos importantes.
Documentación SQLite con ejemplos
- SQLite: web oficial del proyecto de la base de datos
- SQLite Download: página de descargas e instalación de SQLite
- SQLite Pragmas: son una extensión SQL específica para SQLite y se utiliza para modificar el funcionamiento de la biblioteca SQLite o para consultar la biblioteca SQLite para obtener datos internos, en este enlace tienes toda la información.
- SQLiteman: web de la aplicación que nos proporciona un entorno gráfico sencillo y fácil de usar con SQLite.
Primeros pasos con SQLite con ejemplos sencillos
Espero que te haya sido útil esta introducción a SQLite, si es así compártela, gracias.
Ésta es una de la poquísimas páginas que trata este tema con seriedad y profundidad. Muchísimas gracias por compartir tus conocimientos.
Saludos
Hola Lucho.
Muchas gracias por tu valoración, encantado de ser útil.
Saludos.
Disculpa, como puedo crear variables en una consulta, para una transaccion, como por ejemplo, en mysql se utiliza un @ para crear variables, y su sintaxis es: SELECT @variable := valor;
Como seria en SQLite?
Muchisimas gracias, es una información muy completa y de gran valor para empezar una base de datos relacional.
Muchas gracias por tu valoración Mónica, permanece atenta ya que estamos actualizando los tutoriales y toda la web.
Si estás interesada en bases de datos relacionales, también tienes disponible en nuestra web:
Gracias.
me sirvio bastante la información.
Me alegro que te sirviera de ayuda.
Un saludo.
Hola, gracias por compartir, mi pregunta era la siguiente; ¿Hasta donde llega su capacidad para guardar registros? ¿se puede utilizar en un software de Sistema de ventas y control de stock?
Slaudos!
Hola Darío.
En este enlace puedes analizar los límites de SQLite https://www.sqlite.org/limits.html, algunos datos:
Con estos datos entiendo que estarías cubierto para tu desarrollo de un sistema de ventas y stock si un software que se utiliza en local, otra cosa diferente es el rendimiento con un volumen alto de datos que se manejan desde un servidor central, por ello si crees que tu software puede crecer o tener un volumen alto de datos te aconsejo que utilices MYSQL o PostgreSQL.
Un saludo.
Espero que te sirva de ayuda.
Muchas gracias! sí me sirvió. Muy amable de tu parte.
Podrias publicar por favor el archivo de tu base de datos para descargarla, gracias.
Buenas tardes, disculpe soy nuevo aquí, estoy desarrollando una aplicación en Visual Basic 6.0, se que está en desuso, pero no soy programador y aprendí visual basic por mi cuenta, soy ingeniero y desarrollo aplicaciones para Autocad, porqué con visual basic, porque presenta una interfaz agradable para los usuarios y es muy SENCILLA de programar (mucho mas fácil y efectiva que el lenguaje que viene con Autocad, VisualLisp), hasta ahora la base de datos que he usado es Access, pero ya se me queda corta para la cantidad de datos a almacenar, seria tan amable de enviarme a mi correo una pequeña aplicación donde pueda ver como conectarme a SQLite ( lo hago con ODBC), como guardar la información, como modificar etc…, hasta ahora todo lo que he realizado me ha dado errores, me imagino que es porque he diseñado en base a lo que he aprendido con Access… Gracias…
Buenas Jose.
Me alegro que te sea útil.
Un saludo
cuando realizo consultas del tipo que sea que repuesta recibo del sqlite?
Necesito cargar documentos .htm o .html a una base en sqlite que ya está creada, es posible hacer un query que lo haga si pongo todo en una sola carpeta en mi pc, es para cargar la base de una app. Agradeceré tu ayuda y felicitaciones por este blog
Muchas gracias por tu gran esfuerzo en esta guía, me la guardo en mis marcadores para seguirla paso a paso. Alguna página me aconsejas para profundizar en SQL o base de datos relacionales?
Un saludo desde Marbella.
Me respondo yo mismo, acabo de encontar bastante información en tu misma sitio:
http://codigoxules.org/bases-de-datos/
Gracias por todo…
Así da gusto Marcos, gracias por utilizar mi Web.
En el apartado de base de datos encontrarás una guía inicial para empezar con consultas y cosas básicas.
Un saludo.
Espero que te sea muy útil.