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

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

Quando pretender obter dados de uma base de dados, solicita os dados utilizando a Linguagem de Consulta Estruturada ou SQL. SQL é uma linguagem de computador que se assemelha muito ao inglês, mas que os programas de base de dados entendem. Todas as consultas que fazes usam o SQL nos bastidores.

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

Este artigo faz parte de um conjunto 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?

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

Utiliza o SQL para descrever conjuntos de dados que podem ajudá-lo a responder a perguntas. Quando utilizar o SQL, deve utilizar a sintaxe correta. A sintaxe é o conjunto de regras pelas quais os elementos de uma língua são corretamente combinados. A sintaxe SQL baseia-se na sintaxe inglesa, e utiliza muitos dos mesmos elementos que a sintaxe Visual Basic for Applications (VBA).

Por exemplo, uma simples declaração SQL que recupera uma lista de apelidos para contactos cujo primeiro nome é Maria pode se assemelhar a isto:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

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

Declarações SELECT

Para descrever um conjunto de dados utilizando o SQL, escreva uma declaração SELECT. Uma declaraçã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:

  • Que tabelas contêm os dados.

  • Como os dados de diferentes fontes estão relacionados.

  • Quais campos ou cálculos produzirão os dados.

  • Critérios que os dados devem corresponder a serem incluídos.

  • Se e como ordenar os resultados.

Cláusulas SQL

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

Cláusula SQL

O que faz

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 cumpridos por cada registo a incluir nos resultados.

Não

ENCOMENDAR POR

Especifica como ordenar os resultados.

Não

GROUP BY

Numa declaração SQL que contém funções agregadas, lista campos que não são resumidos na cláusula SELECT.

Só se existirem tais campos

HAVING

Numa declaração SQL que contém funções agregadas, especifica as condições aplicáveis aos campos que são resumidos na declaração SELECT.

Não

Termos SQL

Cada cláusula SQL é composta por termos — comparáveis a partes de fala. A tabela que se segue lista tipos de termos SQL.

Termo SQL

Parte comparável da fala

Definição

Exemplo

identificador

substantivo

Um nome que usa para identificar um objeto de base de dados, como o nome de um campo.

Os clientes. [Número de telefone]

operador

verbo ou advérino

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 NULO.

42

expressão

adjetivo

Uma combinação de identificadores, operadores, constantes e funções que avaliam a um único valor.

>= Produtos. [Preço Unitário]

Início da Página

Cláusulas BÁSICAS SQL: SELECT, FROM e WHERE

Uma declaração SQL toma o formulário geral:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Notas: 

  • O acesso ignora quebras de linha numa declaração SQL. No entanto, considere usar uma linha para cada cláusula para ajudar a melhorar a legibilidade das suas declarações SQL para si e para os outros.

  • Cada declaração SELECT termina com um ponto e vírgula (;). O ponto semi-cólon pode aparecer no final da última cláusula ou numa linha por si só no final da declaração SQL.

Um exemplo no Access

O seguinte ilustra o que uma declaração SQL para uma consulta seletiva simples pode parecer no Access:

Separador do objeto SQL com a instrução SELECT

1. Cláusula SELECT

2. A partir da cláusula

3. CLÁUSULA ONDE

Esta declaração de exemplo SQL diz "Selecione os dados que são armazenados nos campos chamados Endereço de e-mail e Empresa da tabela denominada Contactos, especificamente os registos em que o valor do campo City é 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. É constituída por um operador (SELECT) seguido de dois identificadores ([Endereço de e-mail] e Empresa).

Se um identificador contiver espaços ou caracteres especiais (como "Endereço de e-mail"), deve ser incluído em suportes quadrados.

Uma cláusula SELECT não tem de dizer quais as tabelas que contêm os campos, e não pode especificar quaisquer condições que devem ser satisfeitas pelos dados a incluir.

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

A cláusula FROM

FROM Contacts

Esta é a cláusula FROM. É constituída por um 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 ONDE. É constituída por um 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 exigido de uma declaração SELECT.

Pode realizar muitas das ações que o SQL lhe permite fazer utilizando cláusulas SELECT, FROM e WHERE. Mais informações sobre a forma como utiliza estas cláusulas são apresentadas nestes artigos adicionais:

Início da Página

Triagem dos resultados: ORDER BY

Tal como o Microsoft Excel, o Access permite-lhe classificar 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, é a última cláusula na declaração SQL.

Uma cláusula ORDER BY contém uma lista dos campos que pretende utilizar para a triagem, na mesma ordem que pretende aplicar as operações de tipo.

Por exemplo, suponha que pretenda que os seus resultados sejam classificados primeiro pelo valor do campo Empresa em ordem descendente, e - se houver registos com o mesmo valor para a Empresa - classificados em seguida pelos valores no campo Endereço de e-mail por ordem ascendente. A sua cláusula ORDER BY assemelhar-se-ia ao seguinte:

ORDER BY Company DESC, [E-mail Address]

Nota: Por predefinição, o Access classifica valores por ordem ascendente (A-Z, o menor ao maior). Utilize a palavra-chave DESC para classificar valores em ordem descendente.

Para obter mais informações sobre a ORDEM POR Cláusula, consulte o tópico ENCOMENDA POR Cláusula.

Início da Página

Trabalhar com dados resumidos: GROUP BY e HAVING

Por vezes, queremos trabalhar com dados resumidos, como o total de vendas num mês, ou os itens mais caros num inventário. Para isso, aplica uma função de agregação a um campo na sua cláusula SELECT. Por exemplo, se pretender que a sua consulta mostre a contagem de endereços de e-mail listados para cada empresa, a sua cláusula SELECT poderá assemelhar-se ao seguinte:

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

As funções agregadas 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 agregadas disponíveis, consulte o artigo SqL Aggregate Functions.

Especificar campos que não são utilizados numa função agregada: O GRUPO POR cláusula

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

Uma cláusula GRUPO A segue imediatamente a cláusula WHERE, ou a cláusula FROM se não houver cláusula WHERE. Uma cláusula GRUPO A lista os campos tal como 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 à Empresa, a sua cláusula GROUP BY assemelhar-se-ia ao seguinte:

GROUP BY Company

Para mais informações sobre o GRUPO POR cláusula, consulte o tópico GRUPO POR Cláusula.

Limitação dos valores agregados utilizando critérios de grupo: a cláusula HAVING

Se pretender utilizar critérios para limitar os seus resultados, mas o campo a que pretende aplicar critérios é utilizado numa função agregada, não pode utilizar uma cláusula WHERE. Em vez disso, usas uma cláusula DE TER. Uma cláusula DE TER funciona como uma cláusula WHERE, mas é usada para dados agregados.

Por exemplo, suponha que utilize a função AVG (que calcula um valor médio) com o primeiro campo na sua cláusula SELECT:

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

Se pretender que a consulta restringa os resultados com base no valor dessa função COUNT, não pode utilizar um critério para esse campo na cláusula WHERE. Em vez disso, coloca-se os critérios numa cláusula DE TENS. Por exemplo, se apenas quiser que a consulta devolva filas se existirem mais de um endereço de e-mail associado à empresa, a cláusula HAVING pode assemelhar-se ao seguinte:

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

Nota: Uma consulta pode ter uma cláusula WHERE e uma cláusula DE FACTO — critérios para campos que não são utilizados numa função agregada vão na cláusula WHERE, e os critérios para os campos que são utilizados com funções agregadas vão na cláusula HAVING.

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

Início da Página

Combinação de resultados de consulta: UNION

Quando pretender rever todos os dados que são devolvidos por várias consultas selecionadas semelhantes em conjunto, como conjunto combinado, utilize o operador da UE.

O operador da UE permite combinar duas declarações SELECT numa só. As declarações SELECT que combina devem ter o mesmo número de campos de saída, na mesma ordem, e com os mesmos tipos de dados ou compatíveis. Quando executam a consulta, os dados de cada conjunto de campos correspondentes são combinados num campo de saída, de modo a que a saída de consulta tenha o mesmo número de campos que cada uma das declarações selecionadas.

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

Quando utilizar o operador da UE, também pode especificar se os resultados da consulta devem incluir filas duplicadas, se existirem, utilizando a palavra-chave ALL.

A sintaxe SQL básica para uma consulta sindical que combina duas declaraçõ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 chamada Produtos e outra tabela chamada Serviços. Ambas as tabelas têm campos que contêm o nome do produto ou serviço, o preço, garantia ou disponibilidade de garantia, e se oferece o produto ou serviço exclusivamente. Embora a tabela Produtos armazena informações de garantia, e as lojas de mesa Serviços garantam informações, a informação básica é a mesma (se um determinado produto ou serviço inclui uma promessa de qualidade). Você pode usar uma consulta sindical, como o seguinte, para combinar os quatro campos das duas mesas:

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 declarações SELECT utilizando o operador da UE, consulte Combine os resultados de várias consultas selecionadas utilizando uma consulta sindical.

Início da Página

Precisa de mais ajuda?

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

×