Conteúdo
Índice 🔎︎

# Design da consulta

A Exibição de design de consulta permite criar e editar uma consulta de banco de dados.

Para acessar este comando...

Em uma janela de arquivo de banco de dados, clique no ícone Consultas e escolha Editar - Editar.

A maioria dos bancos de dados utiliza consultas para filtrar ou ordenar tabelas de bancos de dados ao exibir registros no computador. As exibições oferecem a mesma funcionalidade que as consultas, mas no lado do servidor. Se o banco de dados estiver em um servidor que ofereça suporte a exibições, você poderá utilizá-las para filtrar os registros no servidor e, assim, acelerar a tempo de exibição.

Ao selecionar o comando Criar exibição na página da guia Tabelas de um documento de banco de dados, você verá a janela Design de exibição, que lembra a janela Design de consulta descrita aqui.

O leiaute da janela de Design de consulta é armazenada junto com a consulta criada, mas não pode ser armazenada com uma exibição criada.

## A exibição de design

Para criar uma consulta, clique no ícone Consultas em um documento de banco de dados e, em seguida, clique em Criar consulta na exibição de design.

O painel inferior da exibição de design é onde você define a consulta. Para definir uma consulta, especifique os nomes de campos do banco de dados a serem incluídos e os critérios para exibir os campos. Para reorganizar as colunas no painel inferior da Exibição de design, arraste o cabeçalho da coluna para um novo local ou selecione a coluna e pressione Command Ctrl+Tecla de seta.

Na parte superior da janela Exibição de design, são exibidos os ícones da barra Design de consulta e da barra Design.

Caso deseje testar uma consulta, clique duas vezes no nome da consulta no documento de banco de dados. O resultado da consulta será exibido em uma tabela semelhante à da Exibição de fonte de dados. Nota: a tabela exibida é apenas temporária.

### Chaves na consulta na exibição de design

Chave | Função
F4 | Visualização
F5 | Executar consulta
F7 | Adicionar tabela ou consulta

## Procurar

Quando se abre o design da consulta pela primeira vez, vê-se uma caixa de diálogo para primeiro selecionar a tabela ou consulta que será a base para sua nova consulta.

Clique duas vezes nos campos para adicioná-los à consulta. Arraste e solte para definir as relações.

Ao projetar uma consulta, você não poderá modificar as tabelas selecionadas.

### Remover tabelas

Para remover a tabela da exibição de design, clique na borda superior da janela da tabela e exiba o menu de contexto. Use o comando Excluir para remover a tabela da exibição de design. Outra opção é pressionar a tecla Delete.

### Mover tabela e modificar tamanho de tabela

Você pode redimensionar e dispor as tabelas de acordo com as suas preferências. Para mover as tabelas, arraste a borda superior até a posição desejada. Amplie ou reduza o tamanho no qual a tabela será exibida, posicionando o cursor do mouse sobre uma borda ou sobre um canto e arrastando a tabela até o tamanho desejado.

## Relações de tabela

Se houver relações de dados entre um nome de campo em uma tabela e um nome de campo em outra, você poderá usar essas relações para a sua consulta.

Se, por exemplo, tiver uma planilha para artigos identificados por um número de artigo e uma planilha para clientes em que registre todos os artigos que um cliente encomende usando os números de artigo correspondentes, é porque há uma relação entre os dois campos de dados de "número do artigo". Se agora quiser criar uma consulta que retorne todos os artigos que um cliente tenha encomendado, deverá recuperar os dados das duas planilhas. Para fazer isso, é preciso informar o LibreOffice sobre a relação que existe entre os dados das duas planilhas.

Para fazer isso, clique em um nome de campo em uma tabela (por exemplo, o nome de campo "Item-Number" (Número do item) da tabela Customer (Cliente), mantenha pressionado o botão do mouse e, em seguida, arraste o nome do campo para o nome do campo da outra tabela ("Item-Number" - Número do item) da tabela Item). Quando soltar o botão do mouse, aparecerá uma linha conectando os dois campos nas duas janelas. A condição correspondente de o conteúdo dos dois nomes de campos ser idêntico é inserida na consulta SQL resultante.

A criação de uma consulta baseada em várias planilhas relacionadas só é possível quando se usa o LibreOffice como interface de um banco de dados relacional.

