USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (ActiveX/Controles/DLL)

Título da Dica:  Consultas SQL
Postada em 22/1/2008 por KoRn            
  TRABALHANDO COM OS DADOS
INSTRUÇÃO SELECT
Esta é a instrução onipresente da SQL.

Estes exemplos abaixo poodem ser transformados em Consulta do Access:
digitar na grade QBE e salvar como consulta.

"A instrução SELECT é responsável por consultar o Banco de Dados e retornar o
as informações requeridas pelo programador." (INSTANT SQL Programming - Joe Celko)

Sintaxe

SELECT [[ALL] | DISTINCT] {<ListaDeColunasOuExpressão>|*}
FROM <NomeTabels>
[WHERE<CondiçãoDeBusca>];

CRIANDO UMA NOVA CONSULTA SQL

Consulta - Novo - Modo Estrutura - Tecle Esc - Exibir -
Modo SQL - Cole o código e Salve.

EXECUTANDO A CONSULTA

Execute a Consulta (Clique no ponto de interrogação).

SELECIONAR TODOS OS NOMES E TELEFONES DE CLIENTES

SELECT Nome, Fone FROM Clientes;

SELECIONE TODA A TABELA CLIENTES

SELECT * FROM Clientes;

SELECIONAR APENAS CLIENTES DISTINTOS - REMOVER DUPLICADOS

SELECT DISTINCT * FROM Clientes;

CONTAR CLIENTES COM TELEFONE E MUDAR NOME DO CAMPO

SELECT Count([Fone Residencial]) AS [Clientes com Fone] FROM Clientes;

REAJUSTAR TODOS OS PRODUTOS EM 3%

SELECT Produto, PUnitário AS PreçoAtual, PUnitário * 1.03 AS PreçoReajustado
FROM tblProdutos;

QUANTIDADE, O PREÇO UNITÁRIO MÁXIMO E A MÉDIA DOS PREÇOS UNITÁRIOS

SELECT Count(*) AS [Total de Produtos], Avg(PreçoUnitário) AS [Preço Unitário Médio],
Max(PreçoUnitário) AS [Preço Unitário Máximo] FROM Produtos;

NOMEDOPRODUTO E PREÇO UNITÁRIO SEPARADOS POR "tem um preço unitário de"

SELECT NomeDoProduto, 'tem um preço unitário de', PreçoUnitário FROM Produtos;

CLÁUSULA WHERE

A Cláusula Where é como um filtro. é uma condição.

CLIENTES CUJO BAIRRO SEJA MONTESE OU PARQUELÂNDIA

SELECT * FROM Clientes WHERE Bairro = 'Montese' OR Bairro = 'Parquelândia';

PREDICADOS DA CLÁUSULA WHERE: LIKE, IN e BETWEEN
LIKE - Use este quando já souber o que está procurando

IN - Este quando desejar procurar em uma lista

SELECT * FROM Clientes WHERE Nome LIKE 'Rob*';

SELET DISTINCT Código
FROM Clientes
WHERE Código IN ('JM2', 'LK5', 'DN7');

Usando o NOT:

...

WHERE Código NOT IN ...

SELECT * FROM Clientes WHERE Nome BETWEEN 'Ana' AND 'Luiz';

Usando o NOT:

... NOT BETWEEN ...

USO DO NULL, TRUE, FALSE e UNKNOWN

SELECT Nome FROM Clientes WHERE email IS NULL;

Usa-se também de maneira semelhabte os outros predicados do WHERE.

CLÁUSULA ORDER BY

Ordenar por

SELECT * FROM Clientes ORDER BY Nome DESC;

DESC ou ASC são opcionais. ASC é o default.

GROUP BY

SELECT * FROM Clientes GROUP BY Nome;

MOSTRAR VENDAS MAIS RECENTES

SELECT Código, MAX (DataVenda) FROM Pedidos GROUP BY Código;

PRODUTO MENOS VENDIDO

SELECT Código, MIN (Quantidade) FROM ItensPedidos GROUP BY Código;

SOMANDO VENDAS POR PRODUTO

