Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2023
- Código
- ce397756
- Banca
- CESPE / CEBRASPE
- Órgão
- DATAPREV
- Ano
- 2023
- Cargo
- Ana TI ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. O comando UNION combina as linhas de duas consultas, mas exige que as colunas correspondentes tenham a mesma quantidade, a mesma ordem e tipos de dados compatíveis — não é possível unir tabelas com colunas de tipos e tamanhos diferentes. A afirmação do enunciado está incorreta.
O UNION é um operador de conjunto da SQL que combina os resultados de duas ou mais consultas em um único resultado. Ele é frequentemente comparado à operação de união da álgebra relacional. A principal característica do UNION é que ele elimina linhas duplicadas por padrão, funcionando como se aplicasse um SELECT DISTINCT ao resultado final. Já o UNION ALL preserva todas as linhas, inclusive as duplicadas.
Para que o UNION funcione, as consultas envolvidas devem obedecer a regras de compatibilidade. As colunas não precisam ter os mesmos nomes, mas precisam aparecer na mesma quantidade, na mesma ordem e ser do mesmo tipo de dados (ou de tipos compatíveis). Por exemplo, é possível unir uma consulta que retorna uma coluna de caracteres chamada "nome_cliente" com outra que retorna uma coluna de caracteres chamada "nome_fornecedor", pois ambas são do mesmo tipo. Porém, se a primeira coluna de uma consulta for do tipo data e a primeira coluna da outra for do tipo textual, a união não será possível.
A pegadinha da questão está em afirmar que o UNION pode combinar linhas de tabelas com colunas de tipos e tamanhos diferentes. Isso é falso, pois a compatibilidade de tipos é um requisito fundamental. O tamanho da coluna, embora não precise ser idêntico, deve ser compatível para que os dados possam ser convertidos implicitamente. Por exemplo, unir uma coluna VARCHAR(10) com uma coluna VARCHAR(20) pode funcionar, mas unir uma coluna numérica com uma coluna de texto não.
Guarde a regra: para usar UNION (ou UNION ALL, INTERSECT, EXCEPT), as consultas devem ter o mesmo número de colunas, na mesma ordem e com tipos de dados compatíveis. É exatamente essa regra que a afirmação do enunciado viola.
A afirmação está errada porque o UNION não pode combinar linhas de tabelas com colunas de tipos e tamanhos diferentes. A regra exige que as colunas correspondentes tenham a mesma quantidade, a mesma ordem e tipos de dados compatíveis. O tamanho da coluna não precisa ser exatamente igual, mas os tipos devem ser compatíveis para que a união seja possível. A banca explora a confusão entre "não precisam ser exatamente as mesmas" (o que é verdade, pois os nomes podem diferir) e "podem ser de tipos e tamanhos diferentes" (o que é falso, pois os tipos devem ser compatíveis).
Para questões sobre UNION, lembre-se da regra dos três "mesmos": mesma quantidade de colunas, mesma ordem e mesmos tipos de dados. Os nomes das colunas podem ser diferentes, mas os tipos precisam ser compatíveis. Essa é a pegadinha clássica da banca.
Gabarito: Errado.
Link permanente: /questoes/ce397756