Não é possível acessar tabelas de diferentes bancos de dados em uma consulta. As consultas que envolvem várias tabelas somente poderão ser criadas dentro de um banco de dados.

### Especificar o tipo de relação

Se clicar duas vezes na linha que conecta dois campos vinculados ou chamar o comando de menu Inserir - Nova relação, poderá especificar o tipo de relação na caixa de diálogo Relações.

Como alternativa, pressione Tab até que linha seja selecionada, e pressione Shift+F10 para exibir o menu de contexto e escolher o comando Editar. Alguns bancos de dados suportam somente um subconjunto de tipos de JOIN possíveis.

### Exclusão de relações

Para excluir uma relação entre duas tabelas, clique na linha de conexão e, em seguida, pressione a tecla Delete.

Como alternativa, exclua as entradas correspondentes em Campos envolvidos na caixa de diálogo Relações. Ou, pressione Tab até que o vetor de conexão seja realçado e, em seguida, pressione Shift+F10 para abrir o menu de contexto e selecione o comando Excluir.

## Definir a consulta

Selecione condições para definir a consulta. Cada coluna da tabela de design aceita um campo de dados para a consulta. As condições em uma linha são vinculadas com um E lógico.

### Especificar o nome dos campos

Primeiro, selecione todos os nomes de campo a partir das tabelas que deseja adicionar à consulta. É possível fazer isso com o recurso de arrastar e soltar ou por meio de um clique duplo em um nome de campo na janela da tabela. Com o método de arrastar e soltar, use o mouse para arrastar um nome de campo da janela da tabela até a área inferior da janela de edição da consulta. Ao fazer isso, você pode decidir qual coluna na janela de edição de consulta vai receber o campo selecionado. Um nome de campo pode ser selecionado com um clique duplo. Ele será adicionado à próxima coluna livre na janela de edição de consulta.

### Exclusão de nomes de campos

Para remover um nome de campo da consulta, clique no cabeçalho da coluna do campo e escolha o comando Excluir no menu de contexto da coluna.

### Salvar a consulta

Use o ícone Salvar na barra Padrão para salvar a consulta. Você verá uma caixa de diálogo que solicita um nome para a consulta. Se o banco de dados suportar esquemas, você também poderá inserir um nome para o esquema.

#### Esquema

Insira o nome do esquema que é atribuído à consulta ou à exibição de tabelas.

#### Nome da consulta ou nome de exibição da tabela

Insira o nome da consulta ou da exibição de tabelas.

### Filtragem de dados

Para filtrar dados para a consulta, defina os critérios desejados na área inferior da janela de edição de consulta. As seguintes opções estão disponíveis:

#### Campo

Digite o nome do campo de dados referido na consulta. Todas as configurações feitas nas linhas das opções do filtro referem-se a este campo. Se ativar uma célula com um clique do mouse, verá um botão de seta, o que permitirá a seleção de um campo. A opção "Nome da tabela.*" seleciona todos os campos de dados onde o critério especificado será aplicado para todos os campos da tabela.

#### Alias

Especifica um alias. Esse alias será listado numa consulta, no lugar do nome de campo. Isso possibilita o uso de rótulos de coluna definidos pelo usuário. Por exemplo, se o nome do campo de dados for PtNo e, em vez desse nome, você quiser que apareça PartNum na consulta, insira PartNum como alias.

Numa instrução SQL, os alias são definidos da seguinte maneira:

SELECT column AS alias FROM table.

Por exemplo:

SELECT "PtNo" AS "PartNum" FROM "Parts"

#### Tabela

A tabela de banco de dados correspondente do campo de dados selecionado está listada aqui. Se ativar esta célula com um clique do mouse, aparecerá uma seta que permite selecionar uma tabela diferente da consulta atual.

#### Ordenar

Ao clicar nesta célula, poderá selecionar uma das opções de ordenação: crescente, decrescente ou sem ordenação. Os campos de texto ficarão em ordem alfabética (A–Z) e os campos numéricos, em ordem numérica (0–9). Na maioria dos bancos de dados, os administradores podem definir as opções de ordenação no nível do banco de dados.

#### Visível

Se marcar a propriedade Visível para um campo de dados, o campo será visível na consulta. Se usar somente um campo de dados para formular uma condição ou fazer um cálculo, não será absolutamente necessário mostrá-la.

#### Critérios

Especifica os primeiros critérios pelos quais o conteúdos dos dados devem ser filtrados.

#### ou

Aqui você pode inserir um critério adicional para filtragem em cada linha. Critérios múltiplos em numa única coluna serão interpretados como um OU booleano.

Você também pode usar o menu de contexto dos cabeçalhos da linha na área inferior da janela de design da consulta para inserir um filtro baseado numa função:

### Funções

As funções aqui dependem daquelas fornecidas pelo banco de dados.

Se estiver trabalhando com o banco de dados incorporado HSQL, a caixa de listagem na linha Função oferece as seguintes opções:

Opção | SQL | Efeito
Sem função |  | Nenhuma função será executada.
Média | AVG | Calcula a média aritmética de um campo.
Contagem | COUNT | Determina o número de registros da tabela. Campos vazios podem tanto ser contados (a) ou excluídos (b). a) COUNT(*): Para contar todos os registros da tabela, passe um asterisco como argumento. b) COUNT(coluna): Ao passar um nome de campo como argumento, conta somente os registros nos quais o campo especificado contém um valor. Registros cujos campos tem valor NULL (i.e. não contém valores numéricos ou textuais) não são contados.
Máximo | MAX | Determina o valor mais alto de um registro para este campo.
Mínimo | MIN | Determina o valor mais baixo de um registro para este campo.
Soma | SUM | Calcula a soma dos valores dos registros para os campos associados.
Agrupar | GROUP BY | Agrupa os dados da consulta de acordo com o nome de campo selecionado. As funções são executadas de acordo com os grupos especificados. No SQL, essa opção corresponde à cláusula GROUP BY. Quando um critério é adicionado, essa entrada aparece na sub-cláusula HAVING do SQL.

Você também pode inserir chamadas de função diretamente na instrução SQL. A sintaxe é:

SELECT FUNCTION(coluna) FROM tabela.

Por exemplo, a chamada de função em SQL para calcular uma soma é:

SELECT SUM("Price") FROM "Article".

Exceto pela função Agrupar, as funções acima são chamadas de funções agregadas. São funções que calculam dados para criar resumos dos resultados. Também são possíveis funções adicionais que não estão listadas na caixa de listagem. Elas dependem do sistema de banco de dados específico em uso e nas funcionalidades atuais fornecidas pelo driver do Base usado para conectar a este sistema.

Para utilizar outras funções que não estão listadas na caixa de listagem, você deve inseri-las manualmente em Campo.

Você também pode atribuir alias a chamadas de função. Se não quiser exibir o texto da consulta no cabeçalho da coluna, insira o nome substituto desejado em Alias.

A função correspondente em uma instrução SQL é:

SELECT FUNCTION() AS alias FROM table

Exemplo:

SELECT COUNT(*) AS count FROM "Item"

Se executar tal função, não poderá inserir colunas adicionais para a consulta que não seja como argumento numa função "Agrupar".

Exemplos

No exemplo a seguir, é executada uma consulta entre duas tabelas: uma tabela "Item" com o campo "Item_No" (No. do item), e uma tabela "Suppliers" (Fornecedores) com o campo "Supplier_Name" (Nome do fornecedor). Além disso, ambas as tabelas possuem um nome de campo comum, "Supplier_No."

As etapas a seguir são necessárias para a criação de uma consulta que contenha todos os fornecedores que entreguem mais de três itens.

1. Insira as tabelas "Item" e "Suppliers" (Fornecedores) no design de consulta.

2. Vincule os campos "Supplier_No" das duas tabelas se ainda não houver uma relação desse tipo.

3. Clique duas vezes no campo "Item_No" (No_do_item) na tabela "Item". Exiba a linha Função, usando o menu de contexto, e selecione a função de contagem.

4. Insira >3 como critério e desative o campo Visível.

5. Clique duas vezes no campo "Supplier_Name" da tabela "Suppliers" e escolha a função Agrupar.

6. Execute a consulta.

Se os campos "price" (para o preço individual de um artigo) e "Supplier_No" (para o fornecedor do artigo) estiverem presentes na tabela "Item", você poderá obter o preço médio do item oferecido por um fornecedor com a seguinte consulta:

1. Insira a tabela "Item" no design de consulta.

2. Clique duas vezes nos campos "Price" e "Supplier_No".

