Aula 001
Banco de Dados II
PRONATEC
Programa Nacional de Acesso ao
Ensino Técnico e Emprego
PRONATEC
Programa Nacional de Acesso
ao Ensino Técnico e Emprego
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
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
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.
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
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.
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
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:

Banco de Dados II - Aula1

  • 1.
    Aula 001 Banco deDados II PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  • 2.
    PRONATEC Programa Nacional deAcesso ao Ensino Técnico e Emprego
  • 3.
    1. Banco deDados 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.
    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.
    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.
    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.
    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.
    6. JOIN ComChave 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.
    7. Banco deDados de Exemplo • Este é o DER e a estrutura do Banco de Dados que usaremos de exemplo nas próximas aulas para aprendizado: