← Projetos

Tutorial

SQLite Manager: manual de utilização

Como abrir, consultar, editar e salvar bancos SQLite no navegador, sem instalar nada: do primeiro uso à manutenção do banco.

O que é o SQLite Manager

O SQLite Manager abre, consulta, edita e salva bancos de dados SQLite usando apenas o navegador. Ele é um único arquivo HTML: não há instalação, servidor nem conta. [1] O motor do banco é o próprio SQLite, compilado para WebAssembly e embutido no arquivo. [2]

Abrir o SQLite Manager

Tela inicial do SQLite Manager, com os botões Abrir banco, Novo banco vazio e Banco de exemplo
A tela inicial: arraste um arquivo ou escolha uma das três opções.

Este manual serve para quem quer gerenciar um banco sem instalar nada. As tarefas do dia a dia não exigem SQL; a aba SQL atende quem já conhece a linguagem.

O que você precisa

  • Um navegador atual. Chrome e Edge são os recomendados, porque gravam direto no arquivo original.
  • O arquivo sqlite-manager.html. Use o link acima ou salve a página e abra a cópia, que funciona sem internet.

Como o app trata os seus dados

  • Nada sai do seu computador. O banco é processado dentro do navegador, e o arquivo HTML bloqueia conexões de rede.
  • O banco é editado na memória. O arquivo em disco só muda quando você salva.
  • O navegador guarda poucas coisas. Tema, tamanho de página, texto do editor SQL e histórico de consultas ficam no armazenamento local. O conteúdo do banco não fica, mas valores escritos em consultas ficam no histórico.

Primeiros passos

Em cerca de dez minutos, este roteiro passa pelas principais funções usando o banco de exemplo, sem risco para dados reais. O exemplo tem clientes, produtos, pedidos e itens de pedido.

1. Abra o exemplo

  1. Abra o SQLite Manager.
  2. Clique em Banco de exemplo. A tabela clientes aparece na aba Dados.

2. Encontre um registro

  1. Na linha de filtros, abaixo do título da coluna cidade, digite recife. Sobra apenas Carla Nunes.
  2. Apague o filtro para ver as cinco linhas de novo.
  3. Clique no título da coluna nome para ordenar. Clique de novo para inverter e uma terceira vez para desfazer.

3. Edite e insira dados

  1. Dê um duplo clique na cidade de Ana Ribeiro, digite Campinas e pressione Enter. O aviso ● não salvo aparece na barra superior.
  2. Clique em + Linha, preencha nome e clique em Inserir. As demais colunas recebem o valor padrão.

4. Siga uma referência

  1. Na lista à esquerda, clique em pedidos.
  2. Na coluna cliente_id, clique na seta ↗ ao lado de um valor. O app abre clientes filtrada nesse cliente.

5. Execute SQL

  1. Abra a aba SQL, escreva a consulta abaixo e pressione Ctrl+Enter. O resultado mostra o total por cliente.
    SELECT * FROM vw_total_por_cliente;
  2. Troque o texto pelo comando abaixo e execute. A mensagem informa 2 linhas alteradas: o item inserido e o estoque baixado pelo trigger trg_baixa_estoque.
    INSERT INTO itens_pedido VALUES (4, 1, 1, 349.9);
  3. Clique em produtos. A aba Dados abre, e o estoque do teclado caiu de 39 para 38.

6. Desfaça ou salve

  1. Para desfazer tudo, clique em Reverter e confirme. O exemplo volta ao estado inicial.
  2. Para guardar uma cópia, clique em Salvar e escolha onde gravar.

A interface

A tela tem quatro áreas fixas, e as quatro abas mudam apenas a área central. Depois de aberto um banco, a tela fica assim:

Tela principal com a barra superior, a lista de objetos à esquerda, as abas Dados, Estrutura, SQL e Banco, e a grade com a tabela clientes
A tela principal com a tabela clientes aberta na aba Dados.
Barra superior
Arquivo (Novo, Abrir…, Salvar, Salvar como…, Reverter), Importar CSV…, Exportar .sql e o botão ◐, que alterna entre tema claro e escuro.
Lista de objetos
Tabelas, views, índices, triggers e tabelas do sistema, com o número de linhas de cada tabela. O campo acima filtra a lista, e + Tabela cria uma tabela.
Abas
Dados mostra as linhas, Estrutura mostra e altera o esquema, SQL executa comandos e Banco traz informações e manutenção.
Barra de status
Versão do SQLite, tamanho do banco, aviso de transação aberta e a opção Chaves estrangeiras.

Abrir, salvar e reverter

Tudo o que você faz altera uma cópia na memória; o arquivo em disco só muda quando você salva. Esse é o conceito mais importante do app:

Diagrama: Abrir copia o arquivo do disco para o banco na memória; Salvar grava de volta; edições e SQL alteram o banco na memória; Reverter o devolve ao último estado salvo; Importar CSV traz dados e Exportar gera CSV, JSON ou SQL
O banco na memória é o centro: o arquivo em disco só muda ao salvar.

Abrir ou criar um banco

ComoO que acontece
Abrir…Escolhe um arquivo .db, .db3, .sqlite, .sqlite3, .s3db ou .sl3. Atalho: Ctrl+O.
Arrastar e soltarSolte o arquivo em qualquer ponto da janela.
NovoCria um banco vazio chamado novo.sqlite e abre a aba SQL.
Banco de exemploDisponível na tela inicial. Traz tabelas, view, índice e trigger para praticar.

Se o banco atual tiver alterações não salvas, o app pede confirmação antes de trocar. Arquivos que não são SQLite, ou que estão criptografados, são recusados, e o banco atual continua aberto.

Salvar

O indicador ● não salvo mostra que há alterações só na memória. O app também avisa se você tentar fechar a aba nessa situação.

AçãoChrome e EdgeOutros navegadores
Salvar (Ctrl+S)Grava no arquivo original. O navegador pede permissão na primeira vez. [7]Baixa uma cópia para a pasta de downloads.
Salvar como…Pergunta nome e local, e esse arquivo passa a ser o atual.Baixa uma cópia para a pasta de downloads.

No Chrome e no Edge, se outro programa tiver alterado o arquivo depois da abertura, o app pede confirmação antes de substituir. Para manter as duas versões, cancele e use Salvar como….

Reverter

Reverter descarta tudo o que foi feito desde a abertura ou o último salvamento. É o único “desfazer” do app: não há desfazer passo a passo. Antes de uma alteração arriscada, salve; assim, o ponto de retorno fica logo antes dela.

Bancos em modo WAL

Alguns programas usam o modo WAL, que mantém alterações recentes em um arquivo -wal ao lado do banco. [5] O navegador recebe apenas o arquivo principal, então o app avisa ao abrir e toma duas medidas:

  • Abre o banco sem o conteúdo do -wal. Para ver os dados mais recentes, feche antes o programa que usa o banco.
  • Não grava sobre o original. Salvar pede um arquivo novo, e a sugestão de nome termina em -copia. Não sobrescreva o original, porque um -wal antigo ao lado dele pode corromper os dados.

Aba Dados

A aba Dados mostra as linhas da tabela ou view selecionada, e nela você busca, edita, insere e exclui sem escrever SQL.

Navegar e ordenar

  • Os controles abaixo da grade trocam de página. Escolha 50, 100, 500 ou 1000 linhas por página.
  • Clique no título de uma coluna para ordenar: crescente, decrescente e sem ordem. A ordenação usa uma coluna por vez.
  • O marcador PK identifica colunas da chave primária.
  • Valores nulos aparecem como NULL em itálico, e dados binários como BLOB com o tamanho.

Filtrar e buscar

Cada coluna tem um campo de filtro, e filtros em colunas diferentes valem juntos. O campo Buscar em todas as colunas procura o texto em qualquer coluna. Limpar filtros remove tudo.

Você digitaEncontra
anaValores que contêm “ana”.
=Recife ou !=RecifeValor igual ou diferente, respeitando maiúsculas.
>10, >=10, <10, <=10Comparações, também com datas no formato 2026-10-30.
NULL ou !NULLCélulas vazias ou preenchidas.

Editar uma célula

Dê um duplo clique na célula. Com o teclado, clique uma vez, mova-se com as setas e pressione Enter ou F2.

