LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

Documentos relacionados
LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

Bem-vindo ao tópico sobre consultas no SAP Business One.

Lição 1 - Criação de campos calculados em consultas

Manual das planilhas de Obras v2.5

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

MANUAL DA SECRETARIA

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

Criar as tabelas para um banco de dados

Banco de Dados. Microsoft Access. Índice

Apostilas OBJETIVA Atendente Comercial / Carteiro / Op. Triagem e Transbordo CORREIOS - Concurso Público º CADERNO. Índice

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

GERA GESTÃO E CONTROLE DE TÍTULOS: parte I

Estatística no EXCEL

Usando o Conference Manager do Microsoft Outlook

Principais Instruções em SQL

SEI Superintendência de Estudos Econômicos e Sociais da Bahia Av Luiz Viana Filho, 435-4ª avenida, 2º andar CAB CEP Salvador - Bahia Tel.

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

Banco de Dados Microsoft Access: Criar tabelas

Primeiros passos das Planilhas de Obra v2.6

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio.

SQL UMA ABORDAGEM INTERESSANTE

AGHOS - GESTÃO E REGULAÇÃO ASSISTENCIAL E FINANCEIRA DE SAÚDE MÓDULO DE REGULAÇÃO AMBULATORIAL DE CONSULTAS ESPECIALIZADAS

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Manual de utilização

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Relatórios. Manual. Pergamum

Astra LX Registro de Pacientes e Médicos Guia para o acesso aos registros de Pacientes e Médicos e eliminação de dados duplicados no AstraLX

Bem-vindo ao tópico sobre administração de listas de preços.

Acessando o SVN. Soluções em Vendas Ninfa 2

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

MANUAL DE UTILIZAÇÃO DO AMBIENTE EAD (Educação a Distância) ÍNDICE

Aula 4 Estatística Conceitos básicos

Passo a Passo do Cadastro Funcionários no SIGLA Digital

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Manual do Usuário - ProJuris Web - Biblioteca Jurídica Página 1 de 20

Treinamento sobre SQL

Projetos. Guia de início rápido

Como criar um blog. Será aberta uma janela onde você deverá especificar o título do blog, o endereço do blog, e o modelo.

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Astra LX Frases Codificadas Guia para o processo de Configuração de Frases Codificadas no Programa AstraLX.

Manual do Portal do Fornecedor. isupplier

Atualizações de Software Guia do Usuário

Aula 01 Conceitos Iniciais sobre Excel 2010

MAIS CONTROLE SOFTWARE Controle Financeiro / Fluxo de Caixa (MCS Versão ) Índice

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

2 Pesquisa de valores em uma lista de dados

Conhecendo o Decoder

MANUAL DE UTILIZAÇÃO DO TREINAMENTO EAD (Educação a Distância) ÍNDICE

COINF. Roteiro de Treinamento 0800Net. Versões e Revisões deste Documento. Índice. 1. Nome do Projeto. 2. Roteiro. Roteiro Treinamento Solicitante

Themis Serviços On Line - Publicações

Avançado. Visão geral do ambiente do VBA Retornar à planilha Excel

Usando o do-file editor Automatizando o Stata

Neste tópico, você aprenderá a criar facilmente um banco de dados para uma nova empresa e a definir configurações comuns de uma empresa no SAP

Manual Fácil 1 DOWNLOAD E INSTALAÇÃO. 1. Como faço o download do Jimbo Mobile?

Questões de Informática Prova Comentada Ministério Público da União

Índice. Introdução Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais... 35

MANUAL DE UTILIZAÇÃO DOMINIO ATENDIMENTO

Portal do Projeto Tempo de Ser

Guia Site Empresarial

Trecho retirando do Manual do esocial Versão 1.1

Manual do Cliente. Alu Tracker Monitoramento Veicular

Criar formulários preenchidos pelos usuários no Word

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA 3. SEQÜÊNCIA DA AULA. 3.1 Iniciando o PowerPoint

MICROSOFT EXCEL AVANÇADO

2015 GVDASA Sistemas Patrimônio 1

Configurando a emissão de boletos no sistema

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Q-Acadêmico. Módulo CIEE - Estágio. Revisão 01

DESENVOLVIMENTO DE SOFTWARE

Para os demais formatos, o relatório será gerado mas virá com configurações incorretas.

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

,QWURGXomRDR(GLWRUGH $SUHVHQWDo}HV3RZHU3RLQW

Manual do Instar Mail v2.0

Introdução aos critérios de consulta. Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em

UTILIZAÇÃO DE RECURSOS AVANÇADOS DO EXCEL EM FINANÇAS (PARTE II): ATINGIR META E SOLVER

Esse produto é um produto composto e tem subprodutos

Manual Operacional Agenda Regulada. Unidades Solicitantes

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA DE INFORMÁTICA MICROSOFT WORD 2012

Como enviar e receber correio eletrónico utilizando o Gmail

Portal do Fornecedor ANGELONI. Manual do usuário. (versão 1.1)

Manual Operacional RIGNER. [Digite seu endereço] [Digite seu telefone] [Digite seu endereço de ]

3.1 Definições Uma classe é a descrição de um tipo de objeto.

2015 GVDASA Sistemas Suprimentos 1

Excel XP. Table of Contents. Gerenciando dados...1 Classificação...2 Filtragem...4 Formulários...7 Subtotais...9 Validação de dados...

O EDITOR DE APRESENTAÇÕES POWER POINT

Cobrança Bancária. Contas / Manutenção.

Microsoft Access: Criar relações para um novo banco de dados. Vitor Valerio de Souza Campos

Professor Paulo Lorini Najar

Manual do KGeography. Anne-Marie Mahfouf Kushal Das Tradução: Luiz Fernando Ranghetti

Transcrição:

LINGUAGEM SQL PARA CSULTAS EM MICROSOFT ACCESS Objetivos: Neste tutorial serão apresentados os principais elementos da linguagem SQL (Structured Query Language). Serão apresentados diversos exemplos práticos de utilização da linguagem SQL. Pré-requisitos: Para acompanhar esta lição você deve dominiar os conceitos apresentados nos seguintes treinamento: "Curso Básico de Access" e no tutorial "Consultas Avançadas no Microsoft Access". Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Excel Avançado e VBA. Você pode adquirir os três arquivos, com todo o conteúdo deste curso, por apenas R$ 10,00. Para saber como adquirir este curso, Clique Aqui. Introdução: O SQL foi desenvolvido para ser uma linguagem padrão para operações com Banco de Dados. A linguagem SQL foi elaborada para ser independente de hardware ou do software. Ao usar o SQL, você não precisa saber a respeito do software de banco de dados ou do hardware envolvido em uma operação. Tudo o que você precisa conhecer são os comandos/instruções SQL padrão para solicitar informações, que obrigatoriamente é o mesmo em todos os sistemas que utilizam o SQL. Nota: Na prática existem pequenas diferenças entre o SQL dos diferentes bancos de dados, como o Microsoft Access, Microsoft SQL Server 2000, ORACLE, etc. Você usa operações SQL quando trabalha com o Microsoft Access, mas o programa, na verdade, oculta a linguagem SQL do usuário. Por exemplo, todas as operações de consulta são realizadas usando-se SQL, mas você vê apenas a parte gráfica (Modo Estrutura) onde a consulta é definida. Você pode ser muito produtivo no Microsoft Access sem saber nada de SQL. Um conhecimento básico de SQL, no entanto, melhora significativamente o seu uso do Microsoft Access, principalmente no uso de técnicas avançadas em Formulários e Relatórios e na criação de rotinas de programação. Quando você constrói uma consulta no modo estrutura, na verdade o Microsoft Access está definindo uma instrução SQL, a partir dos campos, critérios e opções de filtragem que você definiu na consulta. A título de exemplo, vamos acessar a instrução SQL da consulta "Totais por Pedido", fornecida com o arquivo Semana2.mdb, o qual faz parte dos arquivos de exemplos do Curso de Access Avançado. Nota: Você pode acompanhar este exemplo utilizando o arquivo Northwind.mdb, o qual faz parte do Access e acessando o SQL de qualquer uma das consultas disponíveis. Abra o banco de dados Semana2.mdb Vá para a Guia Consultas Dê um clique na consulta Totais por Pedido Dê um clique no botão Estrutura Selecione o comando Exibir -> Modo SQL. Seré exibido o comando SQL indicado a seguir: SELECT.NúmeroDoPedido, Sum(([Quantidade]*[PreçoUnitário])*(1-[Desconto])) AS TotalPorPedido INNER JOIN [Detalhes do Pedido].NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido GROUP BY.NúmeroDoPedido;

Nota: Se você não tiver disponível a consulta Totais por Pedido, utilize qualquer outra consulta disponível. Na prática é esta Instrução SQL que o Microsoft Access grava ao salvar uma consulta e também é esta Instrução SQL que é utilizada para selecionar os registros, aplicando os critérios especificados. Embora possa parecer um pouco complexa, veremos que a linguagem SQL é extremamente simples e intuitiva. Neste tópico veremos alguns aspectos básicos sobre o SQL, bem como os locais na Ajuda do Microsoft Access onde podem ser encontradas informações mais detalhadas sobre o SQL. Uma Instrução SQL descreve o conjunto de dados que você deseja recuperar (quais campos, de quais tabelas, quais critérios, classificação, expressões Calculadas, etc). Todas as instruções SQL são conduzidas com um único comando que contém uma descrição completa da informação exigida. Ao escrever uma instrução SQL, você não deve se preocupar em como os dados são recuperados, mas somente com o conteúdo do conjunto de dados. Esse é o principal benefício do método SQL. Em muitas operações do Microsoft Access, você pode usar instruções SQL, no lugar de expressões normais para inserir um conjunto de dados em um objeto. Por exemplo, todos os formulários e relatórios possuem uma propriedade RecordSource. Essa propriedade normalmente é o nome de uma tabela ou consulta, mas também pode ser uma instrução SQL. Lembre-se que o SQL é um padrão genérico para expressões de consulta em banco de dados. Embora a maior parte das versões do SQL compartilhe elementos básicos, elas não são idênticas. O Access SQL usa algumas palavras-chave que você não encontra em outras versões do SQL. Veremos através de exemplos a utilização das principais palavras chaves do SQL para a construção de expressões SQL para pesquisa em banco de dados. SELECT Esta com certeza é a instrução SQL mais importante, não existe pesquisa que não utilize esta instrução, vamos conhecêla em detalhes. A Instrução Select é utilizada para especificar "Quais os Campos" de "Quais tabelas" farão parte da consulta, quais os critérios de pesquisa que serão utilizados, qual a ordem de classificação, etc. A sintaxe da instrução está indicada a seguir: SELECT [predicado] { * tabela.* [tabela.]campo1 [AS alias1] [, [tabela.]campo2 [AS alias2] [,...]]} tabelaexpression [,...] [IN externaldatabase] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTI] Onde nós temos os seguintes elementos: Elemento predicado * Tabela Campo1, Campo2 Alias 1, Alias2 tabelaexpression Descrição Um dos seguintes: ALL, DISTINCT, DISTINCTROW ou TOP. Você usa um predicado para restringir o número de Registros que é retornado pela consulta. Se nenhum for especificado o padrão é ALL Especifica que todos os campos de uma determinada tabela ou consulta devem ser selecionados. Por exemplo: Select * from - Retorna todos os campos da tabela. O nome da tabela ou consulta de onde são selecionados os campos. Por exemplo, Select.NúmeroDoPedido,.DataDoPedido from - Seleciona os Campos NúmeroDoPedido e DataDoPedido, da tabela. O Nome dos campos a serem selecionados. Um "apelido" para o campo. Na Folha de Dados o apelido aparece como o título da coluna. Por exemplo, Select.NúmeroDoPedido As Número from, faz com que a coluna NúmeroDoPedido tenha o nomenúmero a ela associado. O nome da tabela de onde os campos serão selecionados

externaldatabase where group by having order by O nome do Bando de Dados que contem a tabela, caso não seja o banco de dados atual. Utilizado para especificar critérios na consulta. Por exemplo, Where.PaísDeDestino="Brasil" O mesmo que Agrupar Por no modo estrutura da consulta, na linha Total Especifica critérios quando utilizamos Agrupar Por. Utilizado para classificação dos registros em ordem crescente ou descendente de um determinado campo. Em um ambiente multiusuários com um grupo de trabalho seguro, use esta declaração com uma consulta para conceder ao usuário que executa a consulta as mesmas permissões que as do proprietário da consulta. Sintaxe instrução sql WITH OWNERACCESS OPTI A declaração WITH OWNERACCESS OPTI é opcional. WITH OWNERACCESS OPTI O exemplo a seguir permite que o usuário visualize informações sobre salários (mesmo que, de outra forma, o usuário não tenha permissão para visualizar a tabela FolhaDePagamento), desde que o proprietário da consulta tenha essa permissão: SELECT Sobrenome, Nome, Salário Funcionários ORDER BY Sobrenome WITH OWNERACCESS OPTI; Se de alguma outra forma o usuário for impedido de criar ou adicionar a uma tabela, você pode usar WITH OWNERACCESS OPTI para permitir que ele execute uma consulta criar tabela ou consulta acréscimo. Se você deseja impor configurações de segurança de grupo de trabalho e permissões de usuários, não inclua a declaração WITH OWNERACCESS OPTI. Essa opção requer que você tenha acesso ao arquivo System.mdw associado ao banco de dados. É realmente útil somente nas implementações de multiusuários com segurança. Vejamos alguns exemplos práticos para exemplificar o uso da instrução Select: Criar uma instrução SQL que retorne o campo NúmeroDoPedido, o campo DataDoPedido, o campo Frete e o campo PaísDeDestino da tabela. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete ; Toda Instrução SQL deve ser terminada com um ponte e vírgula (;), conforme indicado acima. Esta instrução SQL pode ser gerada a partir do modo estrutura da consulta. Basta você criar uma nova consulta baseada na tabela pedidos, adicionar os campos indicado e depois dar uma olhada no modo SQL. Um detalhe interessante é que se você fizer qualquer alteração no modo SQL, as alterações se refletem no modo estrutura e vice-versa. Isso acontece porque o modo estrutura da consulta, é simplesmente uma representação gráfica para facilitar a construção de expressões SQL. Alterar a instrução SQL anterior para que os registros sejam classificados em ordem crescente pelo valor do Frete. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete ORDER BY.Frete; Observe a utilização da cláusula ORDER BY.Frete para classificar os registros em ordem Crescente. A classificação em ordem crescente á o padrão no Microsoft Access. Quando formos classificar em ordem decrescente, precisamos especificar a palavra DESC, conforme indicado abaixo: SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete

ORDER BY.Frete DESC; Alterar a instrução SQL anterior para que sejam exibidos somente os pedidos cujo PaísDeDestino seja Brasil. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete WHERE (((.PaísDeDestino)="Brasil")) ORDER BY.Frete; Observe a utilização da Cláusula WHERE para filtrar somente os pedidos cujo PaísDeDestino seja Brasil. Como o campo PaísDeDestino é um campo do tipo texto, o valor do critério (Brasil) tem que vir entre aspas. Se fosse um campo do tipo Data, o valor do critério teria que vir delimitado pelo sinal #. Por exemplo #01/01/1995#. Vamos trabalhar um pouco mais com a cláusula WHERE. Altere a instrução SQL anterior para que sejam exibidos somente os pedidos para o Brasil ou Alemanha como PaísDeDestino. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete WHERE (((.PaísDeDestino)="Brasil" OR (.PaísDeDestino)="Alemanha")) ORDER BY.Frete; Observe a utilização da Cláusula OR ligando os dois Critérios. Lembre que a cláusula OR retorna um registro se o PaísDeDestino atender um dos dois critérios, isto é, se for Brasil ou se for argentina, o Registro será selecionado, que é exatamente o que desejamos, ou seja, todos os para o Brasil mais os pedidos para Argentina. Altere a instrução SQL anterior, retirando o critério para PaísDeDestino. Adicione um critério para NúmeroDoPedido maior do que 10500, retire a classificação do campo Frete a classifique pelo campo NúmeroDoPedido. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete WHERE (((.NúmeroDoPedido)>10500)) ORDER BY.NúmeroDoPedido; Observe a cláusula WHERE utilizando o operador de comparação maior do que (>) e a classificação através da cláusula ORDER BY no campo NúmeroDoPedido. Observe também, que no Microsoft Access, nas instruções SQL sempre aparece a identificação completa do campo no seguinte formato: NomeTabela.NomeCampo. Por exemplo.númerodopedido para indicar o campo NúmeroDoPedido da tabela. Podemos ver, através dos exemplos, que a linguagem SQL não é tão difícil como pode parecer a primeira vista. Observe que a sintaxe da linguagem é bastante intuitiva e orientada a extração de dados através das consultas. Vamos continuar vendo exemplos de aplicação da linguagem SQL com a utilização de recursos mais avançados. Alterar a instrução SQL anterior, e adicionar um critério de tal maneira que somente sejam exibidos os pedidos para o Ano de 1995. Tirar o critério do campo Número do Pedido. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete WHERE ((Year([DataDoPedido])=1995)) ORDER BY.NúmeroDoPedido; Observe a utilização da função Ano (Year) para extrairmos apenas o Ano do campo DataDoPedido a fim de especificarmos como critério o Ano=1995. Também a cláusula Order By foi mantida, classificando a listagem em ordem crescente pelo número do pedido. A utilização de funções junto com os comando SQL nos fornece inúmeras possibilidades de refinamento em nossas consultas. Alterar a instrução SQL anterior, para que sejam exibidos somente os pedidos no Período de 01/01/1995 até 31/07/1995 e que tenham como PaísDeDestino Brasil, Argentina, Alemanha ou Canadá. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete WHERE (((.DataDoPedido) Between #1/1/95# And #8/31/95#) AND (.PaísDeDestino) In ("Brasil","Argentina","Alemanha","Canadá"))) ORDER BY.NúmeroDoPedido;

Observe a utilização de vários critérios em diferentes campos. Colocamos critérios nos campos DataDoPedido e PaísDeDestino. Conforme descrito anteriormente os critérios de dois ou mais campos são ligados através do operador AND, indicando que um registro deve atender ambos os critérios para ser selecionado. Também temos a utilização dos operadores Between (Entre) para selecionar as datas dentre de um determinado intervalo e do operador In (Em) para selecionar o campo PaísDeDestino que seja igual a um dos valores apresentados na lista. Observe também, que os valores de data vem delimitados pelos marcadores #, conforme descrito anteriormente. Criar uma instrução SQL que retorne o campo NúmeroDoPedido, o campo DataDoPedido, o campo DataDeEntrega, o campo Frete e o campo PaísDeDestino da tabela. Criar uma coluna adicional que calcula o número de dias entre a DataDeEntrega e a DataDoPedido. Chamar esta coluna de Dias_Ped_Entr. SELECT.NúmeroDoPedido,.DataDoPedido,.DataDeEntrega,.PaísDeDestino,.Frete, [DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr WHERE (((.DataDoPedido) Between #1/1/95# And #8/31/95#) AND ((.PaísDeDestino) In ("Brasil","Argentina","Alemanha","Canadá"))) ORDER BY.NúmeroDoPedido; Veja que a coluna calculada está junto com a listagem dos campos no início da instrução Select. Além disso foi utilizada a palavra AS para atribuir um nome (apelido) para esta coluna calculada. Este nome é o que irá aparecer como título da coluna no modo Folha de Dados. Quando você constrói uma expressão, este é o nome que vem antes dos dois pontos, por exemplo: Dias_Ped_Entr: [DataDeEntrega]-[DataDoPedido]. Você também pode classificar a listagem em ordem crescente ou decrescente de um campo calculado. Por exemplo, se você quisesse classificar a listagem do ítem anterior, em ordem crescente, do número de dias entre a DataDeEntrega e a DataDoPedido, bastaria utilizar a seguinte instrução SQL: SELECT.NúmeroDoPedido,.DataDoPedido,.DataDeEntrega,.PaísDeDestino,.Frete, [DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr WHERE (((.DataDoPedido) Between #1/1/95# And #8/31/95#) AND ((.PaísDeDestino) In ("Brasil","Argentina","Alemanha","Canadá"))) ORDER BY [DataDeEntrega]-[DataDoPedido]; Alterar a instrução SQL anterior, eliminando os critérios para a DataDoPedido e para o PaísDeDestino. Colocar um novo critério para PaísDeDestino, onde sejam exibidos apenas os pedidos cujo PaísDeDestino tem a Primeira Letra na faixa de A até M. Utilize o operador Like. SELECT.NúmeroDoPedido,.DataDoPedido,.DataDeEntrega,.PaísDeDestino,.Frete, [DataDeEntrega]-[DataDoPedido] AS Dias_Ped_Entr WHERE (((.PaísDeDestino) Like "[A-M]*")) ORDER BY.PaísDeDestino; Observe a utilização do Operador Like ("Como") como critério de Pesquisa para esta consulta. Nunca é demais salientar que a utilização das Instruções SQL juntamente com as funções e operadores do Microsoft Access, nos fornece um amplo conjunto de possibilidades. Até agora utilizamos exemplos com Instruções que selecionam registros de uma única tabela. Porém é bastante comum criarmos Consultas baseadas em duas ou mais tabelas. Quando criamos instruções SQL que buscam dados em duas ou mais tabelas, dizemos que está sendo feito um Join entre as duas tabelas. Normalmente este "Join" (ou ligação) é feito através de um campo comum as duas tabelas. Por exemplo, NúmeroDoPedido na tabela e NúmeroDoPedido na tabela Detalhes do Pedido. Outro exemplo, CódigoDoClientena tabela e CódigoDoCliente na tabela Clientes. Pode acontecer de termos consultas que trabalham com três ou mais Tabelas, neste caso teremos diversos Joins. Agora passaremos e explorar, na Prática, através de exemplos a construção de Instruções SQL que trabalham com duas ou mais tabelas. Sempre lembrando que estas consultas podem ser construídas diretamente no modo estrutura das consultas e depois simplesmente vamos para o modo SQL e observamos o código gerado. Porém o conhecimento da linguagem SQL é útil em diversas situações, conforme veremos ao estudarmos Técnicas Avançadas em Formulários e Técnicas Avançadas em Relatórios. Criar uma instrução SQL que selecione os seguintes campos: NúmeroDoPedido da tabela DataDoPedido da tabela

PaísDeDestino da tabela Frete da tabela CódigoDoProduto, PreçoUnitário e Quantidade da tabela Detalhes do Pedido As tabelas e Detalhes do Pedido estão relacionadas através do campo NúmeroDoPedido. Classificar a listagem em ordem crescente do campo NúmeroDoPedido. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete, [Detalhes do Pedido].CódigoDoProduto, [Detalhes do Pedido].PreçoUnitário, [Detalhes do Pedido].Quantidade INNER JOIN [Detalhes do Pedido].NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido ORDER BY.NúmeroDoPedido; Observe a instrução que está em vermelho. Nela temos a utilização da cláusula INNER JOIN, ligando as tabelas e Detalhes do Pedido, através do campo NúmeroDoPedido, conforme especificado após o. UM Join deste tipo é bastante comum. Observe que está listagem irá trazer vários registros para cada Pedido, tantos quantos forem os ítens de cada pedido. Por exemplo, o Pedido Número 10248 apresenta três registros, um para cada um dos seus ítens. Um para o Produto 42, outro para o produto 72 e um para o produto cujo código é 11. Mas se ao invés do CódigoDoProduto, nos quiséssemos que fosse exibida a Descrição do Produto. Em primeiro lugar esta informação encontra-se na tabela Produtos, logo teremos que adicionar a Tabela Produtos a nossa consulta, a qual ira se ligar a tabela Detalhes Do Pedido através do campo CódigoDoProduto, logo teremos mais um Join. Após adicionar a tabela Produtos e substituir o campo CódigoDoProduto pelo campo NomeDoProduto, a nossa instrução SQL deve ficar conforme indicado abaixo: SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete, Produtos.NomeDoProduto,[Detalhes do Pedido].PreçoUnitário, [Detalhes do Pedido].Quantidade Produtos INNER JOIN ( INNER JOIN [Detalhes do Pedido].NúmeroDoPedido=[Detalhes do Pedido].NúmeroDoPedido) Produtos.CódigoDoProduto = [Detalhes do Pedido].CódigoDoProduto ORDER BY.NúmeroDoPedido; Observe que neste caso temos um INNER JOIN dentro do outro. Dentro do parênteses é feita a ligação entre as tabelas e Detalhes Do Pedido, através do campo NúmeroDoPedido, e externamente é feita a ligação entre as tabelas Produtos e Detalhes do Pedido, através do campo NúmeroDoPedido. Posso utilizar diversos níveis de INNER JOIN, embora esta não seja uma prática recomendada, pois se aumentarmos muito os níveis deinner JOIN, posso ter como resultado pesquisas mais lentas em conseqüência do aumento da complexidade das consultas. Até 3 ou 4 níveis é considerado normal, acima disso preciso repensar a maneira de construir a consulta. Alterar a instrução SQL do ítem anterior para que somente sejam exibidos os pedidos para os produtos cujo NomeDoProduto inicie com uma letra na faixa de A até J. Tirar a classificação do campo NúmeroDoPedido e classificar em ordem crescente do campo NomeDoProduto. SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete, Produtos.NomeDoProduto, [Detalhes do Pedido].PreçoUnitário, [Detalhes do Pedido].Quantidade INNER JOIN (Produtos INNER JOIN [Detalhes do Pedido] Produtos.CódigoDoProduto = [Detalhes do Pedido].CódigoDoProduto).NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido WHERE (((Produtos.NomeDoProduto) Like "[A-J]*")) ORDER BY Produtos.NomeDoProduto;

