Introdução ao SQLite
O SQLite é um banco de dados leve e rápido, muito usado em aplicativos Android para armazenar informações. Ele não precisa de um servidor separado para funcionar, pois armazena os dados diretamente em um arquivo.Com o SQLite, você pode:
- Armazenar informações de forma organizada.
- Consultar, inserir, atualizar e apagar dados.
- Criar aplicativos que funcionam offline.
Passo a Passo: Como Baixar e Instalar o SQLite no Windows e Iniciar o Uso
1. Baixar o SQLite
- Acesse o site oficial do SQLite: https://sqlite.org/download.html
- Encontre a seção Precompiled Binaries for Windows.
- Baixe o arquivo sqlite-tools-win-x64 ZIP (compatível com Windows 64-bit).
2. Instalar o SQLite
- Extraia o conteúdo do arquivo ZIP baixado em uma pasta de sua escolha.
- Abra a pasta e verifique que existem três arquivos principais: sqlite3.exe, sqldiff.exe, e sqlite3_analyzer.exe.
- Para facilitar o uso do SQLite, adicione o caminho da pasta onde você extraiu o sqlite3.exe às variáveis de ambiente do Windows:
- Clique com o botão direito no Menu Iniciar e vá em Sistema > Configurações Avançadas do Sistema > Variáveis de Ambiente.
- Na seção Variáveis do Sistema, selecione Path e clique em Editar.
- Clique em Novo e adicione o caminho da pasta onde o sqlite3.exe foi extraído.
- Clique em OK para salvar.
3. Verificar Instalação
- Abra o Prompt de Comando (digite cmd no campo de pesquisa do Windows).
- Digite sqlite3 e pressione Enter. Se o SQLite estiver corretamente instalado, o terminal abrirá o shell interativo do SQLite.
- Se funcionar, você verá o shell interativo do SQLite.
- Para sair, digite .exit e pressione Enter.
Primeiros Passos com SQLite: Criação de Tabelas e Comandos Básicos
1. Criando um Banco de Dados
No shell do SQLite, você pode criar um banco de dados com o comando:
SQL:
sqlite3 minha_loja.db
Isso cria (ou abre) um arquivo de banco de dados chamado minha_loja.db.
2. Criando Tabelas
Aqui estão três tabelas: clientes, pedidos, e produtos, explicando a utilização de PRIMARY KEY, AUTOINCREMENT, FOREIGN KEY, UNIQUE, e NOT NULL.- PRIMARY KEY (Chave Primária): Um identificador único para cada registro de uma tabela. No exemplo da tabela clientes, a coluna id é a chave primária, garantindo que cada cliente tenha um número de identificação único.
- AUTOINCREMENT: Gera automaticamente valores únicos para a chave primária, evitando conflitos ou duplicações nos IDs.
- FOREIGN KEY (Chave Estrangeira): Relaciona uma tabela a outra. No exemplo da tabela pedidos, a coluna cliente_id faz referência à chave primária id da tabela clientes, garantindo que cada pedido esteja vinculado a um cliente existente.
- UNIQUE: Garante que os valores de uma coluna (por exemplo, email) sejam únicos e não duplicados, evitando registros com informações repetidas.
- NOT NULL: Impede que um campo tenha valores nulos, ou seja, obriga que um valor válido seja inserido. Isso é útil quando queremos garantir que informações essenciais, como nome e email, sempre estejam presentes.
Exemplo 1: Tabela de Clientes
SQL:
CREATE TABLE IF NOT EXISTS clientes (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Chave primária
nome TEXT NOT NULL, -- Nome não pode ser nulo
email TEXT NOT NULL UNIQUE, -- Email não pode ser nulo e deve ser único
telefone TEXT,
data_nascimento TEXT
);
Exemplo 2: Tabela de Produtos
SQL:
CREATE TABLE IF NOT EXISTS produtos (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Chave primária
nome TEXT NOT NULL UNIQUE, -- Nome não pode ser nulo e deve ser único
preco REAL
);
Exemplo 3: Tabela de Pedidos
SQL:
CREATE TABLE IF NOT EXISTS pedidos (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Chave primária
cliente_id INTEGER NOT NULL, -- Referência ao cliente não pode ser nula
data_pedido TEXT NOT NULL, -- Data do pedido também não pode ser nula
valor_total REAL,
produto_id INTEGER NOT NULL, -- Referência ao produto não pode ser nula
FOREIGN KEY(cliente_id) REFERENCES clientes(id), -- Referência ao id de clientes
FOREIGN KEY(produto_id) REFERENCES produtos(id) -- Referência ao id de produtos
);
Listar Tabelas e Ver Campos
- Listar todas as tabelas do banco de dados:
SQL:.tables
- Visualizar a estrutura de uma tabela (campos e tipos):
SQL:PRAGMA table_info(clientes);
Inserindo Dados
Após criar as tabelas, podemos inserir dados nas tabelas de clientes, pedidos, e produtos.Inserindo 3 Clientes (com data de nascimento aleatória):
SQL:
INSERT INTO clientes (nome, email, telefone, data_nascimento) VALUES
('João Silva', '[email protected]', '99999-9999', '1985-04-15'),
('Maria Oliveira', '[email protected]', '88888-8888', '1990-02-10'),
('Ana Lima', '[email protected]', '77777-7777', '1995-11-30');
Inserindo 3 Produtos:
SQL:
INSERT INTO produtos (nome, preco) VALUES
('Teclado', 120.0),
('Mouse', 80.75),
('Notebook', 2567.99);
Inserindo 10 Pedidos (com datas aleatórias):
SQL:
INSERT INTO pedidos (cliente_id, data_pedido, valor_total, produto_id) VALUES
(1, '2024-01-10', 2567.99, 3),
(1, '2024-02-03', 2567.99, 3),
(1, '2024-02-15', 120.0, 2),
(2, '2024-03-01', 120.0, 2),
(2, '2024-03-07', 120.0, 2),
(2, '2024-04-05', 80.75, 2),
(2, '2024-04-18', 80.75, 2),
(2, '2024-05-02', 80.75, 2),
(2, '2024-05-22', 80.75, 2),
(3, '2024-06-12', 120.0, 1);
Consultando Dados (SELECT)
Aqui estão consultas SQL com explicações dos comandos usados:- JOIN: Combina dados de duas tabelas, ex: nome do produto que o id está vinculado na tabela pedidos. Relacionamos o id de produtos com o produto_id em pedidos.
- GROUP BY: Agrupa os resultados, Ex: por produto, para contar quantas vezes cada produto foi vendido.
- ORDER BY: Ordena a listagem, ex: quantidade de vendas em ordem decrescente, para mostrar o produto mais vendido primeiro.
- LIMIT: Limita a quantidade de registros na listagem, ex: limite 1, mostrando apenas o primeiro registro.
- WHERE: Coloca condições para trazer os registros, ex: where preco >= 100, só vai listar os produtos que tiverem o valor maior ou igual a 100.
- LIKE: normalmente utilizamos em texto para procurar parte de um nome, ex: where nome like '%ma%', listaria somente nomes com ma.
1. Listando todos os clientes
SQL:
SELECT *
FROM clientes;
2. Listando todos os clientes em ordem alfabética
SQL:
SELECT *
FROM clientes
ORDER BY nome ASC;
3. Listando todos os clientes em ordem alfabética decrescente
SQL:
SELECT *
FROM clientes
ORDER BY nome DESC;
4. Listando somente 2 primeiros registros
SQL:
SELECT *
FROM clientes
LIMIT 2;
5. Listando somente nomes com letras ma
SQL:
SELECT *
FROM clientes
WHERE nome LIKE '%ma%';
6. Listando todos os produtos em ordem alfabética decrescente e limitando somente 2 primeiros registros
SQL:
SELECT *
FROM produtos
ORDER BY nome DESC
LIMIT 2;
7. Listando somente produtos com preço maior ou igual a 100,00 e por ordem de preço
SQL:
SELECT *
FROM produtos
WHERE preco >= 100.0
ORDER BY preco ASC;
8. Produto mais caro
SQL:
SELECT nome, preco
FROM produtos
ORDER BY preco DESC
LIMIT 1;
9. Produto mais barato
SQL:
SELECT nome, preco
FROM produtos
ORDER BY preco ASC
LIMIT 1;
10. Produto mais vendido (com base na quantidade de pedidos)
SQL:
SELECT produtos.nome, COUNT(pedidos.id) AS quantidade_vendida
FROM produtos
JOIN pedidos ON produtos.id = pedidos.produto_id
GROUP BY produtos.nome
ORDER BY quantidade_vendida DESC
LIMIT 1;
11. Produto menos vendido
SQL:
SELECT produtos.nome, COUNT(pedidos.id) AS quantidade_vendida
FROM produtos
JOIN pedidos ON produtos.id = pedidos.produto_id
GROUP BY produtos.nome
ORDER BY quantidade_vendida ASC
LIMIT 1;
12. Quantidade de vendas por mês
SQL:
SELECT strftime('%Y-%m', data_pedido) AS mes, COUNT(id) AS quantidade_vendas
FROM pedidos
GROUP BY mes;
- strftime: Formata a data para mostrar apenas o ano e o mês (%Y-%m).
- GROUP BY: Agrupa os pedidos por mês, para contar quantos pedidos foram feitos em cada mês.
13. Valor total de vendas por mês
SQL:
SELECT strftime('%Y-%m', data_pedido) AS mes, SUM(valor_total) AS valor_total_vendas, COUNT(*) AS quantidade_vendas, MAX(valor_total) AS maior_venda, MIN(valor_total) AS menor_venda
FROM pedidos
GROUP BY mes;
- SUM: Soma o valor total de vendas por mês.
- COUNT: Conta a quantidade total de vendas por mês.
- MAX: Obtem o maior valor de venda por mês.
- MIN: Obtem o menor valor de venda por mês.
Atualizando e Deletando Dados
Atualizando Dados
- Atualizar o telefone de um cliente:
SQL:UPDATE clientes SET telefone = '88888-9999' WHERE id = 1;
Deletando Dados
- Deletar um pedido:
SQL:DELETE FROM pedidos WHERE id = 1;
- Deletar um cliente (e os pedidos associados):
SQL:DELETE FROM clientes WHERE id = 2;
Deletando uma Tabela
Para deletar a tabela produtos criada anteriormente:
SQL:
DROP TABLE IF EXISTS produtos;
Conclusão
Este guia abrange desde a instalação do SQLite, criação e manipulação de tabelas e dados, até consultas avançadas, como contar registros, calcular médias, somar valores, e identificar máximos e mínimos. As explicações dos comandos JOIN, GROUP BY, ORDER BY, LIMIT, e strftime ajudam a entender como construir consultas poderosas para análise de dados.
Last edited: