SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
SQLite3




Seminarios de Formación PolinuX
València – 23 de Abril de 2009

Andrés Ignacio Martínez Soto
anmarso4@fiv.upv.es
SQLite3
Contenido del seminario
    ¿Qué es SQLite3?



        Características básicas de SQLite3
    


        Usuarios de SQLite3
    


        Usos de SQLite3
    



    Instalación y herramientas



    SQLite3 en Detalle



        Tipos de datos y soporte de SQL:92
    


        Funciones de agregación y fecha
    


        Transacciones , triggers y vistas
    



    Demo: ”Facturas”

SQLite3
SQLite3



Datos básicos 
 de SQLite3
SQLite3
                ¿Qué es SQLite3?


    Sistema de Gestión de Bases de Datos relacionales



    creado por D. Richard Hipp
    Es de dominio público



    Escrito en C en una biblioteca de <500kb y muy ligero





                         D Richard Hipp
                        autor de SQLite3
SQLite3
         Características básicas de SQLite3
    Multiplataforma:



                Windows
            


                Linux
            


                Mac Os
            



    Muy portable (la base de datos es el fichero y nada más):



                Servidores
            


                Workstations
            


                PDAs
            


                Teléfonos móviles
            


                Otros sistemas embebidos
            
SQLite3

           Características básicas de SQLite3 (II)
    Sin configuración (Zero-Conf)



         La base de datos es el fichero, y no se necesita nada más que acceso al
     

         mismo.
    ”Serverless”:



         No necesaria infraestructura cliente-servidor pesada (MySQL, Oracle,
     

         PostgreSQL … )
    Transacciones ACID {Atomicity, Consistency, Isolation and


    Durability}
    Soporte de triggers




    Bases de datos de hasta 2 TB de tamaño

SQLite3
    Características básicas de SQLite3 (III)
    Disponibilidad como biblioteca estática o dinámica



    Disponibilidad de una API para la mayoría de


    lenguajes de programación
                C/C++
            


                PHP
            


                Python
            


                C# … Java
            


                Ruby
            



    Es fácilmente embebible en un programa de


    gestión
SQLite3
             Usuarios de SQLite3
    Adobe: Photoshop LightRoom, Air …



    Apple: Aperture, Safari, Iphone, Ipod Touch …



    Mozilla: Firefox



    Google: Gears …



    Symbian



    Muchos proyectos de Software Libre

SQLite3
                Usos de SQLite3


    Base de datos ”personal” (¿sustituto de Access?)



    Base de datos para educación (para aprender y


    comprender como funcionan las bases de datos)
    Base de datos temporales



    Base de datos para demostraciones



    Base de datos para dispositivos embebidos



    Base de datos para aplicaciones web

SQLite3
             No utilizar SQLite3 …


    Donde haya mucha concurrencia de accesos



    Aplicaciones Cliente-Servidor ”grandes”



    Tablas con campos de tamaño grande

SQLite3
SQLite3



 Instalación 
herramientas
SQLite3
                     Instalación de SQLite3
    Gnu-Linux:



        Ubuntu/Debian:
    


                     sudo apt-get install sqlite3 libsqlite3-dev
                 



        Otros:
    


                     Bajar binarios de SQLite3 y/o compilarlos
                 



    Windows:



                     Bajar cli y dll de SQLite3
                 



    Mac os X:



                     Bajar binarios de SQLite3
                 
SQLite3
                  Herramientas para SQLite3
    SQLite3 Command Line Interface:



        Consola para manejar una base de datos SQLite3
    




    SQLite Browser:




        Cliente gráfico de SQLite3 http://sqlitebrowser.sourceforge.net/
    




    SQLite Administrator:



        Cliente gráfico de SQLite3 http://sqliteadmin.orbmu2k.de/
    




    SQLiteman:



        Cliente gráfico de SQLite3 http://sqliteman.com/
    




SQLite Manager:
        Extensión para Firefox que permite manejar bases de datos SQLite3:
    

        https://addons.mozilla.org/ca/firefox/addon/5817
SQLite3
              Herramientas para SQLite3 (II)




SQLite3 CLI
SQLite3
                Herramientas para SQLite3 (III)




  SQLite
Administrator
SQLite3




