SQL do Access: conceitos básicos, vocabulário e sintaxe

Aplica-se A
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Quando pretender obter dados de uma base de dados, pode solicitar os dados utilizando linguagem SQL (Structured Query Language) ou SQL. SQL é uma linguagem de computador que se assemelha muito ao inglês, mas que os programas de banco de dados entendem. Todas as consultas que executa utilizam SQL em segundo plano.

Compreender como o SQL funciona pode ajudá-lo a criar consultas melhores e pode facilitar a compreensão de como corrigir uma consulta que não está a devolver os resultados que pretende.

Este artigo faz parte de um conjunto sobre o SQL do Access. Este artigo descreve a utilização básica de SQL para selecionar dados e utiliza exemplos para ilustrar a sintaxe SQL.

Neste artigo

O que é SQL?

SQL é uma linguagem de computador para trabalhar com conjuntos de fatos e as relações entre eles. Os programas de bases de dados relacionais, como o Microsoft Office Access, utilizam SQL para trabalhar com dados. Ao contrário de muitas linguagens de computador, SQL não é difícil de ler e entender, mesmo para um novato. Como muitas linguagens de computador, SQL é um padrão internacional que é reconhecido por organismos de padrões como ISO e ANSI.

Você usa SQL para descrever conjuntos de dados que podem ajudá-lo a responder a perguntas. Ao usar SQL, você deve usar a sintaxe correta. A sintaxe é o conjunto de regras através das quais os elementos de uma língua são corretamente combinados. A sintaxe SQL é baseada na sintaxe inglesa e utiliza muitos dos mesmos elementos que Visual Basic for Applications sintaxe (VBA).

Por exemplo, uma instrução SQL simples que obtém uma lista de apelidos para contactos cujo nome próprio é Maria poderá ter um aspeto semelhante a este:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Nota

O SQL não é utilizado apenas para manipular dados, mas também para criar e alterar a estrutura de objetos de base de dados, tais como tabelas. A parte do SQL que é usada para criar e alterar objetos de banco de dados é chamada de DDL (linguagem de definição de dados). Este tópico não abrange DDL. Para obter mais informações, consulte o artigo Criar ou modificar tabelas ou índices usando uma consulta definição de dados.

Instruções SELECT

Para descrever um conjunto de dados com SQL, tem de escrever uma instrução SELECT. Uma instrução SELECT contém uma descrição completa de um conjunto de dados que pretende obter a partir de uma base de dados. Isto inclui o seguinte:

  • As tabelas que contêm os dados.
  • Como os dados de diferentes origens estão relacionados.
  • Quais campos ou cálculos produzirão os dados.
  • Critérios aos quais os dados têm de corresponder para serem incluídos.
  • Se e como ordenar os resultados.

Cláusulas SQL

Tal como uma frase, uma instrução SQL tem cláusulas. Cada cláusula desempenha uma função para a instrução SQL. Algumas cláusulas são necessárias numa instrução SELECT. A tabela seguinte lista as cláusulas SQL mais comuns.

Cláusula SQL Função Obrigatório
SELECT Lista os campos que contêm dados relevantes. Sim
FROM Lista as tabelas que contêm os campos listados na cláusula SELECT. Sim
WHERE Especifica os critérios de campo que cada registo tem de cumprir para ser incluído nos resultados. Não
ENCOMENDAR POR Especifica como ordenar os resultados. Não
GROUP BY Numa instrução SQL que contenha funções de agregação, listam campos que não estão resumidos na cláusula SELECT. Apenas se existirem esses campos
HAVING Numa instrução SQL que contenha funções de agregação, especifica condições que se aplicam a campos resumidos na instrução SELECT. Não

Termos SQL

Cada cláusula SQL é composta por termos — comparáveis a partes do discurso. A tabela seguinte lista os tipos de termos SQL.

Termo SQL Parte comparável do discurso Definição Exemplo
identificador substantivo Um nome que utiliza para identificar um objeto de base de dados, tal como o nome de um campo. clientes. [Número de Telefone]
operador verbo ou advérbio Uma palavra-chave que representa uma ação ou modifica uma ação. AS
constante substantivo Um valor que não muda, como um número ou NULL. 42
expressão adjetivo É uma combinação de identificadores, operadores, constantes e funções que é avaliada como um único valor. >= Produtos. [Preço Unitário]

