SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Bases de dados: SQL Joins, especialização/
generalização
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 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ão
suportados 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
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
INNER JOIN (standard/exclusivo/natural)

Num join natural, um INNER JOIN, os dados resultantes de uma query são
apenas 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
INNER JOIN

Exemplo: 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;
INNER JOIN

Exemplo: 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;
OUTER JOIN (inclusivos)

Os OUTER JOINS permitem obter os registos relacionados e os não
relacionados. Podem ser do tipo LEFT ou RIGHT, de acordo com o sentido
do 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)
LEFT OUTER JOIN

Exemplo: Seleccionar todos os amigos com empréstimos e todos os
amigos sem empréstimos




  • SELECT amigos.nome, emprestimos.id_emprestimo
    FROM amigos
    LEFT JOIN emprestimos
    ON amigos.id_amigo = emprestimos.id_amigo;
JOINS: exemplo 2

Considere-se um stand automóvel onde cada vendedor é responsável pela
venda de vários automóveis. No entanto, num dado momento, poderão
existir: vendedores sem automóveis atribuídos e automóveis sem
vendedor atribuído.
JOINS: exemplo 2

Selecionar 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
JOINS: exemplo 2

Selecionar 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
JOINS: exemplo 2

Na tabela automóveis foram adicionados 2 novos registos (2 novos
automóveis) aos quais ainda não foi atribuído um vendedor.
Selecionar todos os vendedores com carros atribuídos e os carros sem
vendedor atribuído


  • SELECT vendedores.Nome, automoveis.Marca, automoveis.Modelo
    FROM vendedores
    RIGHT JOIN automoveis
    ON vendedores.idVENDEDORES =
    automoveis.VENDEDORES_idVENDEDORES
JOINS: FULL JOIN no MySQL

Selecionar todos os vendedores com carros atribuídos e sem carros
atribuí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
JOINS: FULL JOIN no MySQL

Selecionar todos os vendedores com carros atribuídos e sem carros
atribuídos e todos os carros atribuídos e carros sem vendedor atribuído
Especialização/Generalização

Numa biblioteca pretende-se catalogar os vários tipo de publicações
(livros/monografias) e (revistas/periódicos) com um sistema de
numeração único
                        Tabela de generalização




                       Tabelas de especialização
Especialização/Generalização

As publicações são uma generalização dos conceitos monografias e
periódicos
  • A tabela PUBLICACOES armazena as características comuns a todas as
    publicações

As monografias e os periódicos são especializações do conceito
publicações
  • As tabelas MONOGRAFIAS e PERIODICOS armazenam as características
    específicas (especiais) de cada tipo de publicação

As monografias e periódicos “herdam” todas as características comuns
definidas em publicações

Weitere ähnliche Inhalte

Andere mochten auch (8)

Sql junções
Sql junçõesSql junções
Sql junções
 
HD-Disco Rigído
HD-Disco RigídoHD-Disco Rigído
HD-Disco Rigído
 
12 SQL - Junções / Join
12 SQL - Junções / Join12 SQL - Junções / Join
12 SQL - Junções / Join
 
Aulas 10 e 11 - Álgebra de Boole
Aulas 10 e 11 - Álgebra de BooleAulas 10 e 11 - Álgebra de Boole
Aulas 10 e 11 - Álgebra de Boole
 
Unidades
UnidadesUnidades
Unidades
 
Arquitetura de-computadores
Arquitetura de-computadoresArquitetura de-computadores
Arquitetura de-computadores
 
Sistemas de numeração
Sistemas de numeraçãoSistemas de numeração
Sistemas de numeração
 
Introdução à Informática (Módulo 1)
Introdução à Informática (Módulo 1)Introdução à Informática (Módulo 1)
Introdução à Informática (Módulo 1)
 

Mehr von Carlos Santos

AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
Carlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
Carlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
Carlos Santos
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
Carlos Santos
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
Carlos Santos
 

Mehr von Carlos Santos (20)

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantes
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicial
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho prático
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning Environment
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus project
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 

Kürzlich hochgeladen

Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
andrenespoli3
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
FabianeMartins35
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
NarlaAquino
 

Kürzlich hochgeladen (20)

Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 

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

  • 1. Bases de dados: SQL Joins, especialização/ generalização Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 07, 07-03-2013
  • 2. E como obter dados resultantes de várias tabelas? Os processos de combinar dados de várias tabelas numa query são suportados 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. 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. INNER JOIN (standard/exclusivo/natural) Num join natural, um INNER JOIN, os dados resultantes de uma query são apenas 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. INNER JOIN Exemplo: 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. INNER JOIN Exemplo: 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. OUTER JOIN (inclusivos) Os OUTER JOINS permitem obter os registos relacionados e os não relacionados. Podem ser do tipo LEFT ou RIGHT, de acordo com o sentido do 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. LEFT OUTER JOIN Exemplo: Seleccionar todos os amigos com empréstimos e todos os amigos sem empréstimos • SELECT amigos.nome, emprestimos.id_emprestimo FROM amigos LEFT JOIN emprestimos ON amigos.id_amigo = emprestimos.id_amigo;
  • 9. JOINS: exemplo 2 Considere-se um stand automóvel onde cada vendedor é responsável pela venda de vários automóveis. No entanto, num dado momento, poderão existir: vendedores sem automóveis atribuídos e automóveis sem vendedor atribuído.
  • 10. JOINS: exemplo 2 Selecionar 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. JOINS: exemplo 2 Selecionar 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. JOINS: exemplo 2 Na tabela automóveis foram adicionados 2 novos registos (2 novos automóveis) aos quais ainda não foi atribuído um vendedor. Selecionar todos os vendedores com carros atribuídos e os carros sem vendedor atribuído • SELECT vendedores.Nome, automoveis.Marca, automoveis.Modelo FROM vendedores RIGHT JOIN automoveis ON vendedores.idVENDEDORES = automoveis.VENDEDORES_idVENDEDORES
  • 13. JOINS: FULL JOIN no MySQL Selecionar todos os vendedores com carros atribuídos e sem carros atribuí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. JOINS: FULL JOIN no MySQL Selecionar todos os vendedores com carros atribuídos e sem carros atribuídos e todos os carros atribuídos e carros sem vendedor atribuído
  • 15. Especialização/Generalização Numa biblioteca pretende-se catalogar os vários tipo de publicações (livros/monografias) e (revistas/periódicos) com um sistema de numeração único Tabela de generalização Tabelas de especialização
  • 16. Especialização/Generalização As publicações são uma generalização dos conceitos monografias e periódicos • A tabela PUBLICACOES armazena as características comuns a todas as publicações As monografias e os periódicos são especializações do conceito publicações • As tabelas MONOGRAFIAS e PERIODICOS armazenam as características específicas (especiais) de cada tipo de publicação As monografias e periódicos “herdam” todas as características comuns definidas em publicações