A seção SQL fornece um banco de dados SQLite dedicado para cada projeto. Você pode criar tabelas, índices e visualizações, editar dados manualmente, escrever qualquer consulta e acessar o banco de dados diretamente do seu fluxo de trabalho. É um SQLite completo, com sintaxe sem restrições: tudo o que é suportado pelo SQLite também funciona aqui.
O banco de dados SQL é armazenado separadamente das tabelas na seção Tabelas. Alterações feitas em um não afetam o outro.
Como abrir
Projeto → Tabelas → clique em SQL à direita de Adicionar tabela.

Para retornar à lista de tabelas, clique na seta no cabeçalho da página.
A seção SQL está disponível para membros da equipe com permissão para editar tabelas. Usuários com acesso somente leitura podem ver a estrutura do banco de dados, mas não podem acessar seus dados ou consultas.
Estrutura do banco de dados
A árvore do banco de dados é exibida à direita. Ela contém tabelas com suas colunas e índices, seguidas por visualizações. Cada coluna mostra seu tipo de dados, colunas de chave primária são marcadas com um ícone de chave, e os índices exibem o atributo UNIQUE e suas colunas associadas.

Todas as ações relacionadas à estrutura estão disponíveis no menu do nó: clique com o botão direito em um nó, clique no ícone ⋮ que aparece ao passar o mouse, ou use o botão + acima da árvore.
| Nó | Ações |
|---|---|
| Banco de dados | criar tabela, criar visualização, atualizar, baixar banco de dados |
| Tabela | abrir, adicionar coluna, adicionar índice, renomear, DDL, atualizar, excluir |
| Coluna | renomear, excluir |
| Índice | DDL, excluir |
| Visualização | abrir, DDL, excluir |

Criar uma tabela. Especifique o nome da tabela e as colunas: nome, tipo, valor padrão, PK e NOT NULL. Você pode selecionar um tipo de dados nas sugestões ou inserir o seu próprio. Se você marcar várias colunas como PK, elas formarão uma chave primária composta.

DDL exibe a instrução CREATE do objeto no console. Isso é útil para copiar sua estrutura ou recriá-la em outro projeto.
Os botões acima da árvore permitem criar objetos, atualizar o banco de dados, mostrar ou ocultar o console, visualizar o DDL da tabela selecionada, baixar o banco de dados ou limpar o banco de dados.

Dados da tabela
Clique em uma tabela na árvore do banco de dados para abrir seus dados. A grade funciona de forma semelhante a uma planilha na seção Tabelas:
- Edite uma célula clicando duas vezes nela. Pressione Enter para salvar ou Esc para cancelar. O valor é gravado no banco de dados imediatamente.
- Linhas. Clique em + para adicionar uma linha vazia ou − para excluir as linhas selecionadas. Clique no número da linha na primeira coluna para selecioná-la. Use Shift ou Cmd/Ctrl para selecionar várias linhas.
- Os valores NULL são exibidos como
NULL. Limpar uma célula grava uma string vazia no banco de dados. Para gravar um valor NULL, use uma consulta. - Os campos WHERE e ORDER BY acima da grade aceitam condições SQL e expressões de ordenação. Insira uma expressão e pressione Enter. O campo ORDER BY tem precedência sobre a ordenação aplicada através do menu da coluna.
- Menu da coluna (o ícone no cabeçalho da coluna): ordenar de forma crescente ou decrescente, ou filtrar por substring.
- Os dados são carregados conforme você rola, em lotes de 100 linhas. O contador à direita mostra o intervalo atual e o número total de linhas.
- As visualizações são somente leitura.
Console

Clique no botão </> acima da árvore do banco de dados para abrir o console, que inclui um editor de consultas com realce de sintaxe e os resultados das consultas.
- Execute uma consulta usando o botão ou Ctrl+Enter (Cmd+Enter no Mac).
- Você pode executar várias consultas separadas por
;. O resultado exibe as linhas retornadas pela última consulta que produziu dados, juntamente com o número total de linhas afetadas. - Os erros do SQLite são exibidos como estão. Ao executar várias consultas, o número da consulta é adicionado à mensagem de erro:
[2] no such table: .... - Favoritos. Clique em Adicionar aos favoritos para salvar a consulta atual com um nome. As consultas salvas aparecem como chips acima do editor: clique em um para carregar a consulta ou clique no X para excluí-lo. Os favoritos são armazenados no seu navegador separadamente para cada projeto.
- O texto da sua última consulta é preservado entre sessões.
Baixar e limpar o banco de dados
Baixar banco de dados baixa o banco de dados inteiro como project_<id>_sql.sqlite3. Você pode abri-lo com qualquer aplicativo compatível com SQLite, transferi-lo para outro projeto ou usá-lo fora do Mavibot.
Limpar banco de dados exclui todas as tabelas e dados da seção SQL. Esta ação não pode ser desfeita e requer que você digite uma palavra de confirmação. As tabelas na seção Tabelas não são afetadas.
Funções de calculadora
Duas funções de calculadora permitem acessar o banco de dados SQL do seu fluxo de trabalho. Ambas estão disponíveis nas sugestões do editor e são reconhecidas pelo assistente.
sql(query, params=null, strict=true)
Executa uma consulta.
| Consulta | Valor de retorno |
|---|---|
| Consulta com resultado (SELECT, RETURNING, PRAGMA) | Lista JSON de linhas, com cada linha representada como um objeto: [{"id": 1, "name": "Anna"}, ...]
|
| Consulta sem resultado (INSERT, UPDATE, DELETE) | Número de linhas afetadas |
| CREATE, DROP e outras alterações de esquema | 0 |
| Erro | String ERROR: <mensagem de erro do SQLite>
|
Exemplo:
rows = sql("SELECT name, phone FROM clients WHERE city = ?", [city])
n = sql("UPDATE clients SET status = :s WHERE id = :id", {"s": "vip", "id": client_id})
sql_value(query, params=null, strict=true)
Funciona como sql, mas retorna um único valor: a primeira coluna da primeira linha do resultado.
Se não houver linhas, nenhum resultado ou o valor for NULL, retorna uma string vazia.
total = sql_value("SELECT count(*) FROM clients")
name = sql_value("SELECT name FROM clients WHERE id = ?", [client_id])
Parâmetros
params passa valores para a consulta separadamente do texto da consulta: use um array JSON para placeholders ? ou um objeto JSON para placeholders :name. Dentro de [...] e {...}, as variáveis são escritas como nomes de variáveis simples:
[client_id], não [#{client_id}].
Passe quaisquer valores recebidos de um cliente através de params, como nome, número de telefone ou texto da mensagem. Um valor concatenado diretamente no texto da consulta pode modificar a própria consulta.
Modo estrito
Por padrão, strict=true: a função aceita exatamente uma consulta e não permite comentários no texto da consulta. Isso impede que um valor recebido de uma mensagem de cliente anexe uma segunda consulta ou trunque o restante da consulta original.
Defina strict=false para remover essa restrição, por exemplo, ao executar várias consultas separadas por ;.
Limites
| Limite | Valor |
|---|---|
| Tempo de execução para uma única consulta ou lote de consultas | 5 segundos |
| Linhas retornadas | até 1.000; linhas adicionais não são retornadas |
| Comprimento do texto da consulta | 64 KB |
| Tamanho do banco de dados | 200 MB; uma vez excedido, apenas leitura e exclusão de dados estão disponíveis |
Os únicos comandos proibidos são aqueles que acessam recursos fora do banco de dados do projeto: ATTACH com um caminho de arquivo e VACUUM INTO.
Todo o resto, incluindo VACUUM, PRAGMA e transações padrão, é suportado.