3. Ative a linha Função e selecione a função Média no campo de preço.

4. Você também pode inserir "Média" na linha do nome do alias (sem aspas).

5. Para o campo "Supplier_No" (No. do fornecedor), escolha Agrupar.

6. Execute a consulta.

Os seguintes símbolos e comandos de menu de contexto estão disponíveis:

### Funções

Mostra ou oculta uma linha para a seleção das funções.

### Nome da tabela

Mostra ou oculta a linha do nome da tabela.

### Nome do alias

Mostra ou oculta a linha do nome do alias.

### Valores distintos

Busca somente valores distintos da consulta. Aplica-se em múltiplos registros que podem conter dados que aparecem várias vezes nos campos selecionados. Se o comando Valores distintos estiver ativo, você verá apenas um registro na consulta (DISTINCT). Caso contrário, você verá todos os registros que corresponderem aos critérios de consulta (ALL).

Por exemplo, se houver várias ocorrências do nome "Silva" no banco de dados de endereços, você poderá escolher o comando Valores distintos para especificar na consulta que o nome "Silva" ocorrerá apenas uma vez.

Para uma consulta que envolva vários campos, a combinação de valores de todos os campos deve ser exclusiva, de modo que o resultado possa ser formado a partir de um registro específico. Por exemplo, você tem "Smith em Chicago" uma vez no catálogo de endereços e "Smith em Londres" duas vezes. Com o comando Valores distintos, a consulta usará os dois campos, "last name" (sobrenome) e "city" (cidade), e retornará o resultado "Smith em Chicago" uma vez e "Smith em Londres" uma vez.

No SQL, esse comando corresponde ao predicado DISTINCT.

### Limite

Permite limitar o número máximo de registros retornados por uma consulta.

Se adicionar um Limite, obterá no máximo, o número de linhas que especificar. Senão, serão obtidos todos os registros que correspondam com o critério da consulta.

### Formulação de condições de filtro

Durante a formulação de condições de filtro, vários operadores e comandos encontram-se disponíveis. Além dos operadores relacionais, existem comandos específicos à SQL que consultam o conteúdo dos campos do banco de dados. Se você usar esses comandos na sintaxe do LibreOffice, o LibreOffice os converterá automaticamente na sintaxe SQL correspondente por um analisador interno. Também é possível inserir o comando SQL diretamente e evitar o analisador interno. As tabelas a seguir oferecem uma visão geral dos operadores e comandos:

Operador | Significado | Condição será satisfeita se...
= | igual a | ... o conteúdo do campo for idêntico ao da expressão indicada. O operador = não será exibido nos campos de consulta. Se inserir um valor sem operador, o operador = será adotado automaticamente.
<> | não é igual a | ... o conteúdo do campo não corresponder à expressão especificada.
> | maior que | ... o conteúdo do campo for maior que o da expressão especificada.
< | menor que | ... o conteúdo do campo for menor que a expressão especificada.
>= | maior que ou igual a | ... o conteúdo do campo é maior que ou igual à expressão especificada.
<= | menor que ou igual a | ... o conteúdo do campo é menor que ou igual à expressão especificada.

