1
resposta

Se o comando " OR " significa " OU ", pq quando utilizamos em SQL ele junta as informações? Não deveria selecionar um ou outro?

USE sucos;

SELECT * FROM tbcliente WHERE (IDADE >= 18 AND IDADE <= 22 AND SEXO = 'M') OR (CIDADE = 'Rio de Janeiro' OR BAIRRO = 'Jardins');

O SQL filtra a tabela com as informações mencionadas acima, tanto na cidade do RJ quanto a do bairro em SP

1 resposta

Olá Gabriel, tudo bem?

Operador OR retorna os registros mesmo que apenas uma das condições seja verdadeiras, já o operador AND retorna os registros apenas se as duas condições sejam verdadeiras, então neste exemplo que você utilizou:

  • Na primeira condição deve ser retornado todos que tenha entre 18 e 22 anos de idade e sejam do sexo masculino:

    IDADE >= 18 AND IDADE <= 22 AND SEXO = 'M'
  • A outra condição deve retornar apenas registros onde a cidade seja Rio de Janeiro ou o Bairro seja Jardins:

    CIDADE = 'Rio de Janeiro' OR BAIRRO = 'Jardins'
  • Porém existe um outro operador OR entre as duas condições, então se na sua tabela existir clientes entre 18 e 22 anos e que sejam do sexo masculino, eles devem ser retornados na consulta, e se existir clientes que morem na cidade do Rio de Janeiro ou que o Bairro seja Jardins, mesmo que não atenda a primeira condição da idade e do sexo, também devem ser retornados, pois foi utilizado o operador OR (ou um ou o outro):

    (IDADE >= 18 AND IDADE <= 22 AND SEXO = 'M') 
    OR
    (CIDADE = 'Rio de Janeiro' OR BAIRRO = 'Jardins')

Espero ter esclarecido a sua dúvida, qualquer coisa é só falar e bons estudos!