Sunteți pe pagina 1din 7

8/4/2014

Cantinho dos Amantes do Access - SQL Prtico

SQL Prtico
Com a inteno de facilitar a compreenso desta poderosa e til ferramenta de Banco de Dados, eu venho trazer alguns exemplos prticos e algumas observaes sobre a SQL.

SQL - Structured Query Language - Linguagem Estruturada de Consulta


a linguagem de consultas, utilizada para criar os mais diversos tipos de consultas, que podem ser muito teis e poderosas. "O principal problema experimentado por programadores no aprendizado da SQL que devem desaprender as outras linguagens." (INSTANT SQL Programming - Joe Celko) "O SQL uma linguagem declarativa, daquelas que voc diz ao computador o que deseja que ele faa e esquece os detalhes, preocupa-se apenas com os resultados." (INSTANT SQL Programming - Joe Celko)

COMO VISUALIZAR O CDIGO SQL NO ACCESS?


possvel visualizar ou escrever consultas do Microsoft Access como instrues SQL: - Na janela QBE da Consulta - Menu Exibir - Clicar em SQL - Pronto, est na janela de cdigo SQL

COMO CRIAR UMA CONSULTA SQL NO ACCESS?


Para criar uma nova Conslta SQL: - Clique em Novo - Consulta - Modo Estrutura - Tecle Esc para fechar a janela Mostrar tabela - Menu Exibir - Clicar em SQL - Pronto, est no editor de SQL

ONDE USAR UMA CONSULTA SQL NO ACCESS?


Podemos usar instrues SQL SELECT onde o Access aceite um nome de tabela, de consulta ou de campo. Para gerar uma lista de itens em uma Caixa de listagem, voc pode definir a propriedade Origem do Controle da caixa de listagem com uma instruo SQL SELECT. Tabm pode criar uma Consulta puramente SQL e salvar como consulta, depois criar um Formulrio ou um Relatrio baseado nesta Consulta. Podem os usar tambm em funes agregadas, caixas de cobinao (quando usamos os
http://www.ativoaccess.com.br/cantinho/sqlpratico.htm 1/7

8/4/2014

Cantinho dos Amantes do Access - SQL Prtico

assistentes para estes controles ou em Pesquisas), origem da linha destes 2 controles como argumento Condio Onde da ao AbrirFormulrio ou AplicarFiltro, como argumento de domnio ou critrio em uma funo agregada de domnio ou como definio para as propriedades Origem do Registro ou Origem da Linha.

INSTRUES SQL
Uma Instruo SQL utilizada no Access como uma String ou sequncia de caracteres. SELECT - Obtm um grupo de registros e insere os registros em um dynaset ou em uma tabela UPDATE - Define os valores dos campos de uma tabela em uma atualizao TRANSFORM - Cria uma tabela de resumo, utilizando o contedo de um campo como cabealho de cada coluna DELETE FROM - Remove registros de uma tabela INSERT INTO - Acrescenta um grupo de registros a uma tabela.

TRABALHANDO EM ESTRUTURAS DE TABELAS


CREATE TABLE
Criando a estrutura fsica (Os Campos) de uma Tabela. Com um Campo Chave Primria (Cdigo) do tipo Inteiro e dois outros Campos do tipo Texto. CREATE TABLE ClientesSQL (Nome TEXT, Fone TEXT, Cdigo INTEGER CONSTRAINT RestrictCamp PRIMARY KEY);

ALTER TABLE
Alterando a estrutura de uma Tabela. Adicionando um Campo ALTER TABLE Clientes ADD COLUMN Email TEXT; Removendo um Campo ALTER TABLE Funcionrios DROP COLUMN Cargo;

DROP TABLE
Excluindo uma Tabela DROP TABLE Clientes; DROP INDEX PrimaryKey ON Clientes;

TRABALHANDO COM OS DADOS


INSTRUO SELECT
http://www.ativoaccess.com.br/cantinho/sqlpratico.htm 2/7

8/4/2014

Cantinho dos Amantes do Access - SQL Prtico

Esta a instruo onipresente da SQL. Estes exemplos abaixo poodem ser transformados em Consulta do Access: digitar na grade QBE e salvar como consulta. "A instruo SELECT responsvel por consultar o Banco de Dados e retornar o as informaes requeridas pelo programador." (INSTANT SQL Programming - Joe Celko) Sintaxe SELECT [[ALL] | DISTINCT] {<ListaDeColunasOuExpresso>|*} FROM <NomeTabels> [WHERE<CondioDeBusca>];

CRIANDO UMA NOVA CONSULTA SQL


Consulta - Novo - Modo Estrutura - Tecle Esc - Exibir Modo SQL - Cole o cdigo e Salve.

EXECUTANDO A CONSULTA
Execute a Consulta (Clique no ponto de interrogao).

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, PUnitrio AS PreoAtual, PUnitrio * 1.03 AS PreoReajustado FROM tblProdutos;