Comando do LibreOffice | Comando SQL | Significado | Condição será satisfeita se...
IS EMPTY | IS NULL | é nulo | ... o campo não contém dados. Para campos Yes/No (Sim/Não) com três estados possíveis, este comando consulta automaticamente o estado indeterminado (nem Sim nem Não).
IS NOT EMPTY | IS NOT NULL | não está vazio | ... o campo não está vazio, i.e. contém dados.
LIKE espaço reservado (*) para qualquer número de caracteres espaço reservado (?) para exatamente um caractere | LIKE espaço reservado (%) para qualquer número de caracteres Espaço reservado (_) para exatamente um caractere | é um elemento de | ... o campo de dados contém a expressão indicada. O espaço reservado (*) indica se a expressão x ocorre no início (x*), no fim (*x) ou dentro do campo (*x*). Você pode inserir como espaço reservado nas consultas SQL o caractere % SQL ou o conhecido espaço reservado para sistema de arquivos (*) da interface do LibreOffice. O espaço reservado (*) ou (%) representa qualquer número de caracteres. O ponto de interrogação (?) na interface do LibreOffice e o sublinhado (_) nas consultas SQL representam exatamente um caractere.
NOT LIKE | NOT LIKE | Não é um elemento de | ... o campo não contém dados com a expressão especificada.
BETWEEN x AND y | BETWEEN x AND y | cai no intervalo [x,y] | ... o campo contém um valor entre os valores x e y.
NOT BETWEEN x AND y | NOT BETWEEN x AND y | Não se encaixa no intervalo [x,y] | ... o campo contém um valor que não está entre os valores x e y.
IN (a; b; c...) Observe que os ponto e vírgula são usados como separadores em todas as listas de valores! | IN (a, b, c...) | contém a, b, c... | ... o nome de campo contém uma das expressões especificadas a, b, c,... É possível especificar qualquer número de expressões, e o resultado da consulta é determinado por um operador booleano OU. As expressões a, b, c... podem ser tanto números como caracteres
NOT IN (a; b; c...) | NOT IN (a, b, c...) | não contém o valor a, b, c... | ... o campo não contém uma das expressões especificadas: a, b, c,...
= TRUE | = TRUE | tem o valor True (Verdadeiro) | ... o nome do campo tiver o valor True (Verdadeiro).
= FALSE | = FALSE | tem o valor falso | ... o valor do campo é FALSO.

### Exemplos

='Ms.' | retorna os nomes de campo que contêm "Ms."
<'2001-01-10' | retorna as datas ocorridas antes de 10 de janeiro de 2001
LIKE 'g?ve' | retorna registros com conteúdo de campos tipo "give" e "gave".
LIKE 'S*' | retorna registros com conteúdo de campo tal como "Sun".
BETWEEN 10 AND 20 | retorna registros de campos com o conteúdo de campo entre os valores 10 e 20. (Os campos podem ser de texto ou numéricos.).
IN (1; 3; 5; 7) | retorna os registros com os valores 1, 3, 5, 7. Se o nome de campo contém um número de item, por exemplo, você poderá criar uma consulta que retorne o item que contém o número especificado.
NOT IN ('Smith') | retorna os registros que não contêm "Silva".

Sequência Escape Like : {escape 'escape-character'}

Exemplo: select * from Item where ItemName like 'The *%' {escape '*'}

O exemplo fornecerá todas as entradas onde o nome do item começa com 'The *'. Isso significa que você também pode procurar caracteres que seriam interpretados como espaços reservados, tais como *, ?, _, % ou o ponto.

Sequência Escape: Outer Join: {oj outer-join}

Exemplo: select Article.* from {oj item LEFT OUTER JOIN orders ON item.no=orders.ANR}

### Consulta de campos de texto

Para consultar o conteúdo de um campo de texto, é necessário incluir a expressão entre aspas simples. A distinção entre letras em maiúsculas e minúsculas depende do banco de dados em uso. LIKE, por definição, faz distinção entre maiúsculas e minúsculas (embora alguns bancos de dados não interpretam isto estritamente).

### Consulta a campos de data

Os campos de data são representados como #Date# para os identificar como tal. As datas, horas e constantes de data e hora (literais) utilizadas nas condições podem ser do tipo SQL Escape Syntax ou SQL2.

Elemento do tipo Data | A sintaxe SQL Escape #1 - pode estar obsoleta | Sintaxe SQL Escape #2 | Sintaxe de SQL2
Data | {D'YYYY-MM-DD'} | {d 'YYYY-MM-DD'} | 'YYYY-MM-DD'
Hora | {D'HH:MM:SS'} | {t 'HH:MI:SS[.SS]'} | 'HH:MI:SS[.SS]'
Data/Hora | {D'YYYY-MM-DD HH:MM:SS'} | {ts 'YYYY-MM-DD HH:MI:SS[.SS]'} | 'YYYY-MM-DD HH:MI:SS[.SS]'

Exemplo: selecione {d '1999-12-31'} a partir de world.years

Exemplo: select * from mytable where years='1999-12-31'

Todas as expressões de data (literais de data) devem ser envolvidas por plicas. (Consulte o manual de referência para uma base de dados e conector particular empregados)

### Consulta a campos Yes/No (Sim/Não)

Para consultar campos Yes/No (Sim/Não), use a seguinte sintaxe para as tabelas dBASE:

