SQLite
I.
Tema: SQLite
1.
Contenido
Ø Definición
SQLite es una biblioteca escrita en
leguaje C que
implementa un sistema de gestión de base de datos Sistema de gestión de
bases de datos transaccionales SQL auto-contenido, sin servidor y sin
configuración. El código de SQLite es de dominio público y libre para cualquier
uso, ya sea comercial o privado. Actualmente es utilizado en gran cantidad de
aplicaciones incluyendo algunas desarrolladas como proyectos de alto nivel.
Ø CARACTERÍSTICAS
SQLite es un
sistema completo de bases de datos que soporta múltiples tablas, índices,
triggers y vistas. No necesita un proceso separado funcionando como servidor ya
que lee y escribe directamente sobre archivos que se encuentran en el disco
duro. El formato de la base de datos es multiplataforma e indistintamente se
puede utilizar el mismo archivo en sistemas de 32 y 64 bits.
La base de datos
se almacena en un único fichero a diferencia de otros DBMS que hacen uso de
varios archivos. SQLite emplea registros de tamaño variable de forma tal que se
utiliza el espacio en disco que es realmente necesario en cada momento.
El código fuente
está pensado para que sea entendido y accesible por programadores promedio.
Todas las funciones y estructuras están bien documentadas.
Existe un
programa independiente de nombre sqlite que puede ser utilizado para consultar
y gestionar los ficheros de base de datos SQLite. También sirve como ejemplo
para la escritura de aplicaciones utilizando la biblioteca SQLite.
Implementación de SQL
La biblioteca implementa la mayor parte del
estándar SQL-92, incluyendo transacciones de base de datos atómicas,
consistencia de base de datos, aislamiento, y durabilidad (ACID), triggers y
la mayor parte de las consultas complejas.
CARACTERÍSTICAS OMITIDAS DE SQL
·
Restricciones FOREIGN KEY,
·
Soporte completo para triggers
(disparadores)
·
Soporte completo para ALTER
TABLE, solamente implementa las instrucciones RENAME TABLE y ADD COLUMN.
·
RIGHT y FULL OUTER JOIN, sólo
está implementada la instrucción LEFT OUTER JOIN.
·
Escribir en VIEWs, ya que las
vistas en SQLite son de sólo lectura.
·
GRANT y REVOKE, pues no tienen
sentido en un sistema de bases de datos embebido.
TIPOS DE DATOS
SQLite usa un sistema de tipos inusual. En
lugar de asignar un tipo a una columna como en la mayor parte de los sistemas
de bases de datos SQL, los tipos se asignan a los valores individuales.
Cada uno de los datos almacenados en una
base de datos SQLite implemtenta alguno de los siguientes tipos:
·
NULL, un valor nulo.
·
INTEGER, un entero con signo
que se almacena en 1, 2, 3, 4, 5, 6 o 8 bytes de acuerdo a la magnitud del
valor.
·
REAL, un número de coma
flotante (real), almacenado en 8 bytes.
·
TEXT, una cadena de texto
almacenada con las codificaciones UTF-8, UTF-16BE o UTF-16-LE.
·
BLOB, datos en formato binario,
se almacenan exactamente como se introdujeron.
Autoincremento
Una duda tradicional es el modo de
implementar el autoincremento, principalmente para las llaves primarias. La
forma más sencilla es declarar el tipo de dato como INTEGER PRIMARY KEY.
Concurrencia
Varios procesos o hilos pueden acceder a la
misma base de datos sin problemas. Varios accesos de lectura pueden ser
servidos en paralelo. Un acceso de escritura sólo puede ser servido si no se
está sirviendo ningún otro acceso concurrentemente.
Ø Clases Java de SQLite
Necesitamos 2 clases, la clase principal
y una clase que extienda de SQLiteOpenHelper.
Ø Como usa SQLite con Android
Studio
Para mostrarte cómo usar SQLite en Android Studio, veremos
un sencillo ejemplo que te ayudará a implementarla en tu propia aplicación.
Trataremos un ejemplo muy sencillo, de alta, baja, modificación y borrado de usuarios,
es decir, un CRUD. Almacenaremos el DNI (que será la clave primaria, que nos
ayudará a encontrar al usuario), además de nombre y apellidos, ciudad y número.
Estas son las clases que necesitamos (las 2 clases .java) y .XML (que es
la vista/layout):
ADMINSQLITEOPENHELPER
MAIN_ACTIVITY
Ahora, tan solo tendrás que ejecutar
la app en tu smartphone.
·
Alta
de usuarios: tras introducir
los datos, hacemos clic en el botón de alta para que automáticamente se
almacenen en la base de datos.
·
Consulta
DNI: introduce el DNI que has
almacenado, para que te muestre toda la información del usuario.
·
Baja: introduce el DNI del usuario que quieras dar de
baja, y al hacer clic aquí automáticamente se dará de baja.
·
Modificación
de datos: introduce el DNI del usuario que
quieres modificar los datos, tan solo tendrás que cambiar los datos que quieras.
Haces una consulta, cambias los parámetros que quieras y luego, los modificas.
Ejemplos
TCL
#!/usr/bin/tclsh
if {$argc!=2} {
puts stderr "Usage: %s
DATABASE SQL-STATEMENT"
exit 1
}
load /usr/lib/tclsqlite3.so Sqlite3
sqlite3 db [lindex $argv 0]
db eval [lindex $argv 1] x {
foreach v $x(*) {
puts "$v = $x($v)"
}
puts ""
}
db close
C
#include
<stdio.h>
#include
<sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
2.
Resumen
SQLite
SQLite es
una biblioteca escrita en leguaje C que implementa un sistema de gestión de base de datos
Sistema de gestión de bases de datos transaccionales SQL
auto-contenido, sin servidor y sin configuración.
CARACTERÍSTICAS
·
SQLite es un sistema completo
de bases de datos que soporta múltiples tablas, índices, triggers y vistas.
·
La base de datos se almacena en
un único fichero a diferencia de otros DBMS que hacen uso de varios archivos.
·
El código fuente está pensado
para que sea entendido y accesible por programadores promedio. Todas las
funciones y estructuras están bien documentadas.
·
Implementación de SQL
La
biblioteca implementa la mayor parte del estándar SQL-92, incluyendo
transacciones de base de datos atómicas, consistencia de base de datos,
aislamiento, y durabilidad (ACID), triggers y la mayor parte de las
consultas complejas.
TIPOS DE DATOS
·
NULL, un valor nulo.
·
INTEGER, un entero con signo
que se almacena en 1, 2, 3, 4, 5, 6 o 8 bytes de acuerdo a la magnitud del
valor.
·
REAL, un número de coma
flotante (real), almacenado en 8 bytes.
·
TEXT, una cadena de texto
almacenada con las codificaciones UTF-8, UTF-16BE o UTF-16-LE.
·
BLOB, datos en formato binario,
se almacenan exactamente como se introdujeron.
Autoincremento
·
Una duda tradicional es el modo
de implementar el autoincremento, principalmente para las llaves primarias. La
forma más sencilla es declarar el tipo de dato como INTEGER PRIMARY KEY.
Concurrencia
·
Varios procesos o hilos pueden
acceder a la misma base de datos sin problemas. Varios accesos de lectura
pueden ser servidos en paralelo.
Como
usa SQLite con Android Studio
·
Alta
de usuarios: tras introducir
los datos, hacemos clic en el botón de alta para que automáticamente se
almacenen en la base de datos.
·
Consulta
DNI: introduce el DNI que has almacenado.
·
Baja: introduce el DNI del usuario que quieras dar de
baja, y al hacer clic aquí automáticamente se dará de baja.
·
Modificación
de datos: introduce el DNI del usuario que
quieres modificar los datos.
3.
Summary
SQLite
SQLite is a library written in C language that implements a database management system. Transactional SQL database management system auto-content, without server and without configuration.
CHARACTERISTICS
• SQLite is a complete database system that supports multiple tables, indexes, triggers and views.
• The database is stored in a single file unlike other DBMS that make use of several files.
• The source code is designed to be understood and accessible by average programmers. All functions and structures are well documented.
• SQL implementation
The library implements most of the SQL-92 standard, including atomic database transactions, database consistency, isolation, and durability (ACID), triggers, and most complex queries.
TYPE OF DATA
• NULL, a null value.
• INTEGER, a signed integer that is stored in 1, 2, 3, 4, 5, 6 or 8 bytes according to the magnitude of the value.
• REAL, a floating point number (real), stored in 8 bytes.
• TEXT, a text string stored with the encodings UTF-8, UTF-16BE or UTF-16-LE.
• BLOB, data in binary format, are stored exactly as they were entered.
Autoincremento
• A traditional doubt is how to implement autoincrement, mainly for primary keys. The simplest way is to declare the data type as INTEGER PRIMARY KEY.
Concurrence
• Several processes or threads can access the same database without problems. Several read accesses can be served in parallel.
How to use SQLite with Android Studio
• Registration of users: after entering the data, we click on the button to be automatically stored in the database.
• DNI inquiry: enter the DNI that you have stored.
• Low: enter the DNI of the user you want to unsubscribe, and clicking here will automatically unsubscribe.
• Modification of data: enter the DNI of the user that you want to modify the data.
4.
Recomendaciones
·
Para
realizar prácticas y las consultas de SQLite yo te recomiendo utilizar desde
Mozilla Firefox el add-on SQLite Manager (https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/)
·
Ya
tendrás un sistema con SQLite montado y podrás realizar las que quieras y ver
resultados.
·
Creo
que SQLite utiliza SQL-92.
5.
Conclusiones
Finalmente,
por las ventajas descritas y la gran cantidad de lenguajes de programación que
soportan SQLite, lo transforman no sólo en una alternativa, sino en una opción
robusta y decisiva para la implementación de sistemas que requieren
almacenamiento de información en un formato altamente dinámico con soporte para
SQL, con planes de escalabilidad, portabilidad y rapidez, sobre todo cuando se
utilizan lenguajes de programación dinámicos, algo muy común en la actualidad,
más aún cuando se hace necesario utilizar un motor pequeño y liviano que no
requiera mayor configuración o administración como es el caso de dispositivos
empotrados.
6.
Apreciación del Equipo
Sqlite
es una buena aplicación para abrir este tipo de bases de datos y ver su
contenido. Igual podemos editar datos con un simple doble clic, todo muy pero
muy sencillo. Aunque le falta algún que otro detalle que en algún momento
podríamos necesitar, al menos cuando trabajamos con no pocos datos.
7.
Glosario de Términos
·
Tamaño: SQLite tiene una
pequeña memoria y una única biblioteca es necesaria para acceder a bases de
datos, lo que lo hace ideal para aplicaciones de bases de datos incorporadas.
·
Rendimiento de base de datos:
SQLite realiza operaciones de manera eficiente y es más rápido que MySQL y PostgreSQL.
·
Portabilidad: se ejecuta en
muchas plataformas y sus bases de datos pueden ser fácilmente portadas sin
ninguna configuración o administración.
·
Estabilidad: SQLite es
compatible con ACID reunión de los cuatro criterios de Atomicidad,
Consistencia, Aislamiento y Durabilidad.
·
SQL: implementa un gran
subconjunto de la ANSI – 92 SQL estándar, incluyendo sub-consultas, generación
de usuarios, vistas y triggers.
·
Interfaces: cuenta con diferentes
interfaces del API, las cuales permiten trabajar con C++, PHP, Perl, Python, Ruby, Tcl, Groovy, Qt ofrece
el plugin qsqlite, etc.
·
Costo: SQLite es de dominio público,
y por tanto, es libre de utilizar para cualquier propósito sin costo y se puede
redistribuir libremente.
·
Sqliteman: Una excelente
herramienta GUI para desarrolladores y administradores de bases de datos Sqlite
disponible en múltiples plataformas.
8.
Bibliografía o Linkografía
Comentarios
Publicar un comentario