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.
·         También ayuda tener a mano la documentación oficial (https://sqlite.org/docs.html)
·         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++PHPPerlPythonRubyTclGroovyQt 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

Entradas populares de este blog

Android Studio