9

Click here to load reader

Banco de Dados II - Aula1

Embed Size (px)

DESCRIPTION

Disciplina Banco de Dados II - PRONATEC

Citation preview

Page 1: Banco de Dados II - Aula1

Aula 001

Banco de Dados II

PRONATEC

Programa Nacional de Acesso ao

Ensino Técnico e Emprego

Page 2: Banco de Dados II - Aula1

PRONATEC

Programa Nacional de Acesso

ao Ensino Técnico e Emprego

Page 3: Banco de Dados II - Aula1

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-C1 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

Page 4: Banco de Dados II - Aula1

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

Page 5: Banco de Dados II - Aula1

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.

Page 6: Banco de Dados II - Aula1

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

Page 7: Banco de Dados II - Aula1

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.

Page 8: Banco de Dados II - Aula1

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

Page 9: Banco de Dados II - Aula1

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: