Pular para o conteúdo principal

Questão de Banco de Dados — SQL Server — FUNDATEC 2023

Banco de DadosSQL Server
Código
qq890554
Banca
FUNDATEC
Órgão
CIGA-SC
Ano
2023
Nível
Médio
Cargo
Proramador
Observe a consulta abaixo:select sum(c) from base where a=1 and b>1;Qual comando deve ser executado para que o resultado da consulta acima seja igual a 7?
  1. Ainsert into base (a,b,c) values (3,2,1);
  2. Binsert into base (a,b,c) values (1,2,3);
  3. Cupdate base set a=1 where c>=2;
  4. Dupdate base set b=2 where c=2;
  5. Edelete from base where c=2;
Revelar gabarito e comentário

GabaritoD — update base set b=2 where c=2;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Banco de Dados: Comandos DML e Agregação

Gabarito: letra D. A consulta select sum(c) from base where a=1 and b>1 atualmente retorna 5 (linhas (1,2,2) e (1,2,3)). Para que o resultado seja 7, é necessário que a soma de c seja incrementada em 2. O comando que produz esse efeito é o update base set b=2 where c=2 (alternativa D), pois altera a linha (1,1,2) para (1,2,2), adicionando seu c (2) ao conjunto filtrado, resultando em 2+2+3=7.

  1. 1Soma atual5
  2. 2Linha (1,1,2) vira (1,2,2)+2
  3. 3Nova soma7
LEVEL · soulevel.com.br

Análise das alternativas:

Primeiro, identifiquemos as linhas iniciais da tabela base:

a

b

c

1

1

2

1

2

2

1

2

3

2

2

2

5

2

5

A consulta original seleciona linhas com a=1 e b>1, ou seja, as duas linhas (1,2,2) e (1,2,3). A soma de c é 5. Queremos que a soma se torne 7.

Alternativa A — ❌ Incorreta

insert into base (a,b,c) values (3,2,1); insere uma linha com a=3, que não atende à condição a=1, portanto não altera o resultado da soma (continua 5).

Alternativa B — ❌ Incorreta

insert into base (a,b,c) values (1,2,3); insere mais uma linha (1,2,3). Essa linha é incluída no filtro, adicionando c=3 à soma, que passa a 5+3=8. Não atinge 7.

Alternativa C — ❌ Incorreta

update base set a=1 where c>=2; altera todas as linhas com c≥2 para a=1. Após o comando, as linhas (2,2,2) e (5,2,5) também passam a ter a=1. Ao aplicar o filtro a=1 e b>1, as linhas incluídas são (1,2,2), (1,2,3), (2,2,2) e (5,2,5). A soma de c é 2+3+2+5=12, muito acima de 7.

Alternativa D — ✅ Correta ⟵ GABARITO

update base set b=2 where c=2; altera todas as linhas com c=2 para b=2. As linhas afetadas são (1,1,2), (1,2,2) e (2,2,2). A linha (1,1,2) passa a ser (1,2,2). Agora, as linhas com a=1 e b>1 são:

  • (1,2,2) – original e a que foi alterada (são duas linhas, pois duas tinham (1,2,2) após a repetição? Na verdade, após o update, a tabela fica:

    (1,2,2) – a linha que era (1,1,2) agora é (1,2,2)

    (1,2,2) – a linha original (1,2,2) permanece

    (1,2,3)

    (2,2,2)

    (5,2,5)

Assim, há duas linhas (1,2,2) e uma (1,2,3). A soma de c é 2+2+3=7.

Alternativa E — ❌ Incorreta

delete from base where c=2; remove todas as linhas com c=2: (1,1,2), (1,2,2) e (2,2,2). Restam apenas (1,2,3) e (5,2,5). A consulta retorna apenas c=3, soma = 3.

NÃO CAIA NESSA!

A banca testa a capacidade de prever o efeito de comandos DML em uma consulta agregada. É comum o candidato escolher a inserção de (1,2,3) (alternativa B), que resulta em soma 8, e não 7. O raciocínio correto exige notar que a linha (1,1,2) está fora do filtro por causa do b=1, e alterar seu b para 2 a inclui, adicionando exatamente 2 à soma.

Gabarito: letra D.

Link permanente: /questoes/qq890554