Observe, além dos dois INNER JOIN, a utilização da cláusula WHERE em conjunto com Operador LIKE para especificar o critério desejado. Até este momento estivemos construindo Instruções SQL que correspondem as consultas de Seleção. Especificamos quais campos serão exibidos, critérios de filtragem para estes campos e uma ordem de classificação. A partir de agora aprenderemos a utilizar Instruções SQL para a construção de outros tipos de Consulta : Criar Tabela, Consulta anexação, Consulta de tabela de referência cruzada, Consulta exclusão e Consulta atualização. Vamos começar criando uma consulta do tipo Criação de Tabela e observar as diferenças na instrução SQL. Construir uma instrução SQL que selecione o NúmeroDoPedido, DataDoPedido, PaísDeDestino e Frete. Colocar um critério para selecionar apenas os registros cuja DataDoPedido tenha caído no mês de Junho ou Julho de qualquer ano. A consulta deverá ser do tipo Criar tabela e o nome da tabela será " de Junho e Julho". SELECT.NúmeroDoPedido,.DataDoPedido,.PaísDeDestino,.Frete INTO [ de Junho e Julho] WHERE ((Month([DataDoPedido]) In (6,7))); Observe a utilização da instrução INTO [ de Junho e Julho]. Ao invés de utilizarmos um SELECT, utilizamos um SELECT INTO, que é a instrução SQL utilizada para criar uma nova tabela com os registros retornados pela consulta. O Nome da nova tabela vem depois da instrução INTO. Como o nome da tabela possui espaços em branco, o nome deve ser colocado entre colchetes. Também utilizamos, na cláusula WHERE, o operador In, juntamente com a função Month, para especificar que o mês da DataDoPedido deve ser um dos valores definidos na cláusula In (6=Junho, 7=Julho). A Instrução SELECT INTO, informa ao Microsoft Access que é para "pegar" os registros rertornados pela consulta e inseri-los em uma nova tabela. Caso a tabela já exista o Microsoft Access avisa que a tabela será excluída e uma nova tabela será criada. Criar uma instrução SQL que aumento o PreçoUnitário em 20% na tabela Detalhes do Pedido, devido a um ajuste na moeda e uma desvalorização em relação ao Dólar. UPDATE [Detalhes do Pedido] SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2; Observe a simplicidade da instrução SQL. Utilizamos uma instrução UPDATE, seguida do nome da tabela onde será feita a atualização. Em seguida uma instrução SET com a expressão de atualização para aumentar em 20% o PreçoUnitário. Importante: Se você executar mais do que uma vez, uma consulta de atualiazação, os dados serão repetidamente atualizados. Por exemplo: da primeira vez que a consulta for executada os dados do campo PreçoUnitário serão aumentados em 20% (por exemplo, um produto com preço Unitário de R$ 100,00 passará para R$120). Se você executar a consulta novamente será aplicado um novo acréscimo de 20%, sobre os novos valores - o produto de R$120,00 passará para R$144,00 e assim sucessivamente. Vamos alterar essa instrução para incluir um critério na consulta de atualização. Alterar a instrução SQL do ítem anterior para que somente sejam aumentados os registros cujo PreçoUnitário for maior ou igual a R$ 20,00. UPDATE [Detalhes do Pedido] SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2 WHERE ((([Detalhes do Pedido].PreçoUnitário)>=20)); Foi adicionada uma cláusula WHERE, para atualizar apenas os registros cujo PreçoUnitário seja maior do que R$ 20,00. Aqui podemos fazer alguns comentários sobre a utilização prática de Instruções SQL. Como exemplo poderíamos citar um Formulário para atualização de Preços. Poderíamos colocar um campo onde o usuário digita o valor do aumento (10%, 15%, etc) e um botão Atualizar. Esse botão Atualizar tem associado ao evento Ao Clicar, uma Instrução SQL que atualiza os registros desejados. Isso aumenta em muito a nossa flexibilidade, evitando que o usuário tenha que se deslocar para a Guia Consultas e executar uma consulta de Atualização. Juntamente com a instrução UPDATE, poderíamos utilizar Operadores e Funções do Microsoft Access. Também podemos utilizar critérios em outros campos além do campo que está sendo atualizado. A título de exemplo, vamos alterar a instrução SQL anterior. Alterar a instrução SQL do ítem anterior para que somente sejam aumentados os registros cujo PreçoUnitário for maior ou igual a R$ 20,00 E cujo NúmeroDoPedido seja menor do que 10500. UPDATE [Detalhes do Pedido] SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2 WHERE ((([Detalhes do Pedido].PreçoUnitário)>=20)

AND (([Detalhes do Pedido].NúmeroDoPedido)<10500)); Observe que utilizamos critérios em dois campos (PreçoUnitário e NúmeroDoPedido) e que estes critérios estão ligados por um operadore, o que significa que um registro, somente será atualizado se ele atender aos dois critérios ao mesmo tempo (PreçoUnitário maior ou igual a 20 e NúmeroDoPedido menor do que 10500). Se o registro atender a apenas uma das condições, o mesmo não terá o seu PreçoUnitário atualizado. Vamos refinar um pouco mais a nossa consulta de atualização. Vamos fazer com que somente sejam atualizados os para o ano da DataDoPedido igual a 1995, e ainda iremos manter os critérios adicionados até agora. Alterar a instrução SQL anterior para incluir um critério para que o Ano da DataDoPedido seja 1995. Você terá que incluir a tabela, uma vez que o campo DataDoPedido, encontra-se nesta tabela. UPDATE INNER JOIN [Detalhes do Pedido].NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido SET [Detalhes do Pedido].PreçoUnitário = [PreçoUnitário]*1.2 WHERE ((([Detalhes do Pedido].PreçoUnitário)>=20) AND (([Detalhes do Pedido].NúmeroDoPedido)<10500) AND (Year([DataDoPedido])=1995)); Temos diversos detalhes interessantes a observar nesta instrução SQL. Primeiro um INNER JOIN relacionando as tabelas edetalhes Do Pedido, através do campo NúmeroDoPedido. Isso mostra que é perfeitamente possível, utilizar um INNER JOIN dentro de uma consulta de atualização. Segundo: Temos a utilização da função Year para extrair apenas o ano do campo DataDoPedido e compará-lo com o critério 1995. Novamente vale a pena comentar que a utilização de Operadores e Funções, nos fornece uma grande flexibilidade em termos de construção de nossas consultas. Agora vamos passar a analisar as Instruções SQL para consultas do tipo Tabela de referência cruzada. Veremos alguns exemplos, e os detalhes a respeito de cada instrução. Criar uma instrução SQL que liste o total de compras pelo NomeDaEmpresa e por ano da DataDoPedido. Classificar a listagem em ordem crescente do NomeDaEmpresa. TRANSFORM Sum(([PreçoUnitário]*[Quantidade])*(1-[Desconto])) AS Expr2 SELECT Clientes.NomeDaEmpresa (Clientes INNER JOIN Clientes.CódigoDoCliente =.CódigoDoCliente) INNER JOIN [Detalhes do Pedido].NúmeroDoPedido = [Detalhes do Pedido].NúmeroDoPedido GROUP BY Clientes.NomeDaEmpresa ORDER BY Clientes.NomeDaEmpresa PIVOT Year([DataDoPedido]); Temos diversos detalhes a observar nesta instrução SQL. Primeiro a instrução TRANSFORM, que calcula o valor de cada ítem (usando a fórmula ([PreçoUnitário]*[Quantidade])*(1-[Desconto])) e a função Sum para somar todos os ítens de um determinado cliente. A instruçãotransform equivale ao elemento Valor da Referência Cruzada. Este valor calculado é que irá formar os valores da nossa referência cruzada. Temos também, a utilização de dois INNER JOIN, um ligando com Detalhes do Pedido, através do campo NúmeroDoPedido, e outro ligando com Clientes, através do campo CódigoDoCliente, uma vez que precisamos de informações destas três tabelas. A Cláusula GROUP BY agrupa a soma de todos os de um determinado cliente, definido pelo campo NomeDaEmpresa. Os diferentes clientes, formarão as diferentes linhas da nossa referência cruzada. E por último, a utilização da palavra PIVOT, juntamente com a função Year, indicando que os diferentes Anos da DataDoPedido irão compor as colunas da nossa referência cruzada. Veja o que diz a Ajuda do Microsoft Access sobre a instrução TRANSFORM: Cria uma consulta tabela de referência cruzada. Sintaxe TRANSFORM funçãoagrg instruçãoselect

