2. Introdução
• Cada vez que iniciamos um no projeto de
desenvolvimento de software é necessário optar
pela melhor ferramenta para manipulação dos
dados.
• As primeiras opções para esta persistência de
dados ser suportada por um banco de dados foram:
• Oracle, Informix, ProstgreSQL, MySQL e Fyrebird.
• Com a necessidade de agilidade, simplicidade e de
fácil configuração, surgiu o SQLite
3. Definição
• SQLite é uma base de dados relacional de código
aberto:
• Não é uma biblioteca cliente utilizada para se conectar a
um servidor de banco de dados.
• É uma biblioteca que é o próprio servidor.
• Escreve e lê diretamente do arquivo do Banco de
Dados.
• É compacta.
4. História
• Em janeiro de 2000 D. Richard Hipp trabalhava com
sua equipe na Força Naval dos Estados Unidos, em
um projeto de software, para misseis teleguiados.
Neste momento estava-se usando banco de dados
Informix, o que gerava alguns problemas na
reinicialização do sistema.
5. História
• Para solucionar o problema com o Informix a
equipe optou por migrar para o banco de dados
PostgreSQL, mas o gerenciamento deste banco de
dados ficou mais complexo que o esperado.
• Então, surgiu a ideia de se escrever um motor de
banco de dados SQL que fosse simples para ler e
escrever dados no disco rígido.
• 5 meses mais tarde começou-se a escrever a
primeira versão da biblioteca de banco de dados
SQLite.
7. Principais Usuários
• Adobe:
• Utilizado no Photoshop e no AdobeReader
• Apple Mac OS X:
• Apple Mail e Safari WebBrowse.
• Mozilla:
• Armazenamento de Metadados do Firefox Web Browser.
8. Principais Usuários
• McAfee:
• Programas de anti-vírus
• Philips:
• Metadados de reprodutores MP3.
• Google:
• Utilizado no Google Desktop e Google Gears.
• Utilizado na plataforma móvel Android.
9. Características
• Simplicidade
• Portável: Totalmente escrita em ANSI C
• Confiável: Biblioteca OpenSource 100% testada.
• Pequeno: Tamanho da biblioteca é inferior a 500Kb.
10. Características
• Transações atômicas, consistentes, isoladas e
duráveis (ACID).
• Zero-Configuração: Não necessita de configuração
ou administração.
• Implementa a maioria das funções SQL92.
• Um banco completo armazenado em um arquivo
de disco multi-plataforma.
13. Onde usar
• Sites com menos de 100.000 requisições por dia.
• Dispositivos e sistemas embarcados.
• Aplicações Desktop.
• Aprendizado de BDs.
14. Desvantagens
• Não é recomendada a utilização em sistemas que
possuem grande concorrência de leitura/escrita de
dados.
• Não possui controle de acesso.
• Não suporta base de dados maiores de 2TB.
15. Desvantagens
• Não possui suporte cliente/servidor nativo.
• Não possui suporte interno de replicação e
redundância.
• Não possui chave estrangeira.
• Limitação em uso de clausulas WHERE aninhadas.
16. Recomendação de Uso
Usado e recomendado onde é
necessário simplicidade de
administração, implementação e
manutenção.
17. Tipos de Dados
• NULL – Como em qualquer BD
• INTEGER – Inteiro com sinal, armazenado em até 8
bytes (de -9.223.372.036.854.775.808 até máximo
é 9.223.372.036.854.775.807).
• REAL – Valor de ponto flutuante, armazenado em 8
bytes.
• TEXT – String armazenada em UTF-8, UTF-16BE ou
UTF-16LE
• BLOB – Armazena um BLOB (objeto binário grande)
18. Tipos de Dados
• Booelan: Não existe, pode ser substituído por um
INTEGER armazenando 0 (falso) ou 1 (verdadeiro).
• Data e Hora: Não existe, pode ser armazenado
como:
• TEXT (YYYY-MM-DD HH:MM:SS.SSS).
• REAL (Dias Julianos, dia 0 é o meio dia de 24/11/4714 AC
do calendário Gregoriano).
• INTEGER (Como a hora do UNIX, a origem é 01/01/1970,
contando os segundos a partir desta data).
• (continua...)
19. Tipos de Dados
• Data e Hora: a partir do seu armazenamento são
acessados por funções:
• date(timestring, modificador, modificador, ...), retorna a
data no formato YYYY-MM-DD.
• time(timestring, modificador, modificador, ...), retorna a
hora no formato HH:MM:SS.
• datetime(timestring, modificador, modificador, ...), retorna
data e hora no formato YYYY-MM-DD HH:MM:SS.
• julianday(timestring, modificador, modificador, ...), retorna
o dia em inteiro do calendário juliano.
• strftime(format, timestring, modificador, modificador, ...),
retorna a data de acordo com o formato do primeiro
argumento.
20. Tipos de Dados
• Data e Hora
• Exemplos
• Ver mais em: http://www.sqlite.org/lang_datefunc.html
21. Recursos SQL Omitidos
• RIGHT e FULL OUTER JOIN.
• ALTER TABLE:
• DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT.
• TRIGGER FOR EACH STATMENT.
• VIEW:
• DELETE INSERT e UPDATE.
• GRANT e REVOKE:
• Somente permissões baseados no SO.
• FOREIGN KEY.
26. Instalação no Windows
• Para testar, vamos abrir o prompt de comando
(CMD) e digitar sqlite3, se o resultado for
semelhando ao abaixo a instalação está concluída
com sucesso.
27. Instalação no Windows
Com isso temos nosso SQLite pronto
para uso, sem necessidade de
nenhuma configuração.
28. Criando uma Base no SQLite
• Vamos criar um diretório “BancoSQLite” na raiz do
nosso SO, neste diretório iremos criar nosso
primeiro BD.
29. Criando uma Base no SQLite
• Acesse o CMD (Prompt de Comando):
• Digite sqlite3 e pressione [ENTER], com isto estaremos
dentro do “SQLite” podendo criar bases de dados e
manipular seus registros.
• Para sair do ambiente do SQLite, o comando é “.exit”
[ENTER] ou “.quit” [ENTER]
30. Comando “.open”.
• Este comando serve para criar ou abrir uma base de
dados, caso esta já existe com o nome informado.
• Sintaxe: sqlite> .open C:/BancoSQLite/nomedobanco.db
[ENTER].
• Com isto, já é criado o arquivo no diretório.
31. CREATE
• A criação de uma tabela no SQLite segue os
padrões de qualquer Banco de Dados que utilize
SQL, apenas respeitando as restrições de alguns
comandos que já foram discutidas, vamos criar a
tabela “contato”, dentro da nossa agenda.db.
32. CREATE
• Observações:
• Com exceção dos comandos que iniciam em “.” (como
.open e .exit), todos os demais comandos terminam
apenas quando um “;” é encontrado, por isso podemos
digitar nosso comando de criação de tabela em mais de
uma linha.
• O primeiro campo da nossa tabela é um integer e
primary key, tendo esta combinação ao ser inserido um
dado nesta tabela e ocultado o valor para este campo o
SQLite irá atribuir a ele um valor auto-incrementável.
33. INSERT
• Vamos inserir um registro da tabela, usaremos o
comando INSERT.
• Note que no primeiro registro “ocultamos” um
valor para o ID, no segundo damos um valor pra o
ID e no terceiro ocultamos novamente, no
comando SELECT vamos entender melhor como
este campo será preenchido no banco de dados.
34. SELECT
• Vamos listar todos os contatos da base de dados,
utilizaremos o comando SELECT:
• Vamos ver o que aconteceu com o campo ID, como
mencionamos ele é primary key e auto-incremento, no
primeiro registro ocultamos ele no INSERT ele salvou
este campo com o valor 1, no segundo INSERT
atribuímos o valor 10 a este campo e assim o foi salvo,
no terceiro INSERT ocultamos novamente ele voltou a
ser auto-incremento, salvando o valor 11 neste campo.