Bases de dados: SQL Joins, especialização/generalizaçãoCarlos SantosLabMM 4 - NTC - DeCA - UAAula 07, 07-03-2013
E como obter dados resultantes de várias tabelas?Os processos de combinar dados de várias tabelas numa query sãosuportados...
Joins                       amigos                                                                         empres&mos id_a...
INNER JOIN (standard/exclusivo/natural)Num join natural, um INNER JOIN, os dados resultantes de uma query sãoapenas aquele...
INNER JOINExemplo: Selecionar todos os Amigos com Empréstimos  • SELECT MeusCDs.amigos.nome, MeusCDs.emprestimos.id_empres...
INNER JOINExemplo: Selecionar todos os Amigos com Empréstimos                                                      ATENÇÃO...
OUTER JOIN (inclusivos)Os OUTER JOINS permitem obter os registos relacionados e os nãorelacionados. Podem ser do tipo LEFT...
LEFT OUTER JOINExemplo: Seleccionar todos os amigos com empréstimos e todos osamigos sem empréstimos  • SELECT amigos.nome...
JOINS: exemplo 2Considere-se um stand automóvel onde cada vendedor é responsável pelavenda de vários automóveis. No entant...
JOINS: exemplo 2Selecionar todos os vendedores com carros atribuídos  • SELECT vendedores.Nome, automoveis.Marca, automove...
JOINS: exemplo 2Selecionar todos os vendedores com e sem carros atribuídos  • SELECT vendedores.Nome, automoveis.Marca, au...
JOINS: exemplo 2Na tabela automóveis foram adicionados 2 novos registos (2 novosautomóveis) aos quais ainda não foi atribu...
JOINS: FULL JOIN no MySQLSelecionar todos os vendedores com carros atribuídos e sem carrosatribuídos e todos os carros atr...
JOINS: FULL JOIN no MySQLSelecionar todos os vendedores com carros atribuídos e sem carrosatribuídos e todos os carros atr...
Especialização/GeneralizaçãoNuma biblioteca pretende-se catalogar os vários tipo de publicações(livros/monografias) e (revi...
Especialização/GeneralizaçãoAs publicações são uma generalização dos conceitos monografias eperiódicos  • A tabela PUBLICAC...
Próximos SlideShares
Carregando em…5
×

LabMM4 (T07 - 12/13) - SQL Joins, Especialização/Generalização

1.714 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.714
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
72
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

LabMM4 (T07 - 12/13) - SQL Joins, Especialização/Generalização

  1. 1. Bases de dados: SQL Joins, especialização/generalizaçãoCarlos SantosLabMM 4 - NTC - DeCA - UAAula 07, 07-03-2013
  2. 2. E como obter dados resultantes de várias tabelas?Os processos de combinar dados de várias tabelas numa query sãosuportados pelas relações (JOINS) existentes entre elas. • exemplo: “listar todos os empréstimos indicando o nome do amigo” amigos empres&mos id_amigo nome telefone id_empres&mo data_empres&mo data_devolucao id_amigo 1 José  Mourinho 916545955 1 2010-­‐02-­‐23 2010-­‐02-­‐25 1 2 Jorge  Jesus 234545955 2 2010-­‐04-­‐11 2010-­‐04-­‐18 3 Domingos  Paciência 234897897 3 2010-­‐03-­‐13 2010-­‐03-­‐19 1 4 Vítor  Pereira 923435566 4 2010-­‐05-­‐21 2010-­‐05-­‐23 4 5 André  Villas-­‐Boas 934975766 5 2010-­‐06-­‐25 2010-­‐06-­‐29
  3. 3. Joins amigos empres&mos id_amigo nome telefone id_empres&mo data_empres&mo data_devolucao id_amigo 1 José  Mourinho 916545955 1 2010-­‐02-­‐23 2010-­‐02-­‐25 1 2 Jorge  Jesus 234545955 2 2010-­‐04-­‐11 2010-­‐04-­‐18 3 Domingos  Paciência 234897897 3 2010-­‐03-­‐13 2010-­‐03-­‐19 1 4 Vítor  Pereira 923435566 4 2010-­‐05-­‐21 2010-­‐05-­‐23 4 5 André  Villas-­‐Boas 934975766 5 2010-­‐06-­‐25 2010-­‐06-­‐29 amigos  sem   amigos  com emprés&mos   emprés&mos emprés&mos sem  amigos registos registos não  relacionados registos não  relacionados relacionados
  4. 4. INNER JOIN (standard/exclusivo/natural)Num join natural, um INNER JOIN, os dados resultantes de uma query sãoapenas aqueles que podem ser relacionados entre as duas tabelas. • SELECT nome_coluna(s) FROM nome_tabela1 INNER JOIN nome_tabela2 ON nome_tabela1.nome_coluna=nome_tabela2.nome_coluna ...;A ter em atenção: • os campos mencionados na condição do join são a PK e FK que estabelecem a relação entre as duas tabelas • os dados da tabela “nome_tabela1” que não estão relacionados com dados da tabela “nome_tabela2” não são retornados na query • o inverso da última afirmação também é verdade
  5. 5. INNER JOINExemplo: Selecionar todos os Amigos com Empréstimos • SELECT MeusCDs.amigos.nome, MeusCDs.emprestimos.id_emprestimo FROM MeusCDs.amigos INNER JOIN MeusCDs.emprestimos ON MeusCDs.amigos.id_amigo = MeusCDs.emprestimos.ref_id_amigos; • SELECT amigos.nome, emprestimos.id_emprestimo FROM amigos INNER JOIN emprestimos ON amigos.id_amigo = emprestimos.ref_id_amigos;
  6. 6. INNER JOINExemplo: Selecionar todos os Amigos com Empréstimos ATENÇÃO: as chaves têm nomes diferentes do modelo do slide anterior! • SELECT amigos.nome, emprestimos.id_emprestimo FROM amigos INNER JOIN emprestimos ON amigos.id_amigo = emprestimos.id_amigo;
  7. 7. OUTER JOIN (inclusivos)Os OUTER JOINS permitem obter os registos relacionados e os nãorelacionados. Podem ser do tipo LEFT ou RIGHT, de acordo com o sentidodo JOIN. • LEFT JOIN Mostra todos os registos relacionados (Amigos com Empréstimos) + Registos não relacionados da tabela esquerda (tabela de partida): amigos (Amigos sem Empréstimos) • RIGHT JOIN Mostra todos os registos relacionados (Amigos com Empréstimos) + Registos não relacionados da tabela direita (tabela de chegada): emprestimos (Empréstimos sem Amigos)
  8. 8. LEFT OUTER JOINExemplo: Seleccionar todos os amigos com empréstimos e todos osamigos sem empréstimos • SELECT amigos.nome, emprestimos.id_emprestimo FROM amigos LEFT JOIN emprestimos ON amigos.id_amigo = emprestimos.id_amigo;
  9. 9. JOINS: exemplo 2Considere-se um stand automóvel onde cada vendedor é responsável pelavenda de vários automóveis. No entanto, num dado momento, poderãoexistir: vendedores sem automóveis atribuídos e automóveis semvendedor atribuído.
  10. 10. JOINS: exemplo 2Selecionar todos os vendedores com carros atribuídos • SELECT vendedores.Nome, automoveis.Marca, automoveis.Modelo FROM vendedores INNER JOIN automoveis ON vendedores.idVENDEDORES = automoveis.VENDEDORES_idVENDEDORES
  11. 11. JOINS: exemplo 2Selecionar todos os vendedores com e sem carros atribuídos • SELECT vendedores.Nome, automoveis.Marca, automoveis.Modelo FROM vendedores LEFT JOIN automoveis ON vendedores.idVENDEDORES = automoveis.VENDEDORES_idVENDEDORES
  12. 12. JOINS: exemplo 2Na tabela automóveis foram adicionados 2 novos registos (2 novosautomóveis) aos quais ainda não foi atribuído um vendedor.Selecionar todos os vendedores com carros atribuídos e os carros semvendedor atribuído • SELECT vendedores.Nome, automoveis.Marca, automoveis.Modelo FROM vendedores RIGHT JOIN automoveis ON vendedores.idVENDEDORES = automoveis.VENDEDORES_idVENDEDORES
  13. 13. JOINS: FULL JOIN no MySQLSelecionar todos os vendedores com carros atribuídos e sem carrosatribuídos e todos os carros atribuídos e carros sem vendedor atribuído • SELECT vendedores.Nome, automoveis.Marca, automoveis.Modelo FROM vendedores LEFT JOIN automoveis ON vendedores.idVENDEDORES = automoveis.VENDEDORES_idVENDEDORES UNION SELECT vendedores.Nome, automoveis.Marca, automoveis.Modelo FROM vendedores RIGHT JOIN automoveis ON vendedores.idVENDEDORES = automoveis.VENDEDORES_idVENDEDORES
  14. 14. JOINS: FULL JOIN no MySQLSelecionar todos os vendedores com carros atribuídos e sem carrosatribuídos e todos os carros atribuídos e carros sem vendedor atribuído
  15. 15. Especialização/GeneralizaçãoNuma biblioteca pretende-se catalogar os vários tipo de publicações(livros/monografias) e (revistas/periódicos) com um sistema denumeração único Tabela de generalização Tabelas de especialização
  16. 16. Especialização/GeneralizaçãoAs publicações são uma generalização dos conceitos monografias eperiódicos • A tabela PUBLICACOES armazena as características comuns a todas as publicaçõesAs monografias e os periódicos são especializações do conceitopublicações • As tabelas MONOGRAFIAS e PERIODICOS armazenam as características específicas (especiais) de cada tipo de publicaçãoAs monografias e periódicos “herdam” todas as características comunsdefinidas em publicações

×