Editor de célula aberto sobre a grade, com o campo de texto e os botões NULL, Arquivo, Cancelar e Salvar
O editor de célula. Clicar fora dele cancela a edição.
No editorEfeito
EnterSalva.
Shift+EnterQuebra a linha.
Tab e Shift+TabSalva e vai para a célula seguinte ou anterior.
EscCancela.
Botão NULLGrava NULL.
Botão Arquivo…Grava o conteúdo de um arquivo como BLOB.

A diferença entre NULL e texto vazio importa. Numa célula NULL, confirmar sem digitar mantém o NULL. Para gravar texto vazio nela, use a aba SQL. Numa célula com valor, apagar o texto e salvar grava texto vazio.

O SQLite converte o valor conforme o tipo da coluna: 42 vira número numa coluna INTEGER. [3] Um texto como abc pode ser aceito na mesma coluna, a menos que a tabela seja STRICT.

Trabalhar com BLOBs

Dados binários não são editados como texto. O editor mostra o conteúdo em hexadecimal ou, em imagens PNG, JPEG, GIF e WebP, uma prévia. Use Baixar para extrair o arquivo e Arquivo… para substituí-lo.

Inserir linhas

Clique em + Linha. Cada coluna tem um modo, e digitar muda o modo para valor automaticamente:

  • valor grava o que foi digitado, mesmo vazio.
  • NULL grava nulo.
  • padrão deixa o SQLite decidir: gera o número da chave automática, aplica o DEFAULT ou grava NULL.

Marque Continuar adicionando para inserir várias linhas em sequência. Colunas geradas não aparecem no formulário. Para gravar um BLOB, insira a linha e depois edite a célula.

Excluir linhas

  1. Marque as caixas das linhas desejadas. A caixa do cabeçalho marca toda a página.
  2. Clique em Excluir e confirme.

A exclusão é tudo ou nada: se uma linha falhar, nenhuma é excluída. A seleção vale só para a página atual e é limpa ao mudar de página, filtrar, ordenar ou editar.

Seguir chaves estrangeiras

Colunas com chave estrangeira mostram ↗ ao lado do valor. O clique abre a tabela referenciada, filtrada no registro correspondente.

Quando a grade é somente leitura

Views nunca são editáveis nesta aba. Colunas geradas também não. Uma tabela fica somente leitura quando não há como identificar suas linhas: sem chave primária e com colunas chamadas rowid, _rowid_ e oid. Nesse caso, use a aba SQL.

Aba Estrutura

A aba Estrutura mostra o esquema do objeto selecionado e altera tabelas, colunas e índices sem escrever SQL.

Aba Estrutura da tabela clientes, com a lista de colunas, os índices automáticos e o comando CREATE TABLE
Colunas, índices, triggers e o DDL, que é o comando SQL que define o objeto.

Criar uma tabela

  1. Clique em + Tabela e dê um nome à tabela.
  2. Preencha uma linha por coluna. A primeira já vem como id INTEGER com chave primária.
  3. Confira o comando em SQL que será executado e clique em Criar tabela.
Janela Nova tabela com a tabela fornecedores, as colunas id e nome, e a prévia do comando CREATE TABLE
A prévia mostra exatamente o SQL que será executado.
PK
Chave primária. Marque em mais de uma coluna para criar uma chave composta.
Auto
Acrescenta AUTOINCREMENT. Exige uma única coluna PK do tipo INTEGER.
Not null
A coluna não aceita NULL.
Único
Não permite valores repetidos.
Padrão
Valor usado quando nada é informado. Números, NULL, CURRENT_TIMESTAMP, textos entre aspas simples e expressões entre parênteses são usados como estão; o restante vira texto.
Referência
Chave estrangeira, no formato tabela(coluna).

Alterar uma tabela existente

AçãoOndeObservação
Adicionar coluna+ ColunaCom NOT NULL, um valor padrão é obrigatório.
Renomear colunarenomear, na linha da colunaO SQLite ajusta as referências a ela no esquema.
Excluir colunaexcluir, na linha da colunaRecusado se a coluna for chave primária, única ou usada por um índice. [6]
Criar índice+ ÍndiceAs colunas ficam na ordem da tabela; para outra ordem, use SQL.
Renomear tabelaRenomear
Esvaziar tabelaEsvaziarExclui as linhas e mantém a estrutura.
Excluir objetoExcluir tabela, view, índice ou triggerCom chaves estrangeiras ligadas, excluir uma tabela aplica as regras ON DELETE de quem a referencia.

Mudar o tipo de uma coluna

O SQLite não altera o tipo de uma coluna diretamente. [6] Recrie a tabela na aba SQL, dentro de uma transação. O botão Abrir no editor SQL copia o DDL atual para servir de ponto de partida.

-- Exemplo: a coluna idade de contatos passa de TEXT para INTEGER
BEGIN;
CREATE TABLE contatos_novo (id INTEGER PRIMARY KEY, nome TEXT, idade INTEGER);
INSERT INTO contatos_novo SELECT id, nome, idade FROM contatos;
DROP TABLE contatos;
ALTER TABLE contatos_novo RENAME TO contatos;
COMMIT;

Recrie depois os índices e triggers da tabela, porque DROP TABLE os remove. Se outras tabelas a referenciarem, desligue Chaves estrangeiras antes do BEGIN; ligue de novo ao terminar e rode Verificar chaves estrangeiras.

Views e triggers

Crie views e triggers na aba SQL. Depois, eles aparecem na lista de objetos, onde a aba Estrutura mostra o DDL e permite excluí-los.

Aba SQL

A aba SQL executa qualquer comando que o SQLite aceite, um ou vários de cada vez, e mostra os resultados abaixo do editor.

Aba SQL com uma consulta de clientes e pedidos no editor e a tabela de resultados abaixo
O editor com realce de sintaxe e os resultados da consulta.

Executar comandos

  • Ctrl+Enter ou ▶ Executar rodam todo o texto. Com um trecho selecionado, roda só o trecho.
  • Separe vários comandos com ;. Cada consulta gera uma aba de resultado.
  • Se um comando falhar, a execução para ali e o erro indica qual foi. Os comandos anteriores continuam aplicados; para evitar isso, use uma transação.
  • A contagem de linhas alteradas inclui as mudanças feitas por triggers.

Escrever mais rápido

  • As sugestões aparecem a partir de duas letras, ou logo após um ponto, como em c., e reconhecem apelidos de tabela.
  • Ctrl+Espaço abre as sugestões. ↑ e ↓ escolhem, Tab ou Enter aceitam e Esc fecha.
  • Fora das sugestões, Tab insere dois espaços.
  • O texto do editor continua lá quando você reabre o app.

Resultados

Os resultados são paginados de 200 em 200 linhas, e os botões CSV e JSON exportam o conjunto todo. Cada consulta guarda até 100.000 linhas e avisa quando o limite é atingido. Para resultados maiores, refine a consulta ou use LIMIT.

Plano de execução

Plano de execução mostra como o SQLite resolveria o primeiro comando, sem executá-lo. Nos planos, SCAN indica leitura da tabela inteira e SEARCH, em geral, uso de índice ou chave.

Transações

Use transações para aplicar várias mudanças como uma só. Depois de BEGIN, a barra de status mostra Transação aberta com os botões COMMIT e ROLLBACK.

BEGIN;
UPDATE produtos SET preco = preco * 1.10 WHERE categoria = 'Acessórios';
-- confira o resultado e clique em COMMIT ou ROLLBACK na barra de status

Edições feitas na aba Dados durante a transação fazem parte dela. Ao salvar com uma transação aberta, o app pergunta se deve fazer COMMIT ou ROLLBACK antes.

Histórico e arquivos

  • Histórico ▾ guarda os últimos 50 comandos executados. O clique os devolve ao editor.
  • Abrir .sql… carrega um script no editor sem executá-lo, e Baixar .sql salva o texto do editor.
  • Limpar apaga o texto do editor.

Exemplos úteis

-- Criar uma view
CREATE VIEW vw_estoque_baixo AS
  SELECT nome, estoque FROM produtos WHERE estoque < 20;

-- Criar um trigger
CREATE TRIGGER trg_status AFTER UPDATE OF status ON pedidos
BEGIN
  UPDATE pedidos SET data = date('now') WHERE id = NEW.id;
END;

-- Encontrar valores duplicados
SELECT email, count(*) FROM clientes
GROUP BY email HAVING count(*) > 1;

-- Gravar texto vazio numa célula NULL
UPDATE clientes SET email = '' WHERE id = 5;

Importar e exportar

