← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

Analise o comando SQL a seguir. select n1.numero * 10 + n2.numero x FROM NUMBERS n1, NUMBERS n2 where n2.numero = 9 - n1.numero + 1 order by n1.numero, n2.numero Tomando por base a tabela NUMBERS, o resultado produzido pelo comando acima contém 9 linhas, ignorada a linha de títulos. O número que aparece na quarta dessas nove linhas é o

Gabarito: B

A questão mistura duas ideias básicas de SQL: produto cartesiano entre tabelas e filtro no WHERE. Como a consulta usa "FROM NUMBERS n1, NUMBERS n2" sem JOIN explícito, ela gera todas as combinações possíveis e depois aplica a condição "n2.numero = 9 - n1.numero + 1", que na prática amarra cada valor de n1 a um único valor de n2. Se a tabela NUMBERS tem os números de 1 a 9, surgem exatamente 9 pares: (1,9), (2,8), (3,7) e assim por diante, até (9,1). Agora vem a parte do "x": o comando calcula "n1.numero * 10 + n2.numero", ou seja, o número formado pelos dígitos de n1 e n2. Assim, as linhas ficam 19, 28, 37, 46, 55, 64, 73, 82 e 91, já em ordem por "n1.numero, n2.numero". A quarta linha dessa sequência é 46. Por isso o gabarito é a alternativa B. Em prova, esse tipo de questão costuma testar se você reconhece que a vírgula no FROM funciona como produto cartesiano e que o WHERE faz o recorte depois. É a velha matemática do SQL: primeiro mistura, depois organiza a bagunça.

Continue treinando

Questões relacionadas