1 / 27

Bancos de Dados

Bancos de Dados. SQL 4 Ceça. Recuperando Dados de Várias Tabelas. Um banco de dados relacional é composto de várias tabelas Às vezes é necessário acessar simultaneamente tabelas relacionadas Conceito de Junção

esben
Download Presentation

Bancos de Dados

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bancos de Dados SQL 4 Ceça

  2. Recuperando Dados de Várias Tabelas • Um banco de dados relacional é composto de várias tabelas • Às vezes é necessário acessar simultaneamente tabelas relacionadas • Conceito de Junção • Em alguns casos, necessita-se realizar uma junção entre tabelas, e, extrair dessa junção as informações necessárias para responder à consulta originalmente formulada Ceça Moraes

  3. Qualificadores de Nome • Um qualificador de nome é a composição formada pelo nome da tabela seguido de um ponto e o nome da coluna da tabela • PRODUTO.descrição • O qualificador da coluna descrição na tabela PRODUTO • Os qualificadores de nomes são usados em uma consulta de junção (join) entre tabelas • Relacionamentos entre tabelas podem ser feitos por chaves estrangeiras e isso implica na possibilidade de existência de colunas com o mesmo nome em tabelas diferentes Ceça Moraes

  4. Sintaxe do JOIN • Sintaxe ANSI SQL • SELECT <tabela.coluna, tabela.coluna,...> • FROM tabela1 <tipo de join> tabela2 • ON <condição de junção> • WHERE <demais condições> • Sintaxe Microsoft • SELECT <tabela.coluna, tabela.coluna,...> • FROM tabela1, tabela2, .... • WHERE <condição de junção> • AND <demais condições>

  5. Tipos de JOIN • INNER JOIN • Serão incluídas somente as linhas que satisfazem a condição do JOIN • CROSS JOIN • Incluímos cada uma das combinações de todas as linhas entre tabelas • OUTER JOIN • Incluímos as linhas que satisfazem à condição do JOIN e as linhas restantes de uma das tabelas do JOIN (que satisfazem ou não à condição) Ceça Moraes

  6. INNER JOIN • Correspondências entre tabelas relacionadas Tabela Func Tabela Lotação Func.Matr = Lotacao.Matr

  7. INNER JOIN • Sintaxe ANSI • Ver o nome e código do cliente, o código do pedido e prazo de entega para todos os clientes que fizeram pedidos SELECT Cliente.nomeCliente, Pedido.codigoCliente, Pedido.numPedido, prazoEntrega FROM Cliente INNER JOIN Pedido ON Cliente.codigoCliente = Pedido.codigoCliente

  8. INNER JOIN • Sintaxe Microsoft • Ver o nome e código do cliente, o código do pedido e prazo de entega para todos os clientes que fizeram pedidos SELECT Cliente.nomeCliente, Pedido.codigoCliente, Pedido.numPedido, prazoEntrega FROM Cliente, Pedido WHERE Cliente.codigoCliente = Pedido.codigoCliente

  9. INNER JOINResultado Ceça Moraes

  10. INNER JOINOrdenando SELECT Cliente.nomeCliente, Pedido.codigoCliente, Pedido.numPedido, prazoEntrega FROM Cliente INNER JOIN Pedido ON Cliente.codigoCliente = Pedido.codigoCliente ORDER BY 1 OU SELECT Cliente.nomeCliente, Pedido.codigoCliente, Pedido.numPedido, prazoEntrega FROM Cliente, Pedido WHERE Cliente.codigoCliente = Pedido.codigoCliente ORDER BY 1

  11. INNER JOINOrdenando Ceça Moraes

  12. CROSS JOINProduto Cartesiano • Em um Cross Join entre duas tabelas, o resultado traz uma composição de cada linha das tabelas originais Tabela Func Tabela Lotação Ceça Moraes

  13. CROSS JOINProduto Cartesiano • Juntar Clientes com Pedidos SELECT Cliente.codigoCliente, nomeCliente, Pedido.codigoCliente, numPedido FROM Cliente CROSS JOIN Pedido • Produto Cartesiano • A junção combina cada linha da tabela mais à esquerda com cada linha da tabela à direita da cláusula CROSS JOIN (Não tem condição de junção) • no MS Access SELECT Cliente.codigoCliente, nomeCliente, Pedido.codigoCliente, numPedido FROM Cliente, Pedido

  14. Produto Cartesiano Ceça Moraes

  15. Produto Cartesiano Ceça Moraes

  16. OUTER JOIN • Queremos saber quais linhas estão relacionadas com a outra tabela e quais não estão • Localizar não-correspondências • É útil quando queremos verificar se existem membros órfãos em tabelas, ou seja, chave primária e chave estrangeira sem sincronia • Exemplo • Verificar quais clientes têm pedidos e quais não têm Ceça Moraes

  17. Tipos de OUTER JOIN • Só pode ser realizado entre duas tabelas • LEFT OUTER JOIN • São incluídas todas as linhas da primeira tabela (esquerda) com ou sem correspondentes na segunda (direita) • RIGHT OUTER JOIN • São incluídas todas as linhas da segunda tabela (direita) com ou sem correspondentes na primeira (esquerda). Ceça Moraes

  18. LEFT OUTER JOINExemplo • Quais são os clientes que têm pedidos e que não têm pedidos? SELECT Cliente.codigoCliente, nomeCliente, Pedido.codigoCliente, numPedido FROM Cliente LEFT OUTER JOIN Pedido ON Cliente.codigoCliente = Pedido.codigoCliente Ceça Moraes

  19. LEFT OUTER JOINExemplo Ceça Moraes

  20. LEFT OUTER JOINResultado Ceça Moraes

  21. RIGHT OUTER JOINExemplo • Quais são os pedidos que têm clientes e os que não têm clientes? SELECT Cliente.codigoCliente, Cliente.nomeCliente, Pedido.codigoCliente, Pedido.numPedido FROM Cliente RIGHT OUTER JOIN Pedido ON Cliente.codigoCliente=Pedido.codigoCliente; Ceça Moraes

  22. RIGHT OUTER JOINExemplo Ceça Moraes

  23. RIGHT OUTER JOINExemplo Ceça Moraes

  24. LEFT JOIN x RIGHT JOIN • Use uma operação LEFT JOIN para criar uma associação externa à esquerda. • Associações externas à esquerda incluem todos os registros da primeira (esquerda) de duas tabelas, mesmo quando não há valores coincidentes na segunda tabela (direita). • Use uma operação RIGHT JOIN para criar uma associação externa à direita. • Associações externas à direita incluem todos os registros da segunda (direita) de duas tabelas, mesmo quando não há valores coincidentes na primeira tabela (esquerda). Ceça Moraes

  25. JOIN com WHERE • Listar nome, UF, código do cliente e número do pedido e prazo de entrega para os clientes que têm pedidos com prazo de entrega superior a 15 dias e pertencem aos estados SP ou RJ? SELECT Cliente.nomeCliente, Cliente.UF, Pedido.codigoCliente, Pedido.numPedido, Pedido.prazoEntrega FROM Cliente, Pedido WHERE Cliente.codigoCliente = Pedido.codigoCliente AND Cliente.UF IN("SP", "RJ") AND Pedido.prazoEntrega> 15;

  26. JOIN com Operadores Resultado Ceça Moraes

  27. Exercícios • Listar o nome, código do vendedor e o código do pedido para todos os vendedores que fizeram pedidos. • Quais são os vendedores que efetuaram pedidos e os que não efetuaram pedidos? • Que pedidos foram feitos por vendedores e quais os que não foram? Ordenar o resultado por nome do vendedor. • Quais vendedores pertencente às faixas salariais “B”e “C” têm pedidos com prazo de entrega superior a 20 dias?

More Related