[SQLITE] SQLite para iniciantes

Lucas Siqueira

Active Member
Licensed User
Longtime User

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​

  1. Acesse o site oficial do SQLite: https://sqlite.org/download.html
  2. Encontre a seção Precompiled Binaries for Windows.
  3. Baixe o arquivo sqlite-tools-win-x64 ZIP (compatível com Windows 64-bit).

2. Instalar o SQLite​

  1. Extraia o conteúdo do arquivo ZIP baixado em uma pasta de sua escolha.
  2. Abra a pasta e verifique que existem três arquivos principais: sqlite3.exe, sqldiff.exe, e sqlite3_analyzer.exe.
  3. 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​

  1. Abra o Prompt de Comando (digite cmd no campo de pesquisa do Windows).
  2. Digite sqlite3 e pressione Enter. Se o SQLite estiver corretamente instalado, o terminal abrirá o shell interativo do SQLite.
  3. Se funcionar, você verá o shell interativo do SQLite.
  4. 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
);
Aqui, NOT NULL é usado para garantir que nome e email não sejam deixados em branco, e UNIQUE no campo email assegura que não haja duplicatas de emails no sistema.

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
);
Aqui, NOT NULL garante que todo produto tenha um nome, e UNIQUE impede que o mesmo nome de produto seja duplicado.

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
);
Neste exemplo, o campo cliente_id é uma chave estrangeira que se refere ao campo id da tabela clientes e o campo produto_id é uma chave estrangeira que se refere ao campo id da tabela produtos. Isso garante que cada pedido esteja associado a um cliente válido.


Listar Tabelas e Ver Campos​

  1. Listar todas as tabelas do banco de dados:
    SQL:
    .tables
  2. 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;
Aqui usamos ORDER BY preco DESC para encontrar o produto mais caro, e LIMIT 1 para mostrar apenas o produto mais caro.

9. Produto mais barato

SQL:
SELECT nome, preco
FROM produtos
ORDER BY preco ASC
LIMIT 1;
Aqui usamos ORDER BY preco ASC para encontrar o produto mais barato.

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;
Aqui usamos ORDER BY quantidade_vendida ASC para mostrar o produto menos vendido.

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​

  1. Atualizar o telefone de um cliente:
    SQL:
    UPDATE clientes SET telefone = '88888-9999' WHERE id = 1;

Deletando Dados​

  1. Deletar um pedido:
    SQL:
    DELETE FROM pedidos WHERE id = 1;
  2. 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:
Top