Início da Página

Cláusulas SQL básicas: SELECT, FROM e WHERE

Uma instrução SQL assume a forma geral:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Nota

  • O Access ignora quebras de linha numa instrução SQL. No entanto, pondere utilizar uma linha para cada cláusula para ajudar a melhorar a legibilidade das suas instruções SQL para si e para outras pessoas.
  • Cada instrução SELECT termina com um ponto e vírgula (;). O ponto e vírgula pode aparecer no final da última cláusula ou numa linha isoladamente no fim da instrução SQL.

Um exemplo no Access

O que se segue ilustra o aspeto de uma instrução SQL para uma consulta selecionar simples no Access:

Separador do objeto SQL com a instrução SELECT

1. Cláusula SELECT

2. Cláusula FROM

3. cláusula WHERE

Este exemplo de instrução SQL diz "Selecione os dados armazenados nos campos chamados Endereço de E-mail e Empresa da tabela chamada Contatos, especificamente os registros nos quais o valor do campo Cidade é Seattle".

Vamos ver o exemplo, uma cláusula de cada vez, para ver como funciona a sintaxe SQL.

A cláusula SELECT

SELECT [E-mail Address], Company

Esta é a cláusula SELECT. Consiste num operador (SELECT) seguido de dois identificadores ([Endereço de E-mail] e Empresa).

Se um identificador contiver espaços ou carateres especiais (como "Endereço de E-mail"), tem de estar entre parênteses retos.

Uma cláusula SELECT não tem de indicar que tabelas contêm os campos e não pode especificar quaisquer condições que devam ser cumpridas pelos dados a incluir.

A cláusula SELECT aparece sempre à frente da cláusula FROM numa instrução SELECT.

A cláusula FROM

FROM Contacts

Esta é a cláusula FROM. Consiste num operador (DE) seguido de um identificador (Contactos).

Uma cláusula FROM não lista os campos a serem selecionados.

A cláusula WHERE

WHERE City="Seattle"

Esta é a cláusula WHERE. Consiste num operador (WHERE) seguido de uma expressão (City="Seattle").

Nota

Ao contrário das cláusulas SELECT e FROM, a cláusula WHERE não é um elemento obrigatório de uma instrução SELECT.

Pode realizar muitas das ações que o SQL lhe permite realizar ao utilizar as cláusulas SELECT, FROM e WHERE. São apresentadas mais informações sobre a forma como utiliza estas cláusulas nestes artigos adicionais:

Início da Página

Ordenar os resultados: ORDER BY

Tal como o Microsoft Excel, o Access permite-lhe ordenar os resultados de consultas numa folha de dados. Também pode especificar na consulta como pretende ordenar os resultados quando a consulta é executada, ao utilizar uma cláusula ORDER BY. Se utilizar uma cláusula ORDER BY, é a última cláusula na instrução SQL.

Uma cláusula ORDER BY contém uma lista dos campos que pretende utilizar para ordenar, pela mesma ordem em que pretende aplicar as operações de ordenação.

Por exemplo, suponha que pretende que os seus resultados sejam ordenados primeiro pelo valor do campo Empresa por ordem descendente e, se existirem registos com o mesmo valor para Empresa, ordenados a seguir pelos valores no campo Endereço de E-mail por ordem ascendente. A sua cláusula ORDER BY teria o seguinte aspeto:

ORDER BY Company DESC, [E-mail Address]

Nota

Por predefinição, o Access ordena os valores por ordem ascendente (A-Z, do menor para o maior). Em alternativa, utilize a palavra-chave DESC para ordenar os valores por ordem descendente.

Para obter mais informações sobre a cláusula ORDER BY, consulte o tópico Cláusula ORDER BY.

Início da Página

Trabalhar com dados resumidos: GROUP BY e HAVING

Por vezes, pretende trabalhar com dados resumidos, como o total de vendas num mês ou os itens mais caros de um inventário. Para tal, aplique uma função de agregação a um campo na sua cláusula SELECT. Por exemplo, se quiser que a sua consulta mostre a contagem de endereços de e-mail apresentados para cada empresa, a sua cláusula SELECT poderá ter o seguinte aspeto:

SELECT COUNT([E-mail Address]), Company