Status | Critério de consulta | Exemplo
Sim | para tabelas do dBASE: diferente de qualquer valor fornecido | =1 retorna todos os registros em que o campo Yes/No (Sim/Não) possui o status "Yes" (Sim) ou "On" (Ativado) (selecionados em preto),
Não | . | =0 retorna todos os registros para os quais o campo Yes/No (Sim/Não) possua o status "No" (Não) ou "Off" (Desativado) (sem seleção).
Nulo | IS NULL | IS NULL retorna todos os registros para os quais o campo Yes/No (Sim/Não) não possua os estados Yes ou No (Sim ou Não) (selecionados em cinza).

A sintaxe depende do sistema de banco de dados usado. Você também deve observar que os campos Yes/No (Sim/Não) podem ser definidos de forma diferente (somente dois estados, em vez de três).

### Consultas com parâmetros

As consultas parametrizadas permite ao usuário inserir valores durante a execução. Estes valores são utilizados nos critérios para selecionar os registros a serem exibidos. Cada valor tem um parâmetro associado a ele, que solicitado ao usuário quando a consulta é executada.

Os nomes de parâmetros são precedidos por dois pontos tanto nas vistas de Design quanto SQL de uma consulta. Isso pode utilizado sempre quando um valor pode aparecer. Se o mesmo valor deve aparecer mais de uma vez na consulta, o mesmo nome de parâmetros é utilizado.

No caso mais simples, onde o usuário insere um valor que verifica uma igualdade, o nome do parâmetro precedido de dois pontos é inserido na linha do Critério. No modo SQL isto deve ser digitado como WHERE "Campo" = :Nome_do_parametro

Os nomes de parâmetros não devem conter qualquer dos caracteres <space>`!"$%^*()+={}[]@'~#<>?/,. Não podem ter os mesmos nomes de campos ou palavras reservadas do SQL. Eles podem ter os mesmos nomes que os alias.

Uma construção útil para selecionar registros com base em partes do conteúdo de campos de texto é adicionar colunas ocultas com LIKE '%/'||:Parte_do_campo || '%'" como critério. Isso vai selecionar registros com correspondência exata. Se desejar um teste insensível à caixa, uma solução é usar LOWER (Nome_do_campo) como campo e LIKE LOWER ( '%' || :Parte _do_campo || '%' ) como critério. Observe que os espaços no critério são importantes; se forem deixados de fora, o analisador SQL interpreta o critério inteiro como cadeia a corresponder. No modo SQL isso deveria ser digitados como LOWER ( "Nome_do_campo" ) LIKE LOWER ( '%' || :Parte_do_campo || '%' ).

Consultas parametrizadas podem ser utilizadas como fonte de dados para subformulários, para permitir ao usuário restringir os registros exibidos.

### Entrada de parâmetros

A caixa de diálogo Entrada de parâmetros pede ao usuário para inserir os valores dos parâmetros. Insira um valor para cada parâmetro de consulta e confirme clicando em OK ou pressionando Enter.

Os valores inseridos pelo usuário podem consistir de qualquer caracteres permitidos pelo SQL para o critério relevante; isto pode depender do sistema de banco de dados utilizado.

O usuário pode utilizar os caracteres curinga do SQL "%" (cadeia arbitrária) ou "_" (caractere arbitrário singular) como parte do valor para buscar registros com critérios mais complexos.

## Modo SQL

SQL significa "Structured Query Language" e descreve instruções para atualização e administração de bancos de dados relacionais.

No LibreOffice, você não precisa de conhecimento de SQL para a maioria das consultas, visto que não é necessário inserir o código SQL. Se você criar uma consulta no design de consulta, o LibreOffice converterá automaticamente suas instruções na sintaxe SQL correspondente. Se, com a ajuda do botão Ativar/Desativar exibição de design, você mudar para a exibição SQL, poderá ver os comandos SQL de uma consulta que tenha sido criada.

Você pode formular sua consulta diretamente no código SQL. No entanto, observe que a sintaxe especial depende do sistema de banco de dados usado.

Se inserir manualmente o código SQL, você poderá criar consultas específicas a SQL que não sejam suportadas pela interface gráfica do Design de consulta. Essas consultas precisam ser executadas no modo SQL nativo.

Se clicar no ícone Executar comando SQL diretamente na exibição SQL, você poderá formular uma consulta que não é processada pelo LibreOffice mas enviada diretamente ao motor do banco de dados.