Banco de Dados II - Aula1

2.623 visualizações

Publicada em

Disciplina Banco de Dados II - PRONATEC

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.623
No SlideShare
0
A partir de incorporações
0
Número de incorporações
26
Ações
Compartilhamentos
0
Downloads
29
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Banco de Dados II - Aula1

  1. 1. Aula 001 Banco de Dados II PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  2. 2. PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  3. 3. 1. Banco de Dados de Exemplo • Vamos considerar um banco de dados `empresa´ com as tabelas `cliente´, `cidade´,`vendedor´ seguindo o DER abaixo: VENDEDOR CLIENTE CIDADEV-C C-C 1 N N 1 • Vendedor (PK=ID) Cidade (PK=ID) ID Nome Comissão 1 José da Silva 1,50% 2 Maria Aparecida 3,00% 3 Antônio Costa 1,50% ID Nome Estado 1 Patos de Minas MG 2 Uberlândia MG 3 São Paulo SP • Cliente (PK=ID, FK1=cidade, FK2=vendedor) ID Nome Cidade Vendedor Ultima Venda Vendas 1 Só Argamassas 2 1 José $500,00 2 A Constrular null 3 Maria $300,00 3 Barato Acabamentos 1 2 André $0,00 4 Supermercado Frondoso 3 null Ana $1200,00
  4. 4. 2. JOIN • Até agora quando precisamos consultar ligando duas ou mais tabelas usávamos a ligação diretamente na cláusula WHERE. Ex: where cliente.IDC = cidade.ID • Em alguns casos podemos encontrar problemas neste tipo de ligação. Por exemplo, se um “cliente” não tem uma “cidade” ligada a ele, não iria aparecer no resultado da consulta, que pode ser um erro grave. • Nesse caso teríamos que informar ao SELECT para retornar também esses clientes sem cidade. • Fazemos isso com a cláusula “Join”. • O JOIN pode ser empregado de várias formas distintas
  5. 5. 3. INNER JOIN • Este é o JOIN mais comum utilizado e sua característica é só trazer registros que contenham correspondência nas outras tabelas utilizadas, sendo assim no caso de um “cliente” sem ligação com “cidade” o cliente não seria mostrado no resultado • Exemplo: Mostrar nome do cliente, suas vendas e a cidade onde está localizado select cliente.nome, cliente.vendas, cidade.nome from cliente INNER JOIN cidade ON cidade.id = cliente.idc • Ou seja, esse comando não mudou nada do nosso problema: clientes sem cidades ainda não saem • Então usar INNER JOIN é a mesma coisa que ligar usando a cláusula WHERE, somente uma forma diferente de fazer a mesma coisa.
  6. 6. 4. LEFT JOIN / RIGHT JOIN • Este é o JOIN que resolve o nosso problema dos “clientes” sem “cidades”. • Exemplo: select cliente.nome, cliente.vendas, cidade.nome From cliente LEFT JOIN cidade ON cidade.id = cliente.idc • O “LEFT” indica de qual tabela você se refere ao estar querendo o resultado mesmo sem ligação. LEFT em inglês significa “esquerda” ou seja nos referimos a tabela da esquerda, que nesse exemplo é a tabela “cliente” • Podemos ainda usar na forma RIGHT JOIN (da direita) select cliente.nome, cliente.vendas, cidade.nome from cidade RIGHT JOIN cliente ON cidade.id = cliente.idc
  7. 7. 5. FULL JOIN • Um problema incomum mas que pode ocorrer é precisarmos listar tanto os dados do lado esquerdo (LEFT) que não tenha correspondência com o lado direito (RIGHT) e vice-versa. • Nesse caso não podemos usar apenas LEFT ou RIGHT pois se usarmos o LEFT ficaremos sem o resulto do RIGHT e vice-versa, então a solução é usar o FULL JOIN que pega todos os dados mesmo que não se correspondam a esquerda ou a direita.
  8. 8. 6. JOIN Com Chave Composta • Notamos que para usarmos o JOIN devemos ligar a chave primária de uma tabela com a estrangeira da outra • Caso as chaves sejam compostas (mais de um atributo) então devemos usar o operador lógico AND para a associação • Exemplo, no Banco de Dados: NF (id,serie,data,cliente) Chave Primária: ID, Serie Itens (nf, serie, codigo, preço, quantidade) select itens.codigo, itens.preço, itens.quantidade From nf INNER JOIN itens ON nf.id = itens.nf AND nf.serie = itens.serie
  9. 9. 7. Banco de Dados de Exemplo • Este é o DER e a estrutura do Banco de Dados que usaremos de exemplo nas próximas aulas para aprendizado:

×