Já errei muita questão dessa natureza....
Tentei relacionar seleção com projeção e where com seleção mas não entrava na minha cabeça...
Então comecei a raciocinar assim:
Quando executamos o comando SELECT significa que estamos buscando dentro de uma tabela algumas/todas colunas.
Vamos pegar um exemplo:
SELECT nome, idade
FROM funcionários
Em linhas gerais, estou dizendo o seguinte para o meu banco de dados: "por favor, faça para mim uma projeção das colunas nome e a idade da tabela funcionários".
Nesse caso, gosto de pensar que estou projetando/direcionando minha consulta para algumas colunas.
É certo que eu poderia fazer uma projeção para toda a minha relação, com o seguinte comando:
SELECT * FROM funcionarios
Aqui estamos dizendo assim: "banco de dados faça uma projeção de toda a tabela funcionarios"
Quando acrescentamos o WHERE, o nosso comando fica um pouco mais detalhado. Vejamos:
SELECT nome, idade
FROM funcionários
WHERE idade < 40
Nesse caso, estou dizendo assim para o banco de dados: "por gentileza, projete o nome e a idade dos funcionários, selecionando somente aqueles cuja idade seja menor do que 40 anos.
Portanto, quando estou diante de um SELECT, estou solicitando ao banco de dados que ele faça uma PROJEÇÃO de algumas/todas as colunas daquela relação.
Por outro lado, quando eu chamo o comando WHERE, estou dizendo o seguinte: sabe essas colunas que você projetou para mim? Está tudo ok, mas eu preciso mais do que isso. Eu preciso que você faça uma SELEÇÃO dos funcionários com idade menor do que 40 anos.
GABARITO ERRADO... porque WHERE não corresponde à operação de projeção, mas sim à SELEÇÃO!