English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá a usar os operadores AND & OR na cláusula WHERE para filtrar registros com várias condições.
No capítulo anterior, aprendemos como usar uma condição com a cláusula WHERE para obter registros da tabela. Mas às vezes você precisa filtrar registros com várias condições, por exemplo, escolher registros com idade maior que30 anos e país/usuários da região dos EUA, escolha preços abaixo de100 dólares e com avaliações maiores que4produtos, etc.
O operador AND é um operador lógico que combina duas condições e retorna TRUE apenas quando os resultados das duas condições forem TRUE. Geralmente usado emSELECT,UPDATE,DELETEdo comandoWHEREA cláusula usa o operador AND para formar condições que filtram o conjunto de resultados.
SELECT column1_name, column2_name, columnN_nameFROM table_nameWHERE condition1 AND condition2;
Vamos ver alguns exemplos para demonstrar como ele realmente funciona.
Suponha que tenhamos um banco de dados com um nomeemployeesda tabela, que contém os seguintes registros:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
A seguinte consulta SQL extrairá apenasemployeesa tabela retorna salários (salary) maiores que7000 edept_idigual a5desses funcionários.
SELECT * FROM employees WHERE salary > 7000 AND dept_id = 5;
Após a execução, você receberá a seguinte saída:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
Da mesma forma, o operador OR é um operador lógico que combina duas condições, mas retorna TRUE quando qualquer uma das condições for TRUE.
A seguinte consulta SQL extrairáemployeesa tabela retorna salários (salary) maiores que7000 oudept_idigual a5de todos os empregados.
SELECT * FROM employees WHERE salary > 7000 OR dept_id = 5;
Você receberá a seguinte saída:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
Você também pode combinar AND e OR para criar expressões de condições complexas.
A seguinte sentença SQL retornará salários maiores que5000,edept_idigual a1ou5de todos os empregados.
SELECT * FROM employees WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);
Após executar a consulta acima, você obterá a seguinte saída:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+