Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2025
- Código
- qa699069
- Banca
- Quadrix
- Órgão
- CAU MA
- Ano
- 2025
- Cargo
- Ass TI ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A consulta SELECT * FROM projetos WHERE status = 'Em Andamento' OR cidade = 'São Luís'; retorna todos os projetos que estão 'Em Andamento' OU todos os projetos da cidade de São Luís — ou seja, a união dos dois conjuntos. A afirmação do enunciado diz que retorna "apenas os projetos que estão 'Em Andamento' na cidade de São Luís", o que corresponderia à interseção dos dois critérios, obtida com o operador AND, não com o OR.
O operador OR é um operador lógico (booleano) que combina condições na cláusula WHERE. Quando você escreve condição1 OR condição2, a linha (tupla) é retornada se pelo menos uma das condições for verdadeira. Isso significa que o resultado inclui:
Projetos com status 'Em Andamento' (independentemente da cidade);
Projetos da cidade de São Luís (independentemente do status);
Projetos que satisfazem ambas as condições (status 'Em Andamento' E cidade 'São Luís').
Para retornar apenas os projetos que estão 'Em Andamento' na cidade de São Luís, o correto seria usar o operador AND, que exige que todas as condições sejam verdadeiras simultaneamente: SELECT * FROM projetos WHERE status = 'Em Andamento' AND cidade = 'São Luís';.
Vamos a um exemplo concreto para fixar. Imagine a tabela projetos com os seguintes registros:
id | status | cidade |
|---|---|---|
1 | Em Andamento | São Luís |
2 | Em Andamento | Imperatriz |
3 | Concluído | São Luís |
4 | Concluído | Imperatriz |
Com WHERE status = 'Em Andamento' OR cidade = 'São Luís', o resultado seria: linhas 1, 2 e 3 (a linha 1 satisfaz as duas; a 2 satisfaz a primeira; a 3 satisfaz a segunda). A linha 4 não é retornada.
Com WHERE status = 'Em Andamento' AND cidade = 'São Luís', o resultado seria: apenas a linha 1.
A pegadinha clássica da banca é trocar o operador lógico: o enunciado descreve o efeito do AND (interseção) mas a consulta usa o OR (união). O candidato que lê a descrição e não analisa o comando SQL acaba marcando "Certo".
A banca descreve o resultado de uma interseção ("Em Andamento" na cidade de São Luís) mas a consulta usa o operador OR, que produz uma união. O candidato que confia na descrição sem executar mentalmente o WHERE cai no erro. Lembre-se: OR = pelo menos uma condição; AND = todas as condições.
Na prova, ao julgar consultas SQL, execute mentalmente a consulta com um mini-conjunto de dados (2-3 linhas). Pergunte-se: "esta linha seria retornada?" para cada condição. Isso revela na hora se o operador é OR (união) ou AND (interseção).
A afirmação está errada porque descreve o resultado de uma consulta com AND, mas o comando apresentado usa OR. O OR retorna a união dos conjuntos (projetos 'Em Andamento' ou projetos de São Luís), enquanto a descrição pede a interseção (projetos 'Em Andamento' e de São Luís).
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qa699069