19
ADMINISTRACIÓN DE BASE DE DATOS TEMA: SQLITE INTEGRANTES: Pedro Pairazamán Silva Luís Ramón Zúñiga PROFESOR: Ing. Manuel Velarde Carpio 2013-II

SQLite

Embed Size (px)

Citation preview

ADMINISTRACIÓN DE BASE DE DATOSTEMA: SQLITE

INTEGRANTES:

Pedro Pairazamán Silva

Luís Ramón Zúñiga

PROFESOR:

Ing. Manuel Velarde Carpio

2013-II

Tabla de contenido

INTRODUCCIÓN..................................................................................................................................2

HISTORIA............................................................................................................................................2

DESCRIPCIÓN TÉCNICA.......................................................................................................................3

DESCRIPCIÓN Y LICENCIA...............................................................................................................3

CARACTERÍSTICAS...........................................................................................................................3

PROGRAMAS QUE USAN SQLITE....................................................................................................4

COMANDOS USADOS POR SQLITE......................................................................................................5

COMANDOS BÁSICOS.....................................................................................................................6

1. CREATE...............................................................................................................................6

2. DROP..................................................................................................................................7

3. INSERT................................................................................................................................7

4. SELECT................................................................................................................................8

5. UPDATE..............................................................................................................................9

6. DELETE..............................................................................................................................10

7. ALTER TABLE.....................................................................................................................10

SENTENCIAS SQL NO IMPLEMENTADAS EN SQLITE......................................................................11

EMPRESAS QUE USAN SQLITE..........................................................................................................12

CONCLUSIONES................................................................................................................................14

BIBLIOGRAFÍA...................................................................................................................................14

INTRODUCCIÓN

Hablar de SQLite es hablar de uno de los motores de base de datos más usados del mundo, pues

es usado en una gran cantidad de aplicaciones; algunas de estas son proyectos de alto nivel

ejecutados por grandes transnacionales. Entonces, ¿por qué es poco conocido?

En este informe, les hablaremos sobre su historia, características, modo de uso y algunos casos de

empresas que usan este poderoso motor.

HISTORIA

Cuando D. Richard Hipp trabajaba desarrollando software para la fuerza naval de los Estados

Unidos, comenzó a desarrollar SQLite. Según él cuenta con sus propias palabras:

“El proyecto SQLite surgió de una necesidad personal, para mi propio uso.”

D. Richard Hipp

En enero de 2000 D. Richard Hipp estaba trabajando con su equipo del General Dynamics en la

fuerza naval de los Estados Unidos, en un proyecto de software, el cual se conectaba a una base de

datos Informix. El motor funcionaba muy bien, pero habían tenido problemas para hacer una

reconfiguración cuando el sistema se reiniciaba.

Luego cambiaron a PostgreSQL, pero administrar la base de datos era un poco más complejo. Fue

en ese momento cuando surgió la idea de escribir un simple motor de base de datos SQL que

permitiera leer los archivos del disco duro, y luego ser llamados en diferentes solicitudes.

Cinco meses más tarde, Hipp comenzó a escribir las primeras versiones de lo que hoy conocemos

como SQLite, con el pensamiento de que sería útil en algún problema similar.

Es claro que SQLite tiene la capacidad de reemplazar a grandes motores de Bases de Datos y

acoplarse al desarrollo de muchos proyectos informáticos, ya sea en ambientes de prototipos de

sistemas como así también en complejos y robustos software.

DESCRIPCIÓN TÉCNICA

DESCRIPCIÓN Y LICENCIA

SQLite es una librería “en proceso” programada en lenguaje C, que implementa un sistema de

gestión de base de datos relacional, sin servidor (interactúa directamente con archivos) y cero

configuración.

En cuestiones de licencia, SQLite es de dominio público, por lo cual cualquier persona es libre de

copiar, modificar, publicar, usar, compilar, vender o distribuir el código SQLite original, ya sea en

