Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg594437
- Banca
- Quadrix
- Órgão
- CAU-MA
- Ano
- 2025
- Nível
- Médio
- Cargo
- Assistente de Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A consulta SELECT * FROM projetos WHERE status = 'Em Andamento' OR cidade = 'São Luís'; retorna os projetos que estão "Em Andamento" OU os projetos da cidade de São Luís, ou seja, a união dos dois conjuntos — não apenas os projetos que estão "Em Andamento" E são de São Luís. O erro está na interpretação do operador OR, que amplia o resultado, enquanto a afirmação do enunciado descreve uma interseção, que seria obtida com o operador AND.
O comando SELECT com a cláusula WHERE é a forma de filtrar linhas de uma tabela no SQL. A cláusula WHERE aceita condições que podem ser combinadas com os operadores lógicos AND, OR e NOT. O operador AND exige que todas as condições sejam verdadeiras simultaneamente para que a linha seja retornada — é a interseção. Já o operador OR retorna a linha se pelo menos uma das condições for verdadeira — é a união. Essa distinção é fundamental e é exatamente o que a banca explora nesta questão.
Vamos aplicar isso ao caso concreto. A tabela projetos tem, entre outras, as colunas status e cidade. A consulta pede linhas onde status = 'Em Andamento' OU cidade = 'São Luís'. Isso significa que serão retornados:
Projetos em andamento, independentemente da cidade (inclusive os de São Luís);
Projetos de São Luís, independentemente do status (inclusive os em andamento);
Projetos que atendem às duas condições (em andamento E em São Luís) — estes aparecem uma única vez, pois o OR não duplica linhas.
Portanto, o resultado inclui projetos que não estão em andamento (mas são de São Luís) e projetos que não são de São Luís (mas estão em andamento). A afirmação do enunciado diz que a consulta retorna "apenas" os projetos que estão "Em Andamento" na cidade de São Luís — isso seria o resultado de WHERE status = 'Em Andamento' AND cidade = 'São Luís', que é a interseção. Como o OR foi usado, o resultado é mais amplo.
A pegadinha clássica é confundir OR com AND. O candidato que lê a frase "Em Andamento na cidade de São Luís" e associa ao OR comete o erro de achar que a condição composta exige as duas coisas. Na verdade, o OR é inclusivo: basta uma das condições ser verdadeira. Para exigir ambas, o operador correto é o AND. Guarde essa fronteira: AND = interseção (restrição), OR = união (ampliação). É exatamente nela que esta questão se decide.
A afirmação está errada porque descreve o resultado de uma consulta com AND, não com OR. A consulta com OR retorna a união dos projetos em andamento com os projetos de São Luís, incluindo projetos que não atendem simultaneamente às duas condições. Para retornar "apenas" os projetos em andamento na cidade de São Luís, a consulta correta seria SELECT * FROM projetos WHERE status = 'Em Andamento' AND cidade = 'São Luís';. O OR amplia o conjunto de resultados, enquanto a frase do enunciado descreve uma restrição — exatamente o oposto do que o operador faz.
A banca troca o operador lógico na interpretação: o enunciado descreve uma interseção ("Em Andamento" e São Luís), mas a consulta usa OR, que é uma união. O candidato que lê a frase e não confere o operador cai na armadilha. Lembre-se: OR basta uma condição; AND exige todas.
Na prova, ao analisar uma consulta com WHERE, sublinhe os operadores AND/OR e pergunte: "o resultado é a interseção ou a união dos conjuntos?". Se a frase do enunciado diz "e", o operador deve ser AND; se diz "ou", deve ser OR. Essa checagem rápida evita o erro mais comum em questões de SQL.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg594437