O comando SELECT (JOIN)

3.972 visualizações

Publicada em

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

O comando SELECT (JOIN)

  1. 1. JOIN MySQL O comando SELECT Escola Secundária D. Afonso Sanches Vila do Conde Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  2. 2. Índice: O que é o “JOIN”? Ligação entre tabelas: chaves estrangeiras e chaves primárias Sintaxe geral do comando SELECT recorrendo ao JOIN Produto cartesiano de tabelas INNER JOIN OUTER JOIN UNION SELF JOIN INTERSECT MINUS Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  3. 3. O que é o “JOIN”? O Join permite obter informação a partir de várias tabelas, recorrendo apenas a um único comando SELECT. Note que: o Modelo Relacional estabelece claramente as regras para a divisão da informação entre tabelas, de forma a evitar a redundância na informação; para interligar as várias tabelas são utilizadas as chaves primárias de cada uma delas; ● as chaves primárias de uma tabela são utilizadas nas outras tabelas, na qualidade de chaves estrangeira, permitindo desta forma a sua interligação. ● ● Pessoa Localidade Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  4. 4. Chave primária A chave primária (Primary Key)é, no contexto das bases de dados relacionais, o conjunto de um ou mais campos, cujos valores nunca se repetem e que podem ser usadas como um índice para os demais campos da tabela. Quando um campo é chave primária, não pode haver valores nulos nem repetições do seu conteúdo. Exemplo: Pessoa (bi, nome, ...) bi nome ... 123 Ana ... 543 Maria ... 342 Carla ... 654 Joana ... bi nome ... 123 Ana ... 543 Maria ... 342 Carla ... 123 Joana ... Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  5. 5. Chave estrangeira Uma chave estrangeira (foreign key) é um campo que aponta para a chave primária de outra tabela, o que torna possível estabelecer o relacionamento entre ambas. O recurso às chaves estrangeiras possibilita garantir a integridade referencial dos dados "dispersos" pelas várias tabelas de acordo com as regras definidas para o modelo relacional. Exemplo: Pessoa (bi, nome, cpostal) Localidade( cp, nomelocalidade) Pessoa bi nome cpostal 123 Ana 1000 543 Maria 4000 342 Carla 4480 654 Joana Chave estrangeira 4480 Localidade cp 1000 Lisboa 4000 Chave primária nomelocalidade Porto 4480 Vila do Conde Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  6. 6. Sintaxe geral do comando SELECT recorrendo ao JOIN A junção de tabelas faz-se indicando o nome das mesmas na cláusula FROM: SELECT campo1, campo2, campo3, ..., campon, * FROM tabela1, tabela2, … tabelak Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  7. 7. Produto Cartesiano (Cross- JOIN) Na Matemática, dados dois conjuntos X e Y, o produto cartesiano (ou produto directo) dos dois conjuntos (escrito como X × Y) é o conjunto de todos os pares ordenados cujo primeiro elemento pertence a X e o segundo, a Y. No nosso contexto, o produto cartesiano das duas tabelas Pessoa e Localidade é: Pessoa Pessoa x Localidade #4 Localidade #3 Equi-Join # 4 x 3 = 12 Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  8. 8. Natural Join Como vimos no diapositivo anterior, quando a ligação entre duas tabelas é realizada através da igualdade entre duas colunas, este tipo particular de join designa-se equi-join. Um natural-join existe quando todas as colunas envolvidas na ligação entre as tabelas são apresentadas sem repetição de colunas. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  9. 9. Inner Join O Inner Join corresponde a uma outra designação para o join habitual em que se juntam duas ou mais tabelas, ligando-as através da chave primária de uma e da chave estrangeira de outra. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  10. 10. Inner Join Outra forma de obter exactamente o mesmo resultado consiste em recorrer explicitamente à cláusula Inner Join, como é demonstrado a seguir: Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  11. 11. Outer Join (left join e right join) O papel do Outer Join é permitir que a totalidade das linhas de uma tabela seja obtida, ainda que não exista o correspondente valor na outra tabela a que está ligada pela junção. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  12. 12. Union Uma união não é propriamente uma ligação entre tabelas. A UNION permite juntar o conteúdo de dois ou mais comandos SELECT. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  13. 13. Um exemplo (pimba) de utilização do inner join A base de dados tem o seguinte modelo. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  14. 14. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  15. 15. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  16. 16. Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  17. 17. Dúvidas? Escola Secundária D. Afonso Sanches Vila do Conde Graciano Torrão 17 ( graciano.torrao@gmail.com ) ( http://gracianotorrao.com ) Programação e Sistemas de Informação

×