O app importa CSV e exporta CSV, JSON, SQL e o próprio arquivo do banco. A importação é tudo ou nada: se uma linha falhar, nada é gravado.

Importar um CSV

  1. Clique em Importar CSV… e escolha o arquivo, que deve estar em UTF-8.
  2. Confira o Separador, detectado automaticamente entre vírgula, ponto e vírgula, tab e barra vertical.
  3. Em Destino, escolha Criar tabela nova ou Adicionar em uma tabela existente.
  4. Ajuste Primeira linha é o cabeçalho e Campos vazios viram NULL, confira a prévia e clique em Importar.
Janela Importar CSV com o separador ponto e vírgula detectado, a opção Criar tabela nova e a prévia dos dados
A prévia mostra as primeiras linhas antes de gravar qualquer coisa.

Em tabela nova, o app escolhe o tipo de cada coluna entre INTEGER, REAL e TEXT, olhando os valores. Valores com zero à esquerda, como o CEP 01310, continuam como texto e não perdem o zero. Números com vírgula decimal, como 7,5, também ficam como texto.

Em tabela existente, se todos os nomes do cabeçalho existirem na tabela, as colunas são ligadas pelo nome. Caso contrário, são ligadas pela posição.

Exportar

FormatoOndeO que leva
CSV, JSON ou SQL de uma tabelaAba Dados, botões à direitaTodas as páginas, respeitando filtros e ordem.
CSV ou JSON de um resultadoAba SQL, abaixo do resultadoTodas as linhas guardadas da consulta.
Script do banco inteiroExportar .sqlEstrutura e dados, exceto o conteúdo de tabelas virtuais.
Arquivo do bancoSalvar como…Tudo, inclusive tabelas virtuais.

Para fazer cópia de segurança, prefira Salvar como…, que preserva o banco por completo.

CSV
UTF-8 com marca BOM e separado por vírgula. NULL vira campo vazio e BLOB vira 0x mais hexadecimal. Se o Excel juntar tudo numa coluna, importe pelo menu de dados dele e indique a vírgula.
JSON
Lista de objetos. BLOB vira {"$hex": "..."}, e inteiros grandes demais para JavaScript viram texto, para não perder precisão.
SQL
Comandos INSERT; no banco inteiro, também o CREATE de cada objeto, dentro de uma transação.

Aba Banco

A aba Banco resume o arquivo e reúne as verificações e a manutenção. Vale consultá-la antes de um salvamento importante.

Aba Banco com a lista de informações do arquivo e o resultado ok da verificação de integridade
Informações do banco e resultado da verificação de integridade.
BotãoO que fazQuando usar
Verificar integridadeProcura danos na estrutura do arquivo. O resultado esperado é ok.Ao receber um arquivo ou suspeitar de corrupção.
Verificar chaves estrangeirasLista linhas que apontam para registros inexistentes.Depois de importar dados ou trabalhar com a opção desligada.
VACUUMReconstrói o banco e recupera as páginas livres.Depois de excluir muitos dados.
ANALYZEAtualiza as estatísticas que orientam as consultas.Depois de grandes cargas, ou se consultas ficarem lentas.

VACUUM e ANALYZE alteram o banco, então é preciso salvar depois. VACUUM não roda com uma transação aberta.

Chaves estrangeiras

A opção Chaves estrangeiras, na barra de status, vem ligada, ao contrário do padrão do SQLite. [4] Assim, excluir um registro referenciado por outra tabela dá erro, em vez de deixar dados órfãos. A escolha vale para o app e não fica gravada no arquivo. Ela não muda durante uma transação.

Atalhos de teclado

OndeTeclaAção
GeralCtrl+SSalvar
GeralCtrl+OAbrir
Grade↑ ↓ ← →Mover entre células
GradeEnter ou F2Editar a célula atual
GradeCtrl+CCopiar o valor da célula atual
Editor de célulaEnterSalvar
Editor de célulaShift+EnterQuebrar a linha
Editor de célulaTab ou Shift+TabSalvar e ir para a célula seguinte ou anterior
Editor de célulaEscCancelar
Editor SQLCtrl+EnterExecutar o texto ou a seleção
Editor SQLCtrl+EspaçoAbrir sugestões
Editor SQLTabAceitar a sugestão ou inserir dois espaços