forma de código o como un ejecutable compilado, para cualquier propósito (comercial o no

comercial), con todo lo que esto implique. Sin embargo, el que haga uso del código y

documentación de SQLite debe respetar los derechos morales del autor.

CARACTERÍSTICAS

Las transacciones son atómicas, consistentes, aisladas y durables (ACID) aun con fallos

propios del sistema o fallas de energía.

Cero configuración, no se necesita una instalación previa para su uso.

Implementa la mayoría del estándar SQL-92. (algunas características no son soportadas)

Una base de datos complete puede ser almacenada en un archivo símple multiplataforma.

Soporta bases de datos de hasta 2 TB, cadenas de dimensiones de GB y objetos binarios

grandes (Binary Large Objects – BLOBs).

Ocupa poco espacio en memoria: menos de 500kB totalmente configurado o menos, con

algunas características omitidas.

Más rápido que otros motores de base de datos cliente/servidor más populares para la

mayoría de operaciones cotidianas.

Posee un API fácil de usar.

Escrito en ANSI-C. Referencias TCL incluidas. Referencias a otros lenguajes disponibles por

separado.

Código fuente comentad con 100% test cubierto por branches.

Disponible como un archivo de código fuente ANSI-C simple si deseas incluirlo en otro

proyecto.

Autónomo: no posee dependencias externas.

Multiplataforma: Unix (Linux, Mac OS-X, Android, iOS) y Windows (Win32, WinCE, WinRT)

soportados. Fácil de portar a otros sistemas.

Viene con un cliente de interfaz de línea de comandos (command-line interface -CLI) que

puede ser usado para administrar diversas bases de datos SQLite.

PROGRAMAS QUE USAN SQLITE

Aquí mostramos un ejemplo de programa en C++ que usa SQLite:

Como se puede observar, se considera a la base de datos como un archivo, además de usar

métodos y funciones proporcionados por la librería <sqlite3.h>. El caso puede variar, dependiendo

del tipo de lenguaje que se implemente para usar esta base de datos.

COMANDOS USADOS POR SQLITE

Como se mencionó en las características, SQLite usa una adaptación del estándar SQL-92, por lo

cual entiende la mayoría del lenguaje SQL. Además, adapta nuevas características propias, como

los comandos “dot commands”, ejecutables desde la consola de SQLite. Acá les mencionamos

unos cuantos:

.backup ?DB? FILE Backup DB (default "main") to FILE

.bail ON|OFF Detenerse al mostrar error. Por defecto OFF

.databases Lista los nombres y archivos de las bases de datos adjuntas

.dump ?TABLE? Vacía una determinada table de una base de datos

.echo ON|OFF Activa o desactiva el comando “echo”

.exit Salir de la consola de SQLite

.header(s) ON|OFF Activa o desactiva el mostrar cabeceras

.help Ayuda de SQLite

.import FILE TABLE Importa datos desde FILE a TABLE

.indices ?TABLE? Muestra los nombres de todos los índices. Si TABLE es especificado, muestra los índices correspondientes de esa tabla

.load FILE ?ENTRY? Carga una librería

.mode MODE Muestra el modo de muestra de las tablas, donde MODE puede ser:csv Valores separados por comas ‘,’column Columnas alineadas a la izquierdahtml Código HTMLinsert Sentencia SQL para tablaline Un valor por línealist Valores determinados por una cadena .separatortabs Valores separados por una tabulacióntcl Elementos de lista TCL

.nullvalue STRING Imprime una cadena en reemplazo de valores NULL

.output FILENAME Manda resultado a un archivo, donde FILENAME es el nombre del archivo

.output stdout Manda resultado a la pantalla

.print STRING... Imprime STRING a la pantalla

.prompt MAIN CONTINUE

Reemplaza el prompt de la consola

.quit Salir de la consola SQLite

.read FILENAME Ejecuta SQL en FILENAME

.schema ?TABLE? Muestra las sentencias CREATE. Si TABLE está especificado, se muestra las sentencias de la tabla especificada

