MySQL é um SGBD (Sistema de Gerenciamento de Bancos de Dado...

Próximas questões
Com base no mesmo assunto
Q2447139 Banco de Dados
MySQL é um SGBD (Sistema de Gerenciamento de Bancos de Dados) amplamente utilizado para gerenciar dados em aplicações web e outras aplicações que necessitam de um sistema de gerenciamento de banco de dados relacional.
Em MySQL, o comando para selecionar todos os registros da tabela ‘clientes’ juntamente com os registros correspondentes da tabela ‘pedidos’, incluindo clientes que não possuem pedidos é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - 'SELECT * FROM clientes LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id;'

Explicação:

Esta questão aborda o uso de comandos SQL para realizar consultas em um banco de dados MySQL. Especificamente, a questão requer o conhecimento sobre a operação de JOIN entre tabelas, que é fundamental para manipulação e consulta de dados relacionais.

Para resolver a questão, é importante entender os diferentes tipos de JOINS disponíveis no SQL:

  • INNER JOIN: Retorna apenas as linhas que possuem correspondência em ambas as tabelas.
  • LEFT JOIN (ou LEFT OUTER JOIN): Retorna todas as linhas da tabela à esquerda (clientes) e as correspondências da tabela à direita (pedidos). Se não houver correspondência, os resultados da tabela à direita serão NULL.
  • RIGHT JOIN (ou RIGHT OUTER JOIN): Retorna todas as linhas da tabela à direita (pedidos) e as correspondências da tabela à esquerda (clientes). Se não houver correspondência, os resultados da tabela à esquerda serão NULL.
  • FULL OUTER JOIN: Retorna todas as linhas quando há correspondência em uma das tabelas. Se não houver correspondência, o resultado será NULL em ambas as tabelas.

Agora, vamos analisar cada alternativa:

A - 'SELECT * FROM clientes LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id;'

Esta alternativa é correta. O LEFT JOIN garante que todos os registros da tabela 'clientes' serão retornados, juntamente com os registros correspondentes da tabela 'pedidos'. Se um cliente não tiver pedidos, ainda será listado e os campos da tabela 'pedidos' serão NULL.

B - 'SELECT * FROM clientes RIGHT JOIN pedidos ON clientes.id = pedidos.cliente_id;'

Esta alternativa é incorreta. O RIGHT JOIN retornaria todos os registros da tabela 'pedidos', incluindo os que não têm correpondência na tabela 'clientes'. Esse não é o comportamento desejado pela questão.

C - 'SELECT clientes.*, pedidos.* FROM clientes JOIN pedidos ON clientes.id = pedidos.cliente_id;'

Esta alternativa é incorreta. O uso de JOIN (ou INNER JOIN) retornaria apenas os registros que possuem correspondência em ambas as tabelas (clientes com pedidos), excluindo clientes sem pedidos.

D - 'SELECT * FROM clientes FULL OUTER JOIN pedidos ON clientes.id = pedidos.cliente_id;'

Esta alternativa é incorreta. Embora o FULL OUTER JOIN retorne registros de ambas as tabelas, ele não é suportado nativamente pelo MySQL sem extensões, o que o torna inadequado para a questão em um contexto padrão MySQL.

Espero que essa explicação tenha ajudado a entender melhor o funcionamento dos diferentes tipos de JOINs no SQL, especificamente no MySQL, e como aplicá-los corretamente em diferentes situações. Se tiver mais dúvidas, estou à disposição para ajudar!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo