← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

Considere um banco de dados que contém três tabelas, T1, T2 e T3, criadas com os comandos que seguem. CREATE TABLE T1 (A int) CREATE TABLE T2 (A int UNIQUE) CREATE TABLE T3 (A int) Dado que as três tabelas contêm 50, 100 e 200 linhas, respectivamente, assinale o mínimo possível de linhas que poderiam ser produzidas pelo comando exibido abaixo. SELECT * FROM T1 UNION SELECT * FROM T1 UNION SELECT * FROM T1

Gabarito: B

Aqui o ponto central é lembrar a diferença entre UNION e UNION ALL. O UNION faz a união dos resultados e ainda elimina duplicidades, ou seja, ele devolve apenas linhas distintas. Então, quando voce escreve `SELECT * FROM T1 UNION SELECT * FROM T1 UNION SELECT * FROM T1`, o banco junta os três resultados, mas no fim remove tudo que estiver repetido. Como a tabela T1 tem apenas uma coluna, A, o menor número possível de linhas produzidas depende de quantos valores distintos existem nela. Mesmo tendo 50 linhas, nada impede que as 50 tenham o mesmo valor em A. Nesse cenário, o resultado do UNION terá só 1 linha distinta. Por isso o gabarito B está correto: o mínimo possível é 1. A questão não pede o que acontece em uma tabela qualquer, mas sim o menor resultado possível dentro das regras do SQL. Aqui, a palavra mágica é justamente "UNION", que não deixa passar duplicatas como se nada tivesse acontecido.

Continue treinando

Questões relacionadas