Acessar SQL: conceitos básicos, vocabulário e sintaxe

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

Quando você deseja recuperar dados de um banco de dados, peça os dados usando linguagem SQL ou SQL. O SQL é uma linguagem computacional que se assemelha muito ao inglês, mas que os programas de banco de dados entendem. Cada consulta executada usa SQL nos bastidores.

Entender 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á retornando os resultados desejados.

Este é um conjunto de artigos sobre o SQL do Access. Este artigo descreve o uso básico do SQL para selecionar dados e usa exemplos para ilustrar a sintaxe SQL.

Neste artigo

O que é SQL?

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

Você usa o SQL para descrever conjuntos de dados que podem ajudá-lo a responder perguntas. Ao usar o SQL, você deve usar a sintaxe correta. Sintaxe é o conjunto de regras pelo qual os elementos de uma linguagem são combinados corretamente. A sintaxe SQL é baseada na sintaxe em inglês e usa muitos dos mesmos elementos que a sintaxe de Visual Basic for Applications (VBA).

Por exemplo, uma instrução SQL simples que recupera uma lista de sobrenomes para contatos cujo primeiro nome é Mary pode se assemelhar a isso:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Observação

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

Instruções SELECT

Para descrever um conjunto de dados usando SQL, você grava uma instrução SELECT. Uma instrução SELECT contém uma descrição completa de um conjunto de dados que você deseja obter de um banco de dados. Isso inclui o seguinte:

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

Cláusulas SQL

Como uma frase, uma instrução SQL tem cláusulas. Cada cláusula executa uma função para a instrução SQL. Algumas cláusulas são necessárias em uma instrução SELECT. A tabela a seguir lista as cláusulas SQL mais comuns.

Cláusula SQL Função Obrigatório
SELECT Lista os campos que contêm dados de interesse. Sim
FROM Lista as tabelas que contêm os campos listados na cláusula SELECT. Sim
WHERE Especifica critérios de campo que devem ser atendidos por cada registro a ser incluído nos resultados. Não
ORDER BY Especifica como classificar os resultados. Não
GROUP BY Em uma instrução SQL que contém funções agregadas, lista campos que não são resumidos na cláusula SELECT. Somente se houver esses campos
HAVING Em uma instrução SQL que contém funções agregadas, 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 da fala. A tabela a seguir lista tipos de termos SQL.

Termo SQL Parte comparável da fala Explicação Exemplo
Identificador Substantivo Um nome que você usa para identificar um objeto de banco de dados, como o nome de um campo. Clientes. [Número de telefone]
operador verbo ou adverb Um palavra-chave que representa uma ação ou modifica uma ação. AS
constante Substantivo Um valor que não é alterado, como um número ou NULL. 42
expressão Adjetivo Uma combinação de identificadores, operadores, constantes e funções avaliadas como um único valor. >= Produtos. [Preço unitário]

Início da Página

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

Uma instrução SQL usa o formulário geral:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Observação

  • O Access ignora quebras de linha em uma instrução SQL. No entanto, considere usar uma linha para cada cláusula para ajudar a melhorar a legibilidade de suas instruções SQL para você e outras pessoas.
  • Cada instrução SELECT termina com um ponto semiso (;). O ponto semiautônomos pode aparecer no final da última cláusula ou em uma linha por si só no final da instrução SQL.

Um exemplo no Access

O seguinte ilustra como uma instrução SQL para uma consulta de seleção simples pode ser semelhante no Access:

Guia Objeto SQL mostrando uma instrução SELECT

1. Cláusula SELECT

2. Cláusula FROM

3. cláusula WHERE

Neste exemplo, a instrução SQL indica "Selecione os dados armazenados nos campos denominado Endereço de E-mail e Empresa da tabela com o nome Contactos, especificamente os registos nos quais o valor do campo Cidade é Seattle".

Vejamos 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 Correio Eletrónico] 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 dizer que tabelas contêm os campos e não pode especificar quaisquer condições que tenham de 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 (FROM) seguido de um identificador (Contactos).

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

A cláusula WHERE

WHERE City="Seattle"

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

Observação

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

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

Início da Página

Ordenar os resultados: ORDENAR POR

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

Uma cláusula ORDER BY contém uma lista dos campos que pretende utilizar para ordenação, 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 em seguida pelos valores no campo Endereço de Correio Eletrónico por ordem ascendente. A cláusula ORDER BY assemelhar-se-ia ao seguinte:

ORDER BY Company DESC, [E-mail Address]

Observação

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

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

Início da Página

Trabalhar com dados resumidos: AGRUpar POR e TER

Por vezes, quer trabalhar com dados resumidos, como o total de vendas num mês ou os itens mais caros num 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 consulta mostre a contagem de endereços de e-mail listados para cada empresa, a cláusula SELECT poderá assemelhar-se ao seguinte:

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

As funções de agregação que pode utilizar dependem do tipo de dados que se encontra no campo ou expressão que pretende utilizar. Para obter mais informações sobre as funções de agregação disponíveis, veja 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 terá 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 nenhuma 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 cláusula SELECT aplicar uma função de agregação a [Endereço de E-mail] mas não à Empresa, a cláusula GROUP BY assemelhar-se-ia ao seguinte:

GROUP BY Company

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

Limitar valores agregados através de 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 for 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 AVG (que calcula um valor médio) com o primeiro campo na 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, coloque os critérios numa cláusula HAVING. Por exemplo, se apenas quiser que a consulta devolva linhas se existirem mais do que um endereço de e-mail associados à empresa, a cláusula HAVING poderá assemelhar-se ao seguinte:

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

Observação

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 agregada vão para a cláusula WHERE e os critérios para campos que são utilizados com funções de agregação vão para a cláusula HAVING.

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

Início da Página

Combinar resultados da 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 tipos de dados compatíveis. Quando executa 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 selecionar.

Observação

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

Quando utiliza o operador UNION, também pode especificar se os resultados da consulta devem incluir linhas duplicadas, se existirem, utilizando 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 denominada Produtos e outra tabela denominada Serviços. Ambas as tabelas têm campos que contêm o nome do produto ou serviço, o preço, a garantia ou a disponibilidade da garantia e se oferece o produto ou serviço exclusivamente. Embora a tabela Produtos armazene informações de garantia e a tabela Serviços armazene 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, tal como a seguinte, 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 através de uma consulta união.

Início da Página