SQLite: um motor de bases de dados relacional open source
1. SQLite
um motor de bases de dados relacional
open source
Versão 1.0, Dezembro de 2016
Luís Borges Gouveia
Universidade Fernando Pessoa
lmbg@ufp.edu.pt
2. O que é o SQLite
• É uma biblioteca em linguagem C que implementa um sistema de
gestão de bases de dados (SGBD) relacional
• É um motor autocontido, embebido, sem servidor, transacional e sem
necessidade de configuração
• Está disponível em open source e sem custos associados
• Multiplataforma (Windows, Apple, Linux, Android)
• Site oficial: http://www.sqlite.org
• Logo do SQLite…
Luis Borges Gouveia, lmbg@ufp.edu.pt
3. O mote do SQLite:
pequeno, rápido e fiável…
Luis Borges Gouveia, lmbg@ufp.edu.pt
4. Origens
• a implementação original do SQLite foi desenvolvida por
Richard Hipp (1961, )
• o software destinava-se a ser utilizado em sistemas de
misseis teleguiados e, por isso mesmo, com recursos
limitados para o correr
• um dos requisitos para o programa era o de permitir correr sem uma
instalação de bases de dados ou de administração de dados (originou
a criação de um motor próprio, com pouca exigência de recursos,
para gerir os dados)
• levou ao desenvolvimento em C, de um gestor de bases de dados
Luis Borges Gouveia, lmbg@ufp.edu.pt
5. História do SQLite
• Versão 1.0: Maio de 2000
• A versão inicial foi baseada no gestor de bases de dados GNU (GDBM)
• Versão 2.0: Setembro de 2001
• Substituida a implementação GBDM por uma estrutura de árvores binárias clássica
(B-tree)
• Versão 3.0: Junho de 2004
• Adicionou muitas das funcionalidades mais sofisticadas e comerciais, fazendo do
software, uma excelente opção para o uso de bases de dados locais e para o ensino
de bases de dados
• Atualmente (v 3.15.2) tem utilização à escala global e o suporte de
inúmeras empresas, que formaram um consórcio para suportar o SQLite
Luis Borges Gouveia, lmbg@ufp.edu.pt
6. Especificações do SQLite
• O SQLite trabalha com formatos de aplicação de ficheiros:
• possui mecanismo de armazenamento seguro com transações ACID (atomicidade, consistência, isolamento e
durabilidade)
• triggers com funcionalidade de desfazer e refazer
• Análise de dados temporários:
• com um cliente de linha de commando
• importação de ficheiros csv
• uso de SQL para analisar e gerar relatórios
• Respeita a norma SQL:
• implementa a maior parte da especificação da norma SQL92
• Testado e contido:
• limita o potencial dano
• Dispositivos embebidos:
• pequeno: usa apenas ANSI C e VFS, com o formato de ficheiros multiplataforma
• fiável: com corbetura de teste a 100%, código em open source e portável e base de dados de erros
reportados e com transações ACID, mesmo em caso de falha de energia
• rápido: biblioteca de 300 KB, corre com poucos recursos, 16 KB pilha e 100 KB heap
Luis Borges Gouveia, lmbg@ufp.edu.pt
7. Para obter o SQLite
• Existe uma página que concentra os diferentes recursos para
descarregar: https://www.sqlite.org/download.html
• O código fonte
• A documentação
• Os executáveis, utilitários e código fonte, para diferentes
ambientes:
• Android
• Linux
• MAC OS X
• Windows
Luis Borges Gouveia, lmbg@ufp.edu.pt
8. Exemplos de entidades que usam o SQLite
• Adobe: embebido no Photoshop e AcrobatAdobe reader
• Airbus: no software de voo dos aviões
• Apple: usado no itunes e na maioria das aplicações que correm MAC OS X,
iPhones e iPods; email, etc.
• Google: usado no Android e no browser Chrome
• Dropbox: no arquivo de ficheiros e serviço de sincronização
• As linguagens de programação PHP e Python incluem o SQLite nas suas
instalações base
• Outras :
• Facebook, General Electric, Intuit, MacAfee; Microsoft; Skype; Mozilla
Firefox
Luis Borges Gouveia, lmbg@ufp.edu.pt
9. Quando usar o SQLite?
Os dados estão separados da aplicação por uma rede? Escolher um sistema
cliente / servidor
Existe a necessidade de muitas escritas concorrentes? Escolher um sistema
cliente / servidor
Existe a necessidade de lidar com muitos dados (Big Data)? Escolher um sistema
cliente / servidor
Outra situação? Escolher o
SQLite…
Luis Borges Gouveia, lmbg@ufp.edu.pt
10. Caraterísticas do SQLite
vantagens
• Não possui configuração
• basta instalar e começar a usar
• Não existe um processo de servidor para administrar ou contas de
utilizadores para gerir
• É facil de realizar cópias de segurança e transmitir a base de dados
• basta copiar um ficheiro
• Possui tipos dinâmicos por valores de colunose e tamanhos variáveis
para registos de colunas
• As consultas podem referenciar múltiplos ficheiros de bases de
dados
• Possui algumas extensões não normalizadas SQL
Luis Borges Gouveia, lmbg@ufp.edu.pt
11. O que o SQLite não possui
desvantagens
• Sistema de alta concorrência
• bloqueio de leitura e escrita na totalidade do ficheiro
• Conjuntos de dados alargados:
• a base de dados não pode exceder os TB (Terabytes) e está
limitada aos recursos do sistema para a dimensão de um ficheiro
• Controlo de acesso:
• não existe uma implementação
Luis Borges Gouveia, lmbg@ufp.edu.pt
12. Usos para o SQLite
• O objetivo principal do SQLite é ser simples
• Usar para:
• sites com menos de cem mil requisições por dia
• dispositivos e sistemas embarcados
• aplicações desktop
• ferramentas estatísticas e de análise
• ensino e aprendizagem do bases de dados
• Implementação de novas extensões de SQL
Luis Borges Gouveia, lmbg@ufp.edu.pt
13. O Interface de linha de comando do SQLite
• Corre numa janela de comando e permite dois tipos de comandos:
• De sistema, do SQLite, iniciados por .
(ponto)
• exemplo: .help
• Da norma SQL, que são finalizados por ;
(ponto e vírgula)
• exemplo: create table fcp(tit text);
Luis Borges Gouveia, lmbg@ufp.edu.pt
14. Existem alternativas de usar o SQLite, além da
linha de comando
• SQLiteStudio (3.1.1)
• http://sqlitestudio.pl/
• também open source
Luis Borges Gouveia, lmbg@ufp.edu.pt
15. Existem alternativas de usar o SQLite, além da
linha de comando
• DBBrowser (3.9.1)
• http://sqlitebrowser.org/
• também open source
Luis Borges Gouveia, lmbg@ufp.edu.pt
16. O que é o SQL
• É uma linguagem de quarta geração (4GL) orientada para a consulta e
operação em bases de dados, com recurso à linguagem corrente
(Inglês)
• SQL é o acrónimo de Structure Query Language (Linguagem
estruturada de consultas)
• Originado do SEQUEL (Structured English Query Language, parte do
sistema R, da IBM – 1974)
• É uma norma ISO e ANSI: SQL/92 ou SQL2, suportada pelo SQLite
• existe um SQL99 ou SQL3…
Luis Borges Gouveia, lmbg@ufp.edu.pt
17. Duas categorias de funções do SQL
Simplificando…
• DDL – Data Definition Language
• Engloba os comandos para criar as bases de dados e o respetivo esquema
• Permite especificar a criação, alteração e eliminação de tabelas e seus
atributos
• Também permite especificação de outros objetos de bases de dados, como os
índices e as vistas e definir os direitos de acesso…
• DML – Data Manipulation Language
• Engloba os comandos para lidar e manipular os dados de uma base de dados
• Inclui os comandos SQL para se poder inserir, atualizar, eliminar e consultar os
dados de uma base de dados
• O SQL do SQLite: http://www.sqlite.org/lang.html
Luis Borges Gouveia, lmbg@ufp.edu.pt
18. Comandos básicos SQL para manipular uma base
de dados
• Os dados numa base de dados relacional estão organizados em
tabelas que são matrizes
• Em que a matriz, constitui a entidade a representar
(exemplo: a entidade aluno)
• Em que as colunas, constituem os diferentes atributos da entidade
(por exemplo: os atributos de número, nome, país de origem,
constituem três atributos da entidade aluno)
• Em que as linhas são os elementos ou instâncias da entidade
• (por exemplo: os dados Luis, Joana, António e Rita, com os respetivos
atributos de número, nome e país de origem, constituem quatro
instâncias ou ocorrências da entidade aluno)
Luis Borges Gouveia, lmbg@ufp.edu.pt
19. O (pequeno) exemplo de uma tabela
Número Nome País
40451 Luis Portugal
41384 Joana UK
42224 António Brasil
52001 Rita USA
• as tabelas são os elementos que constituem as componentes onde se
encontram os dados de uma base de dados relacional, como o SQLite
• tabela: estudante e atributos: num, nome e pais
• conteúdo: quatro (4) ocorrências ou instâncias de aluno
Luis Borges Gouveia, lmbg@ufp.edu.pt
20. Comandos SQL (DDL) para as tabelas
• CREATE TABLE (para criar uma tabela)
• CREATE TABLE estudante(num INTEGER, nome TEXT) ;
• ALTER TABLE (para alterar uma tabela)
• ALTER TABLE estudante ADD COLUMN pais TEXT;
• DROP TABLE (para eliminar uma tabela)
• DROP TABLE estudante;
Luis Borges Gouveia, lmbg@ufp.edu.pt
21. Comandos básicos SQL para manipular os dados
• CRUD – Create, Read, Update, Delete
• Criar a instância para o aluno 40451, Luis de Portugal
• INSERT INTO estudante VALUES (40451, ‘Luis’, ‘Portugal’);
• Criar a instância para a aluna 41384, Joana do Reino Unido (UK)
• INSERT INTO estudante VALUES(41384, ‘Joana’, ‘UK’);
• Criar a instância para o aluno 42224, António, do Brasil
• INSERT INTO estudante VALUES(42224, ‘António’, ‘Brasil’);
• Criar a instância para a aluna 52001, Rita, dos USA
• INSERT INTO estudante VALUES(52001, ‘Rita’, ‘USA’);
Luis Borges Gouveia, lmbg@ufp.edu.pt
22. Comandos básicos SQL para manipular uma
base de dados
• CRUD – Create, Read, Update, Delete
• Selecionar todos os alunos da tabela estudante
• SELECT * FROM estudante;
• SELECT num, nome, pais FROM estudante;
• Selecionar o nome e pais dos alunos
• SELECT nome, pais FROM estudante;
• Selecionar os dados associados com o aluno número 52001 (a Rita)
• SELECT * FROM estudante WHERE num=52001;
• As consultas de dados podem ser muito sofisticadas ao incluir funções que
contam ocorrência, calculam médias, máximos e mínimos, usam
expressões ou relacionam valores e até exploram os resultados de outras
consultas embebidas
Luis Borges Gouveia, lmbg@ufp.edu.pt
23. Comandos básicos SQL para manipular uma
base de dados
• CRUD – Create, Read, Update, Delete
• Atualizar o nome Luis para Luís (colocar o acento…)
• UPDATE estudante SET nome = ‘Luís’ WHERE num = 40451;
• Atualizar a informação de país de origem para Portugal, para todos os
estudantes
• UPDATE estudante SET pais = ‘Portugal’;
Luis Borges Gouveia, lmbg@ufp.edu.pt
24. Comandos básicos SQL para manipular uma
base de dados
• CRUD – Create, Read, Update, Delete
• Eliminar todos os elementos da tabela estudante
• DELETE FROM estudante;
• Eliminar a Joana da tabela de estudantes (concluiu o seu estudo…)
• DELETE FROM estudante WHERE num = 41384;
Luis Borges Gouveia, lmbg@ufp.edu.pt
25. A melhor forma de aprender é praticar e
experimentar
Luis Borges Gouveia, lmbg@ufp.edu.pt
26. Experimentar (I)
• 1º conjunto de slides:
Um exemplo do uso de bases de dados, SQLite e a
exploração SQL
• Introduz o SQLite e o seu uso e apresenta um exemplo para prática
em contexto efetivo da criação e consulta a uma base de dados
• http://www.slideshare.net/lmbg/sqlite-select-exemp2013
Luis Borges Gouveia, lmbg@ufp.edu.pt
27. Experimentar (II)
• 2º conjunto de slides:
Base de dados: desafio 1
• Responde ao desafio colocado no slide final do primeiro conjunto
de slides. Os resultados apresentados apenas listam os dados de
2013, pelo que a informação associada aos dados de 2015 não
consta nos slides
• http://www.slideshare.net/lmbg/base-de-dados-desafio-1
Luis Borges Gouveia, lmbg@ufp.edu.pt
28. Proposta de trabalho 1
• Fazer uma apresentação em MS Powerpoint que apresente do mesmo
modo que os slides do 2º conjunto, os resultados para todos os
dados, incluindo os 3 livros de 2015
Luis Borges Gouveia, lmbg@ufp.edu.pt
29. Experimentar (III)
• 3º conjunto de slides:
Base de dados: desafio 2
• Apresenta um conjunto de extensões de funcionalidade para a
base de dados sobre livros, com inclusão de empréstimos e
anotações sobre os livros
• http://www.slideshare.net/lmbg/base-de-dados-desafio2
Luis Borges Gouveia, lmbg@ufp.edu.pt
30. Experimentar (IV)
• 4º conjunto de slides:
Mais um exemplo do recurso a base de dados relacionais em
SQLite
• Apresenta uma nova base de dados, desta vez associada com as
orientações
• http://www.slideshare.net/lmbg/um-exemplo-do-uso-do-sqlite-
uma-base-de-dados-para-alumni
Luis Borges Gouveia, lmbg@ufp.edu.pt
31. Proposta de trabalho 2
• Fazer uma apresentação em MS Powerpoint que apresente a
atualização dos dados associados com os alumni (alunos que
concluíram os seus trabalhos com sucesso), tendo em conta os dados
que constam já na base de dados e os que compõem a lista mais atual
que está disponível, em http://homepage.ufp.pt/lmbg/mono_on.htm
Luis Borges Gouveia, lmbg@ufp.edu.pt