SQLite3 en detalle
SQLite3

      Tipos de datos soportados por SQLite3

    SQLite3 utiliza tipado dinámico para los valores de las


    columnas...

    NULL: Para valores nulos




    INTEGER: Para valores numéricos de 32 bits con signo




    REAL: Para valores numéricos de 32 bits con signo en formato IEEE




    TEXT o VARCHAR: Para cadenas de texto en UTF-8




    BLOB: Para datos binarios

SQLite3
    Cosas de SQL:92 no soportadas por SQLite3
    Claves ajenas/integridad referencial:



        Pueden implementarse mediante triggers ver
    

        http://justatheory.com/computers/databases/sqlite/foreign_key_triggers.html

    Triggers:



        Triggers con ”FOR EACH STATEMENT”, Triggers que se disparan por otro
    

        Trigger.

    Modificar tablas:



        Solo rename table y add column.
    




    Joins:



        RIGHT y FULL OUTER JOIN no están soportados.
    




    Vistas actualizables (solo vistas de solo lectura)




    Grant y Revoke

SQLite3
Funciones de columna y agregadas en SQLite3
    SQLite3 permite uso de GROUP BY ,y HAVING



        SELECT COUNT(*) AS cuantos,nota
             FROM NotasAlumnoAprobados
             GROUP BY( nota ) HAVING ( nota>5 )
             ORDER BY 1 DESC;


    También se permite el uso de:



        AVG (columna)
    



        COUNT (columna)
    



        MAX (columna) y MIN (columna)
    



        SUM (columna)
    
SQLite3
            Funciones de fecha en SQLite3
    SQLite3 tiene como funciones para fechas y horas a




strftime( formato, string, modificador, modificador, … );
date( string, modificador, modificador, …) ;
time( string, modificador, modificador, …) ;
datetime( string, modificador, modificador, …) ;
current_time , current_date y current_timestamp
      SELECT COUNT(*), STRFTIME('%Y',fecha)
          FROM Facturas
          GROUP BY(
              STRFTIME('%Y',fecha)
          ) HAVING ( STRFTIME('%Y','now')-STRFTIME('%Y',fecha)=1 );
SQLite3
                   Transacciones en SQLite3
    Las transacciones en SQLite3 cumplen el estándar


    ACID (Atomicity, Consistency, Isolation and Durability):

        Atomicity (Atomicidad): O se ejecutan todas las tareas de la transacción o
    

        ninguna
        Consistency (Consistencia): Garantiza que sólo se ejecutan las
    

        operaciones que mantienen la integridad de la base de datos
        Isolation (Aislamiento): Asegura que una operación no puede ver ni influir
    

        otras
        Durability (Durabilidad): Una vez realizada una operación, ésta persistirá y
    

        no se podrá deshacer aunque falle el sistema.
SQLite3
                 Transacciones en SQLite3 (I)
    Todas las transacciones comienzan por




         BEGIN { DEFERRED/INMEDIATE/EXCLUSIVE } TRANSACTION
     

         (DEFERRED por defecto)




    Luego se colocan las operaciones de la transacción




    Por último se hace un COMMIT; O END; TRANSACTION





    Y si fuera necesario, un ROLLBACK a un SAVEPOINT (punto de guardado)

SQLite3
                Transacciones en SQLite3 (II)
    Ejemplos de transacciones:





       BEGIN TRANSACTION;
            CREATE TABLE Alumno (id INTEGER PRIMARY KEY,nombre TEXT);
            INSERT INTO Alumno VALUES(1,”Fulanito”);
            INSERT INTO Alumno VALUES(2,”Menganito”);
            DELETE FROM Alumno WHERE nombre LIKE '%anito';
            SELECT COUNT(*) FROM Alumno;
       COMMIT;




       BEGIN TRANSACTION;
            UPDATE Alumno SET nombre=”*ito”;
            SELECT * FROM Alumno;
       COMMIT;
       ROLLBACK;
SQLite3
                 Triggers en SQLite3
    Creación de Triggers

SQLite3

                 Triggers en SQLite3 (I)

CREATE TRIGGER TR_Alumno BEFORE DELETE ON Alumno
    FOR EACH ROW
    BEGIN
         INSERT INTO Old_Alumnos VALUES (OLD.id,OLD.nombre);
    END;




CREATE TRIGGER UpdateCustAddress AFTER UPDATE OF address ON Customer
  FOR EACH ROW
  BEGIN
    UPDATE orders SET address = new.address WHERE customer_name=old.name;
  END;
SQLite3
                   Triggers en SQLite3 (II)
    Función RAISE (emite un error)





     CREATE TRIGGER TRProyecto
         BEFORE DELETE ON Proyectos
              WHEN OLD.id IN (
                  SELECT id FROM Tareas
              )
         BEGIN
              SELECT RAISE(ROLLBACK,”Existen tareas de éste proyecto … ”);
         END;
SQLite3
  Vistas en SQLite3




CREATE VIEW ClientesValenciaFacturas AS
    SELECT codcli,nombre,telefono,direccion
    FROM Clientes
    WHERE codcli IN (
        SELECT codcli FROM Facturas
    )
    AND (codpostal LIKE '46%');
SQLite3
SQLite3



        Demo
    de SQLite3
 ” FACTURAS ”
SQLite3
Base de datos ”Facturas”
SQLite3
SQLite3


¿Preguntas?
SQLite3




CTRL+C

Weitere ähnliche Inhalte

Was ist angesagt?

Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Alincita Simon
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciamonty19
 
Ejercicios de base de datos
Ejercicios de base de datosEjercicios de base de datos
Ejercicios de base de datosMaria Barrios
 
IEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de softwareIEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de softwareJesús Navarro
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del clienteGabriel Mondragón
 
Mi lenguaje de programacion java
Mi lenguaje de programacion javaMi lenguaje de programacion java
Mi lenguaje de programacion javapugnie
 
Cuadro comparativo AWT-SWING
Cuadro comparativo AWT-SWINGCuadro comparativo AWT-SWING
Cuadro comparativo AWT-SWINGsofia_27
 
TUTORIAL DE MySQL WORKBENCH
TUTORIAL DE MySQL WORKBENCHTUTORIAL DE MySQL WORKBENCH
TUTORIAL DE MySQL WORKBENCHkelsy98
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipsejaquiiMc
 
Entornos de desarrollo para móviles
Entornos de desarrollo para móvilesEntornos de desarrollo para móviles
Entornos de desarrollo para móvilesangelo4037
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQLbrobelo
 
Administración de usuarios y permisos de archivos en ubuntu
Administración de usuarios y permisos de archivos en ubuntuAdministración de usuarios y permisos de archivos en ubuntu
Administración de usuarios y permisos de archivos en ubunturiveravega12
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Estructuras en C
Estructuras en CEstructuras en C
Estructuras en CVane Borjas
 

Was ist angesagt? (20)

Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Informe laboratorio visual_basic
Informe laboratorio visual_basicInforme laboratorio visual_basic
Informe laboratorio visual_basic
 
Ejercicios de base de datos
Ejercicios de base de datosEjercicios de base de datos
Ejercicios de base de datos
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
IEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de softwareIEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de software
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
Mi lenguaje de programacion java
Mi lenguaje de programacion javaMi lenguaje de programacion java
Mi lenguaje de programacion java
 
Cuadro comparativo AWT-SWING
Cuadro comparativo AWT-SWINGCuadro comparativo AWT-SWING
Cuadro comparativo AWT-SWING
 
TUTORIAL DE MySQL WORKBENCH
TUTORIAL DE MySQL WORKBENCHTUTORIAL DE MySQL WORKBENCH
TUTORIAL DE MySQL WORKBENCH
 
Clase math.java
Clase math.javaClase math.java
Clase math.java
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipse
 
Entornos de desarrollo para móviles
Entornos de desarrollo para móvilesEntornos de desarrollo para móviles
Entornos de desarrollo para móviles
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Administración de usuarios y permisos de archivos en ubuntu
Administración de usuarios y permisos de archivos en ubuntuAdministración de usuarios y permisos de archivos en ubuntu
Administración de usuarios y permisos de archivos en ubuntu
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Estructuras en C
Estructuras en CEstructuras en C
Estructuras en C
 

Andere mochten auch (20)

21 casos de cooperativas de viviendas
21 casos de cooperativas de viviendas21 casos de cooperativas de viviendas
21 casos de cooperativas de viviendas
 
Sq lite
Sq lite Sq lite
Sq lite
 
SQLite
SQLiteSQLite
SQLite
 
SQLite
SQLiteSQLite
SQLite
 
Sqlite3 ejercicio
Sqlite3 ejercicioSqlite3 ejercicio
Sqlite3 ejercicio
 
Introducción a SQLite 3 y PHP
Introducción a SQLite 3 y PHPIntroducción a SQLite 3 y PHP
Introducción a SQLite 3 y PHP
 