As funções de agregação que pode utilizar dependem do tipo de dados que estão no campo ou expressão que pretende utilizar. Para obter mais informações sobre as funções de agregação disponíveis, consulte o artigo Funções de agregação SQL.

Especificar campos que não são utilizados numa função de agregação: a cláusula GROUP BY

Quando utiliza funções de agregação, normalmente também tem de criar uma cláusula GROUP BY. Uma cláusula GROUP BY lista todos os campos aos quais não aplica uma função de agregação. Se aplicar funções de agregação a todos os campos numa consulta, não tem de criar a cláusula GROUP BY.

Uma cláusula GROUP BY segue imediatamente a cláusula WHERE, ou a cláusula FROM se não existir cláusula WHERE. Uma cláusula GROUP BY lista os campos conforme aparecem na cláusula SELECT.

Por exemplo, continuando o exemplo anterior, se a sua cláusula SELECT aplicar uma função agregada a [Endereço de E-mail], mas não a Company, a sua cláusula GROUP BY teria o seguinte aspeto:

GROUP BY Company

Para obter mais informações sobre a cláusula GROUP BY, consulte o tópico Cláusula GROUP BY.

Limitar os valores agregados utilizando critérios de grupo: a cláusula HAVING

Se quiser utilizar critérios para limitar os resultados, mas o campo ao qual pretende aplicar critérios seja utilizado numa função de agregação, não pode utilizar uma cláusula WHERE. Em vez disso, utilize uma cláusula HAVING. Uma cláusula HAVING funciona como uma cláusula WHERE, mas é utilizada para dados agregados.

Por exemplo, suponha que utiliza a função MÉD (que calcula um valor médio) com o primeiro campo da sua cláusula SELECT:

SELECT COUNT([E-mail Address]), Company

Se quiser que a consulta restrinja os resultados com base no valor dessa função CONTAR, não pode utilizar um critério para esse campo na cláusula WHERE. Em vez disso, coloca os critérios numa cláusula HAVING. Por exemplo, se apenas pretende que a consulta devolva linhas se existir mais do que um endereço de e-mail associado à empresa, a cláusula HAVING poderá ter um aspeto semelhante ao seguinte:

HAVING COUNT([E-mail Address])>1

Nota

Uma consulta pode ter uma cláusula WHERE e uma cláusula HAVING – os critérios para campos que não são utilizados numa função de agregação vão na cláusula WHERE e os critérios para campos que são utilizados com funções de agregação vão na cláusula HAVING.

Para obter mais informações sobre a cláusula HAVING, consulte o tópico Cláusula HAVING.

Início da Página

Combinar resultados de consulta: UNION

Quando quiser rever todos os dados devolvidos por várias consultas selecionar semelhantes em conjunto, como um conjunto combinado, utilize o operador UNION.

O operador UNION permite-lhe combinar duas instruções SELECT numa só. As instruções SELECT que combinar têm de ter o mesmo número de campos de saída, pela mesma ordem e com os mesmos tipos de dados ou compatíveis. Quando executar a consulta, os dados de cada conjunto de campos correspondentes são combinados num único campo de saída, para que o resultado da consulta tenha o mesmo número de campos que cada uma das instruções select.

Nota

Para efeitos de uma consulta união, os tipos de dados Número e Texto são compatíveis.

Ao utilizar o operador UNION, também pode especificar se os resultados da consulta devem incluir linhas duplicadas, caso existam, ao utilizar a palavra-chave ALL.

A sintaxe SQL básica para uma consulta união que combina duas instruções SELECT é a seguinte:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Por exemplo, suponha que tem uma tabela com o nome Produtos e outra tabela com o nome Serviços. Ambas as tabelas têm campos que contêm o nome do produto ou serviço, o preço, garantia ou disponibilidade da garantia e se você oferece o produto ou serviço exclusivamente. Apesar de a tabela Produtos armazenar informações sobre a garantia e a tabela Serviços armazenar informações de garantia, as informações básicas são as mesmas (quer um determinado produto ou serviço inclua uma promessa de qualidade). Pode utilizar uma consulta união, como a que se segue, para combinar os quatro campos das duas tabelas:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Para obter mais informações sobre como combinar instruções SELECT com o operador UNION, consulte Combinar os resultados de várias consultas selecionar com uma consulta união.

Início da Página