MySQL é um SGBD (Sistema de Gerenciamento de Bancos de Dado...
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 é:
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