Como instalar e usar SQLite no Ubuntu — guia prático e rápido

Como instalar e usar SQLite no Ubuntu — guia prático e rápido
Como instalar e usar SQLite no Ubuntu — guia prático e rápido

no Ubuntu entrega um banco de dados leve e embutido que armazena tudo em um único arquivo .db, ideal para apps móveis, protótipos e ferramentas locais; oferece fácil instalação e portabilidade, mas não é recomendado para altas cargas de escrita simultânea, onde MySQL ou PostgreSQL são mais indicados.

SQLite é a solução leve para quem quer um banco SQL sem servidor no Ubuntu — quer e começar a usar agora? Neste guia rápido você encontra os comandos essenciais, exemplos práticos e dicas de backup para trabalhar com segurança e sem dor de cabeça.

O que é o SQLite e quando usar

SQLite é um banco de dados leve que usa um único arquivo no disco. Ele roda dentro do próprio aplicativo e não precisa de configuração complexa.

Ele é embutido no app, sem servidor externo. Isso facilita testes e distribuições rápidas.

  • Aplicativos móveis que precisam armazenar dados localmente e sincronizar depois com eficiência.
  • Sites pequenos ou protótipos onde instalar um servidor de banco de dados não compensa.
  • Ferramentas de linha de comando e scripts que precisam de um banco rápido e simples.
  • Aplicações desktop que exigem portabilidade fácil do arquivo de dados entre máquinas.

SQLite tem limitações em cenários com muitas escritas simultâneas. Em casos de alta concorrência, outros bancos são mais indicados.

Use SQLite para protótipos, apps móveis, pequenos sites e ferramentas locais rápidas. Se precisar de maior concorrência, avalie migrar para um servidor dedicado.

Instalando o SQLite no Ubuntu (apt passo a passo)

  1. Abra o terminal no Ubuntu para executar os comandos de instalação.
  2. Atualize a lista de pacotes com o apt antes de instalar.

    sudo apt update

    Isso garante que o sistema veja as versões mais recentes.

  3. Instale o cliente e a biblioteca de desenvolvimento.

    sudo apt install sqlite3 libsqlite3-dev -y

    O pacote sqlite3 fornece o programa de linha de comando.

  4. Verifique se a instalação funcionou checando a versão.

    sqlite3 --version

    Se retornar números, o sqlite3 está pronto para uso.

  5. Crie um banco de teste e abra o prompt do SQLite.

    sqlite3 teste.db

    No prompt você executa comandos SQL e comandos internos iniciados por ponto.

  6. Exemplo rápido: crie uma tabela e insira um registro.
    CREATE TABLE pessoas (id INTEGER PRIMARY KEY, nome TEXT);\nINSERT INTO pessoas (nome) VALUES ('João');\n

    Use .tables para ver tabelas e .schema para ver estrutura.

  7. Saia do prompt com o comando .quit ou com Ctrl+D.

    Também dá para rodar consultas direto no shell sem abrir o prompt.

    sqlite3 teste.db \"SELECT * FROM pessoas;\"

  8. Para backup, copie o arquivo ou use o comando de backup interno.

    sqlite3 teste.db \".backup backup.db\"

    O arquivo .db contém todo o banco e é fácil de transferir.

Criando e abrindo um banco de dados (.db)

SQLite guarda todo o banco em um único arquivo com extensão .db. Esse arquivo contém tabelas, índices e dados em um único lugar.

Para criar ou abrir um arquivo use o comando no terminal.

sqlite3 meu_banco.db

Se o arquivo não existir, o comando cria um novo arquivo vazio automaticamente.

No prompt do SQLite, você pode listar tabelas com o comando interno .tables. Para ver a estrutura de uma tabela use .schema nome_da_tabela.

Você também pode rodar consultas direto no shell, sem abrir o prompt interativo.

sqlite3 meu_banco.db \"SELECT * FROM pessoas;\"

Isso é útil em scripts e automações simples.

Verifique o arquivo no sistema com comandos normais do Linux. ls -lh meu_banco.db mostra tamanho e permissões do arquivo.

Coloque o arquivo em uma pasta adequada do aplicativo para manter organização. Evite deixar o .db em pastas públicas sem controle de acesso.

Antes de modificar, faça um backup copiando o arquivo ou usando o comando interno de backup. Isso evita perda de dados em caso de erro.

  • Abra o arquivo com o usuário correto para evitar problemas de permissão.
  • Use caminhos relativos nos scripts para facilitar portabilidade.
  • Em sistemas com muitas gravações simultâneas, considere outro banco por conta da concorrência.

Criando tabelas e inserindo dados (exemplos práticos)

SQLite usa SQL simples para criar tabelas e inserir dados localmente.

No terminal, crie uma tabela com o comando CREATE TABLE.

CREATE TABLE contatos (   id INTEGER PRIMARY KEY AUTOINCREMENT,   nome TEXT NOT NULL,   email TEXT,   criado_em DATETIME DEFAULT CURRENT_TIMESTAMP ); 

O PRIMARY KEY identifica cada registro de forma única e simples.

O AUTOINCREMENT faz o id aumentar automaticamente a cada novo registro.

Para inserir um registro, use o comando INSERT INTO com valores claros.

INSERT INTO contatos (nome, email) VALUES ('Ana Silva', '[email protected]'); 

Em aplicações, prefira usar parâmetros para evitar injeção de SQL na entrada.

Para inserir vários registros com segurança, agrupe comandos em uma transação.

BEGIN; INSERT INTO contatos (nome, email) VALUES ('Carlos', '[email protected]'); INSERT INTO contatos (nome, email) VALUES ('Marina', '[email protected]'); COMMIT; 

Se algo falhar, a transação evita salvar dados incompletos no arquivo.

Verifique os dados com um SELECT simples e confirme se as inserções funcionaram.

SELECT * FROM contatos; 
  • Crie índices em colunas usadas frequentemente em buscas para ganhar velocidade.
  • Evite armazenar blobs grandes em colunas TEXT; prefira arquivos externos quando possível.
  • Faça backups regulares do arquivo .db antes de mudanças substanciais na estrutura.

Consultas, atualização e exclusão de registros (SELECT/UPDATE/DELETE)

SELECT lê dados; UPDATE altera registros; DELETE remove linhas do banco de dados.

Um SELECT básico traz colunas específicas com uma condição simples.

SELECT id, nome, email FROM contatos WHERE nome LIKE '%Ana%' ORDER BY id DESC LIMIT 10; 

O WHERE filtra linhas e evita trazer todos os registros.

Use UPDATE para mudar valores em registros já existentes na tabela.

UPDATE contatos SET email = '[email protected]' WHERE id = 3; 

Coloque sempre a cláusula WHERE para não alterar tudo por engano.

DELETE remove linhas; sem WHERE ele apaga toda a tabela.

DELETE FROM contatos WHERE id = 5; 

Para apagar muitos registros, use limites e teste antes em cópia.

Agrupe várias mudanças em uma transação para garantir integridade dos dados.

BEGIN; UPDATE contatos SET email = '[email protected]' WHERE id = 2; DELETE FROM contatos WHERE id = 7; COMMIT; 

Use parâmetros nas consultas para evitar injeção de SQL em entradas.

  • Teste consultas em um banco de desenvolvimento antes de rodar em produção.
  • Faça backup do arquivo .db antes de grandes alterações na estrutura.
  • Crie índices nas colunas usadas frequentemente em filtros para ganhar velocidade.
  • Evite armazenar arquivos grandes dentro do banco; prefira referências externas.

JOINs e relacionamentos entre tabelas

O comando JOIN conecta duas ou mais tabelas e combina linhas relacionadas por chaves.

Use PRIMARY KEY para identificar uma linha, e FOREIGN KEY para referenciar outra tabela.

Um INNER JOIN retorna apenas as linhas que existem em ambas as tabelas.

SELECT p.id, p.nome, o.id AS pedido_id, o.total FROM pessoas p INNER JOIN pedidos o ON o.pessoa_id = p.id; 

Já o LEFT JOIN traz todas as linhas da tabela à esquerda, mesmo sem correspondência.

SELECT p.nome, o.total FROM pessoas p LEFT JOIN pedidos o ON o.pessoa_id = p.id; 

Para relacionamentos muitos-para-muitos, crie uma tabela intermediária chamada junction ou tabela de associação.

CREATE TABLE aluno_curso (   aluno_id INTEGER,   curso_id INTEGER,   PRIMARY KEY (aluno_id, curso_id) ); 

Ao consultar, use vários JOINs para ligar todas as tabelas necessárias numa única consulta.

Crie índices nas colunas usadas nos JOINs para reduzir o tempo das consultas.

No SQLite, JOINs funcionam bem em bases pequenas e médias, mas tenha cautela com concorrência.

Teste sempre em um banco de desenvolvimento antes de executar consultas em produção.

Backup e exportação: .backup, .dump e cópia de arquivo

SQLite guarda tudo em um único arquivo .db, então backup é essencial para evitar perda.

O comando interno .backup faz uma cópia segura enquanto o banco está em uso.

sqlite3 meu_banco.db sqlite> .backup backup.db 

O .backup copia o arquivo de forma consistente, mesmo com conexões abertas.

O comando .dump exporta todo o esquema e dados como texto SQL.

sqlite3 meu_banco.db ".dump" > dump.sql 

O arquivo dump.sql permite recriar o banco em outro sistema facilmente.

Copiar o arquivo .db com cp é o método mais simples e rápido.

cp meu_banco.db meu_banco.bak.db 

Antes de copiar manualmente, feche conexões ou garanta que não haja gravações ativas.

Prefira .backup quando não for possível encerrar o serviço que usa o banco.

Teste a restauração regularmente para confirmar que o backup funciona como esperado.

sqlite3 backup.db ".databases" sqlite3 backup.db "SELECT * FROM contatos LIMIT 5;" 
  • Armazene backups em local seguro e, se possível, fora do servidor principal.
  • Automatize backups com scripts e nomes com data para identificar versões.
  • Use .dump para migração entre versões diferentes do SQLite.
  • Faça testes de restauração antes de depender de um backup em produção.

Vantagens, limitações e quando escolher MySQL ou PostgreSQL

O SQLite é leve, roda dentro do aplicativo e usa um único arquivo.

Ele é ideal para protótipos, apps móveis e testes locais, por ser simples.

MySQL é popular em sites e aplicações web com muitas leituras simultâneas.

Ele escala bem para leitura e tem réplica fácil em servidores separados.

PostgreSQL é robusto, com funcionalidades avançadas e forte integridade de dados.

Ele oferece recursos como tipos geométricos, JSON avançado e extensões diversas.

  • Vantagens SQLite: instalação simples, portabilidade de arquivo e baixo consumo de recursos.
  • Vantagens MySQL: bom desempenho em leitura, suporte amplo e ferramentas maduras.
  • Vantagens PostgreSQL: consultas complexas, conformidade ACID e maior flexibilidade para modelos de dados.

Limitações SQLite: não é ideal para alta concorrência de escrita em produção.

Limitações MySQL: algumas funcionalidades avançadas são menos maduras que no PostgreSQL.

Limitações PostgreSQL: pode exigir mais recursos e mais administração em ambientes menores.

Escolha SQLite para apps locais e protótipos sem servidor dedicado.

Prefira MySQL quando precisar de performance em leitura e replicação simples.

Opte por PostgreSQL para dados complexos, integrações e regras rígidas de integridade.

Se estiver em dúvida, teste com uma carga real antes da migração final.

Resumo e próximos passos

O SQLite é prático para apps locais, protótipos e testes rápidos.

Ele funciona sem servidor e guarda tudo em um único arquivo .db.

Para aplicações com alta concorrência, prefira MySQL ou PostgreSQL.

Faça backups regulares e teste restaurações antes de depender deles.

Use índices e transações para melhorar desempenho e proteger os dados.

Comece com SQLite e migre depois, se o projeto exigir mais escala.

Pratique os comandos apresentados e experimente no seu ambiente local hoje.

FAQ – Perguntas frequentes sobre SQLite e uso no Ubuntu

O que é o SQLite?

O SQLite é um banco de dados leve que roda dentro do aplicativo. Ele salva tudo em um único arquivo .db e não precisa de servidor.

Quando devo usar o SQLite?

Use SQLite para protótipos, apps móveis, ferramentas locais e sites pequenos. Ele é ótimo quando você precisa de portabilidade e simplicidade.

Como crio e abro um arquivo .db?

No terminal, rode: sqlite3 meu_banco.db. Use .tables para listar tabelas e .schema para ver a estrutura.

Qual a melhor forma de fazer backup?

Use .backup para copiar com segurança enquanto o banco está em uso. Você também pode usar .dump para exportar em SQL ou copiar o arquivo .db quando fechado.

Quais são as limitações do SQLite?

SQLite não é indicado para muitos processos escrevendo ao mesmo tempo. Em sistemas com alta concorrência de escrita, prefira um banco com servidor.

Como migrar para MySQL ou PostgreSQL?

Exporte o banco com .dump e ajuste o SQL se necessário. Depois importe no MySQL ou PostgreSQL e teste a aplicação com a nova base.