PIVOT campocentral [IN (valor1[, valor2[,...]])] A instrução TRANSFORM possui as partes a seguir: Parte Descrição funçãoagrg Uma função agregada SQL que opera sobre os dados selecionados. instruçãoselect Uma instrução SELECT. O campo ou expressão que você quer usar para criar títulos de coluna no conjunto de campocentral resultados da consulta. valor1, valor2 Valores fixos usados para criar títulos de colunas. Comentários: Quando resume dados utilizando uma consulta tabela de referência cruzada, você seleciona valores de campos ou expressões especificadas como títulos de colunas para poder visualizar os dados em um formato mais compacto do que com uma consulta seleção. A instrução TRANSFORM é opcional, mas quando for incluída será a primeira instrução em uma seqüência SQL. Ela antecede uma instrução SELECT que especifica os campos usados como títulos de linhas e uma cláusula GROUP BY que especifica o agrupamento de linhas. Opcionalmente, você pode incluir outras cláusulas, como WHERE, que especifiquem critérios adicionais de seleção ou de classificação. Você pode também usar subconsultas como atributos especificamente, aqueles em uma cláusula WHERE em uma consulta tabela de referência cruzada. Os valores retornados em campocentral são usados como títulos de colunas no conjunto de resultados da consulta. Por exemplo, articular os números das vendas no mês da venda em uma consulta tabela de referência cruzada criaria 12 colunas. Você pode restringir campocentral para criar títulos a partir de valores fixos (valor1, valor2) relacionados na cláusula IN opcional. Você pode também incluir valores fixos para os quais não existam dados para criar colunas adicionais. Criar uma instrução SQL que gere uma Consulta de tabela de referência cruzada. As linhas deverão ser formadas pelopaísdedestino da tabela Clientes. As colunas serão formadas pelo número do mês da DataDoPedido e os valores serão formados pela contagem de pedidos. Adicionar um critério de tal forma que somente sejam exibidos os registros para Brasil ou Alemanha. TRANSFORM Count(.NúmeroDoPedido) AS ContarDeNúmeroDoPedido SELECT Clientes.PaísDeDestino Clientes INNER JOIN Clientes.CódigoDoCliente =.CódigoDoCliente WHERE (((Clientes.PaísDeDestino) In ("Brasil","Alemanha"))) GROUP BY Clientes.PaísDeDestino PIVOT Month([DataDoPedido]); Utilizamos a função Count para contar o número de por PaísDeDestino e por Mês. Também utilizamos um INNER JOIN para relacionar as tabelas Clientes e, através do campo CódigoDoCliente. A utilização da cláusula WHERE, juntamente com o operador IN para limitar o PaísDeDestino a Brasil ou Alemanha. O GROUP BY indicando que o campo PaísDeDestino formará as linhas da referência cruzada. Finalmente a utilização de PIVOT com a função Month (Mês) indicando que os meses da DataDoPedido formarão as colunas da referência cruzada. Agora vamos aprender a construir instruções SQL para consultas de exclusão. Veremos que a simplicidade da linguagem SQL facilita em muito o entendimento e a aprendizagem destas instruções. Faça uma cópia da tabela. Chame a cópia de CópiaDe. Criar uma instrução SQl que elimine todos os da tabela CópiaDe cujo PaísDeDestino seja a Alemanha DELETE CópiaDe.PaísDeDestino WHERE (((.PaísDeDestino)="Alemanha")); A instrução é tão simples, que praticamente dispensa comentários. A única recomendação importante é que não devemos utilizar uma instrução DELETE, sem a utilização de uma cláusula WHERE. Utilizar um DELETE sem uma cláusula WHERE significa que estaremos eliminando todos os registros da tabela. Vamos criar instruções SQL com parâmetros (Consultas Parametrizadas), que ao serem executadas solicitam ao usuário que seja digitado um valor para o parâmetro. Criar uma instrução SQL que selecione os campos NúmeroDoPedido, DataDoPedido, Frete e PaísDeDestino da tabela. Fazer com que ao ser executada, a consulta solicite que seja digitado o nome do País e que sejam retornados apenas os para o PaísDeDestino digitado.

SELECT.NúmeroDoPedido,.DataDoPedido,.Frete,.PaísDeDestino WHERE (((.PaísDeDestino)=[Digite o País:])); Na hora que esta instrução SQL é executada, o Microsoft Access localiza na cláusula WHERE, após o sinal de igual a expressão: [Digite o País:]. Como esta expressão não é o nome de um campo de uma das tabelas que fazem parte da consulta, o Microsoft Access abre uma janela pedindo que seja digitado um valor, este valor substitui a expressão. Por exemplo, ao executar esta consulta o Microsoft Access pede que seja digitado o nome do País, se você digitar Brasil, a cláusula WHERE fica da seguinte maneira: WHERE (((.PaísDeDestino="Brasil")), e somente serão listados os cujo país de Destino for igual a Brasil. As aspas são colocadas pelo Microsoft Access, porque o campo PaísDeDestino é do tipo texto. Alterar a instrução SQL do exemplo anterior para que além do PaísDeDestino, seja solicitada uma Data Inicial, uma Data Final. Somente devem ser listados os registros para o País digitado e dentro do Período especificado. SELECT.NúmeroDoPedido,.DataDoPedido,.Frete,.PaísDeDestino WHERE (((.DataDoPedido) Between [Data Inicial:] And [Data Final:]) AND ((.PaísDeDestino)=[Digite o País:])); Observe a utilização do operador Between, junto com os parâmetros [Data Inicial:] e [Data Final:]. Os parâmetros nos campos DataDoPedido e PaísDeDestino estão ligados por um AND (Operador E), conforme explicado anteriormente. Existe uma série de detalhes sobre a utilização do SQL. Existem, também, diversas situações onde podemos utilizar uma instrução SQL para retornar dados. Por exemplo, ao construir uma Caixa De Combinação em um formulário, podemos utilizar uma Instrução SQL para buscar dados em uma Tabela, dados estes que serão exibidos na Caixa de Combinação. Podemos utilizar instruções SQL, juntamente com Funções de Domínio para exibir valores em formulários, como por exemplo, a média de vendas para um determinado período, o total de vendas para um determinado cliente, e assim por diante. Uma pergunta que fica é: Onde posso encontrar mais informações sobre o SQL? Um bom ponto de partida é a Ajudo do Microsoft Access. Agora indicaremos alguns locais na Ajuda do Microsoft Access, onde você poderá encontrar informações sobre SQL. Selecione o comando Ajuda -> Ajuda do Microsoft Access ou pressione a tecla F1. Clique na guia Conteúdo. Clique no sinal de + ao lado da opção "Trabalhar com Consultas". Surgem as opções: Criar consultas SQL. Trabalhar com instruções SQL.

Estas opções estão indicadas na figura a seguir: Através destas duas opções você encontra muitas informações e exemplos sobre o uso da linguagem SQL no Microsoft Access. Conclusão: A linguagem SQL apresenta um padrão de comando/instruções para consultar, alterar e pesquisar tabelas de um banco de dados. A implementação do SQL utilizada no Microsoft Access segue grande parte do padrão definido pelo Ansi-92, mas apresenta algumas inconsistências, como por exemplo: Utiliza o * ao invés do % como caractere curinga Utiliza ao invés de para critérios do tipo texto Muito pode ser feito no Access, sem conhecer a linguagem SQL, mas com certeza você terá muito mais recursos à mão, conhecendo a linguagem SQL.