SELECT Código, SUM (Quantidade) AS [Soma] FROM ItensPedidos GROUP BY Código;

CONSULTAS UNIÃO DE TABELAS (JOIN)
Teoricamente é ilimitado o numero de Tabelas que podemos adicionar a uma Consulta SQL.

INNER JOIN
Cria uma Consulta que une os registros das duas Tabelas, mas somente aqueles onde os Campos Chaves são iguais. Na jenela da Consulta dê um duplo clique na linha de relacionamento entre as Tabelas. Este é o tipo padrão do Access, o tipo 1. O tipo 2 é o LEFT JOIN e o 3 é o RIGHT JOIN. Este tipo é representado com uma linha sem setas.

SELECT * FROM Clientes INNER JOIN Pedidos ON Clientes.Código=Pedidos.CódigoCli;

Podemos usar o AND e OR para auxiliar o ON.

Gera uma Consulta com número de Campos igual à soma dos Campos das duas Tabelas e com número de registros igual a aos que atendam ao Critério em ON..

LEFT JOIN
Esta vai incluir todos os registros da Tabelas da Esquerda e somente os da Direita quando os Campos Chaves forem iguais. É representado na tela da Consulta entre as Tabelas, como uma seta para a Direita.

SELECT * FROM Clientes LEFT JOIN Pedidos ON Clientes.Código = Pedidos.CódigoCli;

RIGHT JOIN
Este inclui todos os registros da Tabela da Direita e somente os da esquerda quando as Chaves forem iguais. É representado na tela da Consulta entre as Tabelas, como uma seta para a Esquerda. A associação aqui é ao contrário: LeftJoin tem seta para a direita e RightJoin para a esquerda.

SELECT * FROM Clientes RIGHT JOIN Vendas ON Clientes.CodCli = Vendas.CodCli;

Obs.: Em todas as 3 podemos utilizar os operadores: <, >, <= e => entre outros.

FUNÇÃO COUNT
SELECT COUNT (Nome) FROM Clientes;
SELECT DISTINCT COUNT (Nome) FROM Clientes;

FUNÇÃO SUM
SELECT SUM ([Quantidade]) AS [Total de Vendas] FROM Vendas;

SELECT DISTINCT SUM (Remuneração) AS [Total do Salário] FROM Funcionários;

FUNÇÃO AVG (Média)
SELECT AVG (PUnitário) FROM Produtos;

SELECT DISTINCT AVG (PUnitário) FROM Produtos;

FUNÇÃO MAX
SELECT MAX (Remuneração) AS [Maior Salário] FROM Funcionários;

FUNÇÃO MIN
SELECT MIN (Remuneração) AS [Menor Salário] FROM Funcionários;

SUB-CONSULTAS

SELECT Nome FROM Pedidos, Clientes WHERE Pedidos.CódigoCli = Clientes.Código
   AND Pedidos.Código = (SELECT MAX (Pedidos.Código) FROM Pedidos
WHERE DataVenda >= #11-28-1989#);

FUNCIONÁRIOS COM SALÁRIO ACIMA DE R$ 2.000,00

SELECT Nome, Remuneração FROM Funcionários
  WHERE Funcionário.Tipo = 'Supervisor' AND
  EXISTS (SELECT * FROM Funcionários WHERE Tipo = 'Segundo Grau'
  AND Remuneração >= 2000);

Se algum resultado => EXISTS = True
Se nenhum resultado => EXISTS = False

ATUALIZAÇÃO
UPDATE Clientes SET Estado = 'Ce' WHERE Cidade = 'Fortaleza';

EXCLUINDO DADOS DE TABELAS
Excluir todos os registros da Tabela Clientes:

DELETE FROM Clientes;

Excluir o Registro onde o Fone = 2883342

DELETE FROM Clientes WHERE Fone = '2883342';

EXCLUIR DADOS USANDO SUB-CONSULTA

DELETE FROM Clientes WHERE Nome IN (SELECT Nome FROM Clientes2)

Excluirá todos os registros de Clientes cujos Nomes sejam semelhantes aos de Clientes2.
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página