
O Microsoft Access continua, em muitas empresas, a ser a ferramenta de consulta rápida para explorar arquivos locais ou fontes ODBC. O motor ACE (sucessor do Jet), ainda integrado ao Microsoft 365, executa aplicações internas que às vezes têm várias décadas. Aprender a escrever consultas SQL diretamente no Access permite entender o que a grade QBE gera nos bastidores e intervir quando o resultado não corresponde ao esperado.
Jet/ACE SQL e SQL padrão: o que o Access aceita e o que rejeita
A maioria dos tutoriais SQL online utiliza MySQL, PostgreSQL ou SQL Server como referência. Os exemplos geralmente funcionam como estão nesses motores, mas nem sempre no Access. O dialeto SQL do Access (Jet/ACE SQL) possui particularidades que confundem os iniciantes acostumados a copiar e colar código encontrado em fóruns.
O Access não suporta nem CTE (WITH) nem funções de janela disponíveis no SQL Server ou PostgreSQL. Qualquer consulta recursiva ou analítica encontrada online precisará ser reescrita, muitas vezes com o uso de subconsultas aninhadas ou consultas temporárias registradas.
Por outro lado, o Access oferece a cláusula TRANSFORM para consultas cruzadas, uma sintaxe ausente da norma SQL. Esta cláusula permite girar linhas em colunas sem passar por uma planilha. Aqueles que desejam aprender consultas SQL no Access economizam tempo ao identificar essas discrepâncias desde o início, em vez de procurar por que um exemplo genérico provoca um erro de sintaxe.
Outra diferença notável: a sintaxe de junção. O Access frequentemente impõe parênteses aninhados sempre que se encadeiam várias JOIN em uma mesma consulta, enquanto outros motores aceitam uma escrita linear. Esquecer esses parênteses gera um erro de compilação sem mensagem explícita.

Modo SQL do Access: alternar do gráfico para a escrita direta
O designer de consultas gráfico (grade QBE) é o ponto de entrada habitual no Access. Cada ação, arrastar um campo, marcar uma caixa de ordenação, definir um critério, gera SQL em segundo plano. Alternar para o modo SQL (aba “Exibição” e depois “Modo SQL”) exibe a consulta como o motor ACE a executará.
Leia antes de escrever
Antes de redigir uma consulta do zero, o método mais eficaz é construir a consulta em modo gráfico e, em seguida, ler o SQL produzido. Essa leitura permite associar cada elemento visual (tabela, ligação, critério) à sua tradução SQL. É possível identificar rapidamente a estrutura SELECT, FROM, WHERE, ORDER BY.
Uma vez adquirida essa correspondência, modificar diretamente o SQL torna-se natural. Adiciona-se uma função, substitui-se um critério, insere-se um GROUP BY, tudo isso sem voltar à grade.
Os comandos básicos no contexto do Access
- SELECT e FROM: selecionar campos de uma ou mais tabelas. O Access usa o ponto para separar o nome da tabela do nome do campo (Clientes.Nome), e colchetes para delimitar nomes que contêm espaços ou caracteres especiais ([Data de pedido]).
- WHERE: filtrar registros. Os operadores de comparação clássicos funcionam, mas os curingas diferem: o Access usa o asterisco (*) em vez do percentual (%) com o operador LIKE.
- JOIN: conectar tabelas entre si. O Access privilegia a sintaxe INNER JOIN, LEFT JOIN, RIGHT JOIN com a restrição de múltiplos parênteses mencionada anteriormente.
- ORDER BY e GROUP BY: ordenar e agrupar. A cláusula HAVING funciona como no SQL padrão, o que simplifica a filtragem após a agregação.
Erros frequentes ao iniciar o SQL no Access
Alguns erros aparecem sistematicamente entre os iniciantes. Identificá-los antecipadamente evita horas de depuração frustrante.
O primeiro diz respeito aos colchetes ausentes ao redor dos nomes dos campos. Sempre que um nome de coluna contém um espaço, um acento ou um caractere reservado, o Access exige colchetes. Escrever Data de pedido em vez de [Data de pedido] provoca um erro imediato.
O segundo refere-se aos tipos de dados. O Access distingue as aspas duplas para texto em algumas versões e as aspas simples em outros contextos. O cerquilha (#) delimita as datas: WHERE [Data de pedido] > #01/01/2024#. Usar aspas em vez da cerquilha para uma data é uma fonte de confusão muito comum.
O terceiro erro diz respeito a múltiplas junções. Cada par de JOIN deve ser encapsulado em parênteses quando se ultrapassa duas tabelas. A mensagem de erro exibida pelo Access nesse caso é pouco explícita, o que leva muitos iniciantes a abandonarem a consulta SQL e voltarem à grade gráfica.

Progredir além das consultas SELECT no Access
Uma vez dominadas as consultas de seleção, o Access abre a porta para consultas de ação: INSERT INTO, UPDATE e DELETE. Esses comandos funcionam de maneira semelhante ao SQL padrão, com uma precaução adicional: o Access executa consultas de ação sem pedir confirmação por padrão se os avisos estiverem desativados nas opções do banco.
Testar primeiro em modo de seleção (transformar temporariamente o UPDATE em SELECT para verificar as linhas alvo) continua sendo uma boa prática antes de qualquer modificação de dados.
As consultas cruzadas, acessíveis por meio da cláusula TRANSFORM, merecem atenção. Elas permitem produzir uma tabela de síntese diretamente utilizável, sem exportação para o Excel. A sintaxe é específica do Access: TRANSFORM seguido da função de agregação, depois um SELECT clássico complementado por um PIVOT no campo a ser transposto em colunas.
Para aqueles que desejam conectar o Access a fontes externas (SQL Server, arquivos CSV via ODBC), as consultas SQL passthrough constituem uma opção avançada. Elas enviam o SQL diretamente para o servidor remoto, contornando assim as limitações do motor ACE. O SQL escrito nesse modo deve respeitar a sintaxe do servidor de destino, não a do Access.
O dialeto SQL do Access tem suas limitações, mas oferece um terreno de aprendizado concreto para quem já trabalha com essa ferramenta no dia a dia. Dominar as particularidades do Jet/ACE SQL evita reproduzir cegamente exemplos inadequados e fornece uma base sólida para migrar depois para motores mais poderosos.