.separator STRING Define separador, usado por .import y .mode

.show Muestra los valores actuales para diversas configuraciones

.stats ON|OFF Activa/desactiva el mostrar los estados

.tables ?PATTERN? Lista nombres de tablas de acuerdo al valor de PATTERN

.timeout MS Íntenta abrir una cantidad de tablas cerradas en MS milisegundos

.width NUM NUM Define el ancho para el modo “column”, definido en .mode

.timer ON|OFF Activa/desactiva medición del tiempo del CPU

COMANDOS BÁSICOS

Estos comandos los podemos emplear desde la consola de SQLite como desde otro tipo de interfaz

añadida que trabaje con este motor.

1. CREATE

Se puede usar de las siguientes formas:

CREATE INDEX CREATE TABLE CREATE TRIGGER CREATE VIEW CREATE VIRTUAL TABLE

Para este caso, usaremos el CREATE TABLE. Usaremos la consola para crear una nueva base de

datos llamada “test”, además de crear una tabla en esta DB, llamada “datos” con las siguientes

características:

id – entero (3) [PRIMARIA, NO NULO] apellido – cadena(30) [NO NULO] nombre – cadena(30) [NO NULO] documentos – cadena(30) [NO NULO] observaciones – cadena(60) [NO NULO]

En el gráfico anterior, al listar las tablas creadas, podemos ver que la tabla “datos” ya ha sido

creada con las características mencionadas al comienzo.

2. DROP

Este comando nos sirve para eliminar tablas de la base de datos. Para esto, supongamos que

tenemos otra base de datos llamada “Otra”, la cual eliminaremos con el comando DROP TABLE

Otra.

Antes de ejecutar el comando, mostramos las tablas existentes. Después de ejecutar el comando,

al volver a mostrar las tablas, vimos que ya no se mostraba la tabla que hemos eliminado.

3. INSERT

Insertaremos los siguientes datos en la tabla “Datos”:

CAMPO DATOid 1apellido Ramonnombre Luisdocumentos 20092120Bobservaciones Ninguna que destacar

Al ejecutar el comando INSERT en la base de datos, lo hacemos de la siguiente forma:

4. SELECT

Luego de hacer la inserción de datos, para hacer la comprobación, procederemos a mostrarlos con

el comando SELECT. Para eso, en la consola usamos el siguiente comando:

Como podemos observar, la inserción anterior se hizo sin problemas, los datos se grabaron en la

tabla tal como se insertaron.

5. UPDATE

A veces es necesario hacer cambios en algunos datos. Para esto usamos el comando UPDATE.

Aplicándolo en nuestro ejemplo:

Haciendo un SELECT para ver los nuevos datos actualizados:

6. DELETE

Supongamos que tenemos un registro adicional con los siguientes datos:

CAMPO DATOid 2apellido Valentinnombre Bithiahdocumentos 20094057Fobservaciones Deportada

Y deseamos eliminar el registro anterior. Para esto, usaremos el comando DELETE de la siguiente

forma:

Antes de utilizar DELETE, hicimos un SELECT para poder observar todos los registros que se

encuentran en la BD. Luego de ejecutar, hicimos otro SELECT para observar cómo quedó la tabla.

Como se esperaba, el registro seleccionado fue eliminado.

7. ALTER TABLE

Acá podemos modificar datos de la propia tabla, como renombrarla o añadir una nueva columna

(otras opciones no pueden ejecutarse, lo cual se explicará en el siguiente punto). En este caso

vamos a renombrar la tabla, de “datos” a “usuarios”. Para eso, en la consola, ejecutamos la

siguiente instrucción:

Como pueden ver, primero mostramos las tablas que están en la BD para poder ver el nombre de

la tabla que queremos cambiar. Luego aplicamos el comando ALTER TABLE con el añadido

RENAME TO, esto para cambiar el nombre de la tabla. Luego revisamos y vemos que el nombre ya

se cambió.