Android development beyond the basics
Android development   beyond the basicsAndroid development   beyond the basics
Android development beyond the basics
 
Android de la A a la Z - Unidad 7
Android de la A a la Z - Unidad 7Android de la A a la Z - Unidad 7
Android de la A a la Z - Unidad 7
 
Android Training (Storing data using SQLite)
Android Training (Storing data using SQLite)Android Training (Storing data using SQLite)
Android Training (Storing data using SQLite)
 
ANSI SQL
ANSI SQLANSI SQL
ANSI SQL
 
Developing for Android (The movie)
Developing for Android (The movie)Developing for Android (The movie)
Developing for Android (The movie)
 
android sqlite
android sqliteandroid sqlite
android sqlite
 
09.1. Android - Local Database (Sqlite)
09.1. Android - Local Database (Sqlite)09.1. Android - Local Database (Sqlite)
09.1. Android - Local Database (Sqlite)
 
Android Database
Android DatabaseAndroid Database
Android Database
 
base de datos para dispositivos móviles
base de datos para dispositivos móvilesbase de datos para dispositivos móviles
base de datos para dispositivos móviles
 
SQLite
SQLiteSQLite
SQLite
 
Formato ieee830(srs lleno)
Formato ieee830(srs lleno)Formato ieee830(srs lleno)
Formato ieee830(srs lleno)
 
Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)
 
Android database tutorial
Android database tutorialAndroid database tutorial
Android database tutorial
 
Sql lite
Sql liteSql lite
Sql lite
 

Ähnlich wie SQLite3

Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Inyecciones sql para todos
Inyecciones sql para todosInyecciones sql para todos
Inyecciones sql para todoscsaralg
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didacticoenriquehot
 
Saula ana bdii_t7
Saula ana bdii_t7Saula ana bdii_t7
Saula ana bdii_t7Any Saula
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuDavid Vevelas
 
Documentacion postgresql
Documentacion postgresqlDocumentacion postgresql
Documentacion postgresqlCesar Martinez
 
MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial BásicoJosu Orbe
 
Elio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no miras
Elio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no mirasElio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no miras
Elio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no mirasVOIP2DAY
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicosTensor
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasElio Rojano
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDBliras loca
 

Ähnlich wie SQLite3 (20)

Sql lite
Sql liteSql lite
Sql lite
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Inyecciones sql para todos
Inyecciones sql para todosInyecciones sql para todos
Inyecciones sql para todos
 
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
 
Exposicionsqlite1 (1)
Exposicionsqlite1 (1)Exposicionsqlite1 (1)
Exposicionsqlite1 (1)
 
Textos sqli_mssql
 Textos sqli_mssql Textos sqli_mssql
Textos sqli_mssql
 
Seguridad En Programación
Seguridad En ProgramaciónSeguridad En Programación
Seguridad En Programación
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didactico
 
Saula ana bdii_t7
Saula ana bdii_t7Saula ana bdii_t7
Saula ana bdii_t7
 
ORACLE SQL
ORACLE SQLORACLE SQL
ORACLE SQL
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Documentacion postgresql
Documentacion postgresqlDocumentacion postgresql
Documentacion postgresql
 
MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial Básico
 
Elio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no miras
Elio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no mirasElio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no miras
Elio Rojano - VoIP2DAY 2016 | Que hace tu Asterisk cuando no miras
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
 
Introducción a PostgreSql
Introducción a PostgreSqlIntroducción a PostgreSql
Introducción a PostgreSql
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no miras
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
 

Mehr von Andrés Ignacio Martínez Soto (7)

Triptic20anys copia
Triptic20anys copiaTriptic20anys copia
Triptic20anys copia
 
Triptico afergodella
Triptico afergodellaTriptico afergodella
Triptico afergodella
 
Ferromed01
Ferromed01Ferromed01
Ferromed01
 
Llibret Torreta Associació Ferroviària de Godella
Llibret Torreta Associació Ferroviària de GodellaLlibret Torreta Associació Ferroviària de Godella
Llibret Torreta Associació Ferroviària de Godella
 
Ferromed 2
Ferromed 2Ferromed 2
Ferromed 2
 
Introduccion a Python
Introduccion a PythonIntroduccion a Python
Introduccion a Python
 
Introducción a LaTeX
Introducción a LaTeXIntroducción a LaTeX
Introducción a LaTeX
 

Kürzlich hochgeladen

Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadEduardoSantiagoSegov
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 

Kürzlich hochgeladen (20)

Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedad
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 

SQLite3

  • 1. SQLite3 Seminarios de Formación PolinuX València – 23 de Abril de 2009 Andrés Ignacio Martínez Soto anmarso4@fiv.upv.es
  • 3. Contenido del seminario ¿Qué es SQLite3?  Características básicas de SQLite3  Usuarios de SQLite3  Usos de SQLite3  Instalación y herramientas  SQLite3 en Detalle  Tipos de datos y soporte de SQL:92  Funciones de agregación y fecha  Transacciones , triggers y vistas  Demo: ”Facturas” 
  • 6. SQLite3 ¿Qué es SQLite3? Sistema de Gestión de Bases de Datos relacionales  creado por D. Richard Hipp Es de dominio público  Escrito en C en una biblioteca de <500kb y muy ligero  D Richard Hipp autor de SQLite3
  • 7. SQLite3 Características básicas de SQLite3 Multiplataforma:  Windows  Linux  Mac Os  Muy portable (la base de datos es el fichero y nada más):  Servidores  Workstations  PDAs  Teléfonos móviles  Otros sistemas embebidos 
  • 8. SQLite3 Características básicas de SQLite3 (II) Sin configuración (Zero-Conf)  La base de datos es el fichero, y no se necesita nada más que acceso al  mismo. ”Serverless”:  No necesaria infraestructura cliente-servidor pesada (MySQL, Oracle,  PostgreSQL … ) Transacciones ACID {Atomicity, Consistency, Isolation and  Durability} Soporte de triggers  Bases de datos de hasta 2 TB de tamaño 
  • 9. SQLite3 Características básicas de SQLite3 (III) Disponibilidad como biblioteca estática o dinámica  Disponibilidad de una API para la mayoría de  lenguajes de programación C/C++  PHP  Python  C# … Java  Ruby  Es fácilmente embebible en un programa de  gestión
  • 10. SQLite3 Usuarios de SQLite3 Adobe: Photoshop LightRoom, Air …  Apple: Aperture, Safari, Iphone, Ipod Touch …  Mozilla: Firefox  Google: Gears …  Symbian  Muchos proyectos de Software Libre 
  • 11. SQLite3 Usos de SQLite3 Base de datos ”personal” (¿sustituto de Access?)  Base de datos para educación (para aprender y  comprender como funcionan las bases de datos) Base de datos temporales  Base de datos para demostraciones  Base de datos para dispositivos embebidos  Base de datos para aplicaciones web 
  • 12. SQLite3 No utilizar SQLite3 … Donde haya mucha concurrencia de accesos  Aplicaciones Cliente-Servidor ”grandes”  Tablas con campos de tamaño grande 
  • 15. SQLite3 Instalación de SQLite3 Gnu-Linux:  Ubuntu/Debian:  sudo apt-get install sqlite3 libsqlite3-dev  Otros:  Bajar binarios de SQLite3 y/o compilarlos  Windows:  Bajar cli y dll de SQLite3  Mac os X:  Bajar binarios de SQLite3 
  • 16. SQLite3 Herramientas para SQLite3 SQLite3 Command Line Interface:  Consola para manejar una base de datos SQLite3  SQLite Browser:  Cliente gráfico de SQLite3 http://sqlitebrowser.sourceforge.net/  SQLite Administrator:  Cliente gráfico de SQLite3 http://sqliteadmin.orbmu2k.de/  SQLiteman:  Cliente gráfico de SQLite3 http://sqliteman.com/  SQLite Manager: Extensión para Firefox que permite manejar bases de datos SQLite3:  https://addons.mozilla.org/ca/firefox/addon/5817
  • 17. SQLite3 Herramientas para SQLite3 (II) SQLite3 CLI
  • 18. SQLite3 Herramientas para SQLite3 (III) SQLite Administrator
  • 19.
  • 21. SQLite3 Tipos de datos soportados por SQLite3 SQLite3 utiliza tipado dinámico para los valores de las  columnas... NULL: Para valores nulos  INTEGER: Para valores numéricos de 32 bits con signo  REAL: Para valores numéricos de 32 bits con signo en formato IEEE  TEXT o VARCHAR: Para cadenas de texto en UTF-8  BLOB: Para datos binarios 
  • 22. SQLite3 Cosas de SQL:92 no soportadas por SQLite3 Claves ajenas/integridad referencial:  Pueden implementarse mediante triggers ver  http://justatheory.com/computers/databases/sqlite/foreign_key_triggers.html Triggers:  Triggers con ”FOR EACH STATEMENT”, Triggers que se disparan por otro  Trigger. Modificar tablas:  Solo rename table y add column.  Joins:  RIGHT y FULL OUTER JOIN no están soportados.  Vistas actualizables (solo vistas de solo lectura)  Grant y Revoke 
  • 23. SQLite3 Funciones de columna y agregadas en SQLite3 SQLite3 permite uso de GROUP BY ,y HAVING  SELECT COUNT(*) AS cuantos,nota FROM NotasAlumnoAprobados GROUP BY( nota ) HAVING ( nota>5 ) ORDER BY 1 DESC; También se permite el uso de:  AVG (columna)  COUNT (columna)  MAX (columna) y MIN (columna)  SUM (columna) 
  • 24. SQLite3 Funciones de fecha en SQLite3 SQLite3 tiene como funciones para fechas y horas a  strftime( formato, string, modificador, modificador, … ); date( string, modificador, modificador, …) ; time( string, modificador, modificador, …) ; datetime( string, modificador, modificador, …) ; current_time , current_date y current_timestamp SELECT COUNT(*), STRFTIME('%Y',fecha) FROM Facturas GROUP BY( STRFTIME('%Y',fecha) ) HAVING ( STRFTIME('%Y','now')-STRFTIME('%Y',fecha)=1 );
  • 25. SQLite3 Transacciones en SQLite3 Las transacciones en SQLite3 cumplen el estándar  ACID (Atomicity, Consistency, Isolation and Durability): Atomicity (Atomicidad): O se ejecutan todas las tareas de la transacción o  ninguna Consistency (Consistencia): Garantiza que sólo se ejecutan las  operaciones que mantienen la integridad de la base de datos Isolation (Aislamiento): Asegura que una operación no puede ver ni influir  otras Durability (Durabilidad): Una vez realizada una operación, ésta persistirá y  no se podrá deshacer aunque falle el sistema.
  • 26. SQLite3 Transacciones en SQLite3 (I) Todas las transacciones comienzan por  BEGIN { DEFERRED/INMEDIATE/EXCLUSIVE } TRANSACTION  (DEFERRED por defecto) Luego se colocan las operaciones de la transacción  Por último se hace un COMMIT; O END; TRANSACTION  Y si fuera necesario, un ROLLBACK a un SAVEPOINT (punto de guardado) 
  • 27. SQLite3 Transacciones en SQLite3 (II) Ejemplos de transacciones:  BEGIN TRANSACTION; CREATE TABLE Alumno (id INTEGER PRIMARY KEY,nombre TEXT); INSERT INTO Alumno VALUES(1,”Fulanito”); INSERT INTO Alumno VALUES(2,”Menganito”); DELETE FROM Alumno WHERE nombre LIKE '%anito'; SELECT COUNT(*) FROM Alumno; COMMIT; BEGIN TRANSACTION; UPDATE Alumno SET nombre=”*ito”; SELECT * FROM Alumno; COMMIT; ROLLBACK;
  • 28. SQLite3 Triggers en SQLite3 Creación de Triggers 
  • 29. SQLite3 Triggers en SQLite3 (I) CREATE TRIGGER TR_Alumno BEFORE DELETE ON Alumno FOR EACH ROW BEGIN INSERT INTO Old_Alumnos VALUES (OLD.id,OLD.nombre); END; CREATE TRIGGER UpdateCustAddress AFTER UPDATE OF address ON Customer FOR EACH ROW BEGIN UPDATE orders SET address = new.address WHERE customer_name=old.name; END;
  • 30. SQLite3 Triggers en SQLite3 (II) Función RAISE (emite un error)  CREATE TRIGGER TRProyecto BEFORE DELETE ON Proyectos WHEN OLD.id IN ( SELECT id FROM Tareas ) BEGIN SELECT RAISE(ROLLBACK,”Existen tareas de éste proyecto … ”); END;
  • 31. SQLite3 Vistas en SQLite3 CREATE VIEW ClientesValenciaFacturas AS SELECT codcli,nombre,telefono,direccion FROM Clientes WHERE codcli IN ( SELECT codcli FROM Facturas ) AND (codpostal LIKE '46%');
  • 33. SQLite3      Demo    de SQLite3  ” FACTURAS ”
  • 34. SQLite3 Base de datos ”Facturas”