YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Portuguese, Brazilian subtitles

← PS 08-21 Junções

Get Embed Code
4 Languages

Showing Revision 10 created 09/21/2013 by Alessandro Almeida.

  1. Vamos para um novo tópico
    que esquecemos facilmente,
  2. que é chamado junções.
  3. Isto é um tipo de consulta SQL usado
    quando envolve várias tabelas.
  4. Lembre-se que temos nossa tabela Link.
  5. Estamos trabalhando com isso por todo curso.
  6. Parece algo assim.
  7. Temos as colunas: ID, Votos, ID usuário,
  8. Dados, Títulos, URL.
  9. Vamos criar alguns valores aqui.
  10. Quero falar agora sobre a coluna ID Usuário.
  11. Lembre-se de que mencionei antes
  12. que se tivéssemos uma outra tabela
    chamada Usuários
  13. ou algo desse tipo--
  14. Tem uma coluna para ID e
    outras para Nomes, Senhas e Data -
  15. o ID Usuário nesta tabela Links
  16. refere-se à coluna ID da tabela Usuário.
  17. Isto deve sempre corresponder,
  18. porque você deseja que tudo em
    seu sistema seja consistente.
  19. Para cada ID Usuário específico
    na tabela Links
  20. deve haver um usuário válido
    na tabela Usuário.
  21. Algo que podemos fazer em muitas bases de
    dados SQL é algo chamado junção,
  22. que é uma instrução SQL
    que envolve duas tabelas.
  23. Logo, temos uma simples instrução SQL
    que parece com isso.
  24. Select * from link WHERE User_Id = 22,
  25. onde o User ID é igual a 22.
  26. Isto retornaria todos os links
    submetidos por este usuário,
  27. assumindo que haja mais de um.
  28. E se não soubéssemos o ID do usuário?
  29. E se por outro lado quisermos
    selecionar todos os links
  30. submetidos pelos usuário com o nome Spez
    a partir da tabela Link?
  31. Bem, há algumas maneiras de fazer isso.
  32. Você poderia primeiro procurar
  33. pelo ID de usuário da pessoa chamada Spez,
  34. pegar este ID de usuário, e executar
    a consulta SQL.
  35. Você poderia fazer duas consultas.
    Pareceria com algo assim.
  36. Poderia executar uma consulta para
    conseguir o ID na tabela Usuário
  37. para aquele cujo nome é Spez,
  38. e então usar aquele ID em uma segunda consulta.
  39. Mas há outra maneira de fazer esta consulta.
  40. Eu poderia, em vez de duas consultas,
  41. combinar em uma consulta.
  42. Ao invés de a partir do Link,
    podemos mudar isto para o Link, Usuário -
  43. que examinará as duas tabelas.
  44. E não queremos obter todos os atributos.
  45. Queremos preservar os mesmos
    resultados da consulta,
  46. logo não queremos o Select * from Link, user--
  47. queremos Select link.*,
  48. que retornará apenas
    as colunas da tabela Link.
  49. Depois, queremos modificar a cláusula WHERE
  50. para vincular essas duas tabelas.
  51. WHERE user_id=user.id.
  52. eu poderia ter dito link.user_id
  53. assim incluímos os nomes da tabela
    em todas as nossas propriedades.
  54. Isto tornará as coisas mais claras.
  55. Preciso acrescentar outra cláusula para isso.
  56. O user.name=Spez.
  57. O que isso faz?
  58. Seleciona todas as colunas de link-link.* -
  59. a partir da tabela link e da tabela usuário,
  60. onde user.name=Spez
  61. e link.userid=user.id.
  62. E isto é chamado uma Consulta de Junção.
  63. e seu SQL decidirá
  64. quais dessas tabelas examinará primeiro.
  65. E, neste caso, irá primeiro
    para a tabela Usuário.
  66. Encontrará o nome do usuário Spez e,
    após isso, vai procurar todos os links
  67. cuja propriedade user_id
  68. corresponda com o campo ID
    na tabela Usuário.
  69. Isto é muito útil.
  70. Agora, o motivo de eu ter dito
    que aprenderíamos algo fácil de esquecer
  71. é porque geralmente não usamos junções
  72. quando escrevemos software para a web.
  73. É algo que você verá em quase todo tutorial SQL,
  74. mas por os motivos que serão explicados
    mais tarde neste curso,
  75. junções não funcionam muito bem para os
    tipos de problemas que iremos solucionar
  76. ao escrever algo para a web.
  77. Mas você deve ter conhecimento deles e o que são.
  78. Você pode precisar escrever algo que requeira isso,
  79. mas eles geralmente, bem, como eu disse,
  80. entraremos nisso mais tarde no curso do
    por quê não querermos usar junções.
  81. Vamos seguir para algo novo.