SENTENCIAS SQL NO IMPLEMENTADAS EN SQLITE

SQLite implementa la mayoría de las características de SQL, sin embargo, hay sentencias que no

están implementadas. Las sentencias no implementadas son las siguientes:

SENTENCIA OBSERVACIÓNRIGHT y FULL OUTER JOIN LEFT OUTER JOIN está implementado, pero no así

RIGHT OUTER JOIN o FULL OUTER JOIN.Soporte complete de ALTER TABLE Solo RENAME TABLE y ADD COLUMN están

soportadas. Otros tipos de operaciones de ALTER TABLE como DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT, y otras más se han omitido.

Soporte completo de Triggers Solo están soportados los triggers FOR EACH ROW pero no los triggers FOR EACH STATEMENT.

Escribir a vistas Vistas en SQLite son de solo lectura. No puedes ejecutar operaciones DELETE, INSERT, o UPDATE en una vista. Sin embargo, puedes crear un trigger que dispare en un intento DELETE, INSERT, o UPDATE a una vista y hacer lo que deseas en el cuerpo del trigger.

GRANT y REVOKE Como SQLite lee y escribe las bases de datos en un archivo de disco, los únicos permisos que se pueden asignar a esta BD son los que permita asignarle el sistema operativo, por lo cual, no tendría sentido implementar los comandos GRANT y REVOKE.

EMPRESAS QUE USAN SQLITE

Acá les mostramos una lista de las empresas más reconocidas a nivel mundial que usan SQLite en

sus soluciones informáticas:

Adobe usa SQLite como el formato de archivo de aplicación para su producto Photoshop Lightroom. Además, SQLite es un componente estándar de Adobe Integrated Runtime (AIR). Se ha reportado también que Acrobat Reader usa SQLite.

Airbus confirma que SQLite es usado en el software de vuelo de la familia de aviones A350 XWB.

Apple usa SQLite para muchas funciones implementadas en Mac OS X, incluyendo Apple Mail, Safari, y Aperture. Apple también usa SQLite en iPhone, en el iPod touch y en el software iTunes.

El popular sistema de almacenamiento de archivos en la nube Dropbox reporta que usa SQLite como la forma primaria de almacenamiento de datos por el lado del cliente.

SQLite es el formato primario de metadatos en el explorador web Firefox y en el cliente de correo Thunderbird, ambos de Mozilla.

Flame es un programa detector de malware que hace uso intensivo de SQLite.

Se cree que General Electric usa SQLite en alguno de sus productos porque se comunicaron con los desarrolladores de SQLite solicitando el número de control de exportación de EE.UU. para SQLite. Se presume que GE está usando SQLite en algún product que están exportando. Nadie (fuera de GE) puede confirmar qué producto puede ser.

Se conoce que Google usa SQLite en su aplicación de escritorio para Mac, en Google Gears, en el sistema operativo Android y en el explorador web Chrome. La gente presume que Google usa SQLite además en otra gran cantidad de productos que ellos no desean especificar. Ingenieros de Google hacen una gran cantidad de contribuciones al código de búsqueda de texto con SQLite.

McAfee usa SQLite en sus aplicaciones antivirus.

Viene con compatibilidad para SQLite2 y SQLite3 por defecto.

SQLite viene como un módulo en el lenguaje de programación Python desde su versión 2.5.

El entorno de programación REALbasic viene equipado con una versión de SQLite que soporta encriptación AES.

Se ha detectado SQLite en las versiones de escritorio para MacOS y Windows.

CONCLUSIONES

Finalmente, por las ventajas descritas y la gran cantidad de lenguajes de programación que

soportan SQLite, lo transforman no solo 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 dinamicos, algo muy común en la

actualizad, 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.

BIBLIOGRAFÍA

http://www.sqlite.org

http://es.wikipedia.org/wiki/SQLite

http://geotux.tuxfamily.org/index.php/es/geo-blogs/item/319-sqlite-spatialite-el-porque-del-como