QUANTIDADE, O PREO UNITRIO MXIMO E A MDIA DOS PREOS UNITRIOS


SELECT Count(*) AS [Total de Produtos], Avg(PreoUnitrio) AS [Preo Unitrio Mdio], Max(PreoUnitrio) AS [Preo Unitrio Mximo] FROM Produtos;

NOMEDOPRODUTO E PREO UNITRIO SEPARADOS POR "tem um preo unitrio de"


http://www.ativoaccess.com.br/cantinho/sqlpratico.htm 3/7

8/4/2014

Cantinho dos Amantes do Access - SQL Prtico

SELECT NomeDoProduto, 'tem um preo unitrio de', PreoUnitrio FROM Produtos;

CLUSULA WHERE
A Clusula Where como um filtro. uma condio.

CLIENTES CUJO BAIRRO SEJA MONTESE OU PARQUELNDIA


SELECT * FROM Clientes WHERE Bairro = 'Montese' OR Bairro = 'Parquelndia';

PREDICADOS DA CLUSULA 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 Cdigo FROM Clientes WHERE Cdigo IN ('JM2', 'LK5', 'DN7'); Usando o NOT: ... WHERE Cdigo 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 tambm de maneira semelhabte os outros predicados do WHERE.

CLUSULA ORDER BY
Ordenar por SELECT * FROM Clientes ORDER BY Nome DESC; DESC ou ASC so opcionais. ASC o default.

GROUP BY
SELECT * FROM Clientes GROUP BY Nome;

MOSTRAR VENDAS MAIS RECENTES


http://www.ativoaccess.com.br/cantinho/sqlpratico.htm 4/7

8/4/2014

Cantinho dos Amantes do Access - SQL Prtico

SELECT Cdigo, MAX (DataVenda) FROM Pedidos GROUP BY Cdigo;

PRODUTO MENOS VENDIDO


SELECT Cdigo, MIN (Quantidade) FROM ItensPedidos GROUP BY Cdigo;

SOMANDO VENDAS POR PRODUTO


SELECT Cdigo, SUM (Quantidade) AS [Soma] FROM ItensPedidos GROUP BY Cdigo;

CONSULTAS UNIO 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 so iguais. Na jenela da Consulta d um duplo clique na linha de relacionamento entre as Tabelas. Este o tipo padro 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.Cdigo=Pedidos.CdigoCli; Podemos usar o AND e OR para auxiliar o ON. Gera uma Consulta com nmero de Campos igual soma dos Campos das duas Tabelas e com nmero de registros igual a aos que atendam ao Critrio 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.Cdigo = Pedidos.CdigoCli;

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 associao aqui ao contrrio: 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.

FUNO COUNT
SELECT COUNT (Nome) FROM Clientes; SELECT DISTINCT COUNT (Nome) FROM Clientes;

FUNO SUM
SELECT SUM ([Quantidade]) AS [Total de Vendas] FROM Vendas;
http://www.ativoaccess.com.br/cantinho/sqlpratico.htm 5/7

8/4/2014

Cantinho dos Amantes do Access - SQL Prtico

SELECT DISTINCT SUM (Remunerao) AS [Total do Salrio] FROM Funcionrios;

FUNO AVG (Mdia)


SELECT AVG (PUnitrio) FROM Produtos; SELECT DISTINCT AVG (PUnitrio) FROM Produtos;

FUNO MAX
SELECT MAX (Remunerao) AS [Maior Salrio] FROM Funcionrios;

FUNO MIN
SELECT MIN (Remunerao) AS [Menor Salrio] FROM Funcionrios;

SUB-CONSULTAS
SELECT Nome FROM Pedidos, Clientes WHERE Pedidos.CdigoCli = Clientes.Cdigo AND Pedidos.Cdigo = (SELECT MAX (Pedidos.Cdigo) FROM Pedidos WHERE DataVenda >= #11-28-1989#);

FUNCIONRIOS COM SALRIO ACIMA DE R$ 2.000,00


SELECT Nome, Remunerao FROM Funcionrios WHERE Funcionrio.Tipo = 'Supervisor' AND EXISTS (SELECT * FROM Funcionrios WHERE Tipo = 'Segundo Grau' AND Remunerao >= 2000); Se algum resultado => EXISTS = True Se nenhum resultado => EXISTS = False

ATUALIZAO
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.
http://www.ativoaccess.com.br/cantinho/sqlpratico.htm 6/7

8/4/2014

Cantinho dos Amantes do Access - SQL Prtico

--------------------------------------------------Cantinho dos Amantes do Access http://www.geocities.com/bdaccess/

http://www.ativoaccess.com.br/cantinho/sqlpratico.htm

7/7

S-ar putea să vă placă și