Limitações e solução de problemas

Limitações

  • Bancos grandes: o arquivo inteiro é carregado na memória, então bancos de vários gigabytes não são adequados.
  • Consultas longas: a tela fica travada até a consulta terminar.
  • Acesso simultâneo: o app trabalha numa cópia e não enxerga mudanças que outro programa faça depois da abertura.
  • Navegadores: o app foi testado no Chromium. O uso no Firefox e no Safari não foi testado.
  • Bancos criptografados: não são suportados.

Problemas comuns

SintomaCausa provávelO que fazer
“não é um banco SQLite válido”O arquivo é de outro tipo ou está criptografado.Confira o arquivo. Bancos criptografados precisam ser decifrados antes em outro programa.
Dados recentes não aparecemEstão no arquivo -wal.Feche o programa que usa o banco, para que ele transfira os dados, e abra de novo.
FOREIGN KEY constraint failedOutra tabela referencia o registro, ou o valor informado não existe na tabela de origem.Ajuste os registros relacionados. Em último caso, desligue a opção e rode depois a verificação de chaves.
UNIQUE constraint failedO valor já existe na coluna.Use outro valor ou corrija o registro existente.
NOT NULL constraint failedFaltou o valor de uma coluna obrigatória.Informe o valor no formulário ou no comando.
“Não foi possível salvar”O navegador não recebeu permissão, ou o arquivo está bloqueado por outro programa.Conceda a permissão e feche o outro programa, ou use Salvar como…. As alterações continuam na memória.
+ Linha desativadoÉ uma view ou uma tabela sem identificação de linha.Use a aba SQL.
CSV com acentos estranhosO arquivo não está em UTF-8.Converta para UTF-8 antes de importar.
Coluna numérica tratada como texto após importarHá vírgula decimal ou algum valor não numérico.Troque a vírgula por ponto no arquivo ou converta com UPDATE.
Salvar baixa uma cópia em vez de gravar no arquivoO navegador não oferece gravação direta.Use Chrome ou Edge e abra o arquivo por Abrir… ou arrastando.

Revisão rápida

Tente responder antes de abrir cada pergunta.

1. Editei várias células e fechei a aba. O arquivo mudou?

Não. As edições ficam na memória até você salvar, e o app avisa ao fechar com alterações pendentes.

2. Como desfazer só a última edição?

Não há desfazer passo a passo. Corrija manualmente ou use Reverter, que volta ao último estado salvo.

3. Como encontrar as linhas sem e-mail?

Digite NULL no filtro da coluna email.

4. O que acontece se o terceiro de cinco comandos falhar?

A execução para. Os dois primeiros continuam aplicados, a menos que estejam em uma transação desfeita com ROLLBACK.

5. Por que o CEP 01310 não perde o zero ao importar um CSV?

Porque valores com zero à esquerda fazem a coluna ser criada como TEXT.

6. Qual é a forma mais completa de fazer uma cópia de segurança?

Salvar como…, porque o arquivo preserva tudo, inclusive tabelas virtuais, que o script .sql não leva por completo.

↑ Voltar ao topo

Referências

  1. Giovani Perotto Mesquita, “SQLite Manager”, aplicativo em um único arquivo HTML, giovanipm.github.io/sqlite-manager.html.
  2. sql.js (em inglês), “sql.js: SQLite compiled to JavaScript”, acesso em 30/10/2026, github.com/sql-js/sql.js.
  3. SQLite (em inglês), “Datatypes In SQLite”, documentação do SQLite, acesso em 30/10/2026, sqlite.org/datatype3.html.
  4. SQLite (em inglês), “SQLite Foreign Key Support”, documentação do SQLite, acesso em 30/10/2026, sqlite.org/foreignkeys.html.
  5. SQLite (em inglês), “Write-Ahead Logging”, documentação do SQLite, acesso em 30/10/2026, sqlite.org/wal.html.
  6. SQLite (em inglês), “ALTER TABLE”, documentação do SQLite, acesso em 30/10/2026, sqlite.org/lang_altertable.html.
  7. MDN Web Docs (em inglês), “File System API”, acesso em 30/10/2026, developer.mozilla.org/en-US/docs/Web/API/File_System_API.
↑ Voltar ao topo