Neste tópico, aprenderemos como adicionar várias condições usando a cláusula WHERE.
Primeiro, vamos entender o conceito de cláusula WHERE.
A cláusula WHERE é usada para especificar uma condição ao recuperar registros de uma tabela.
A cláusula WHERE geralmente é usada com a instrução SELECT no SQL
A consulta SELECT exibirá apenas os registros que satisfaçam a condição especificada na cláusula WHERE
Pode haver uma ou mais condições especificadas na condição da cláusula WHERE de uma consulta SELECT.
Os operadores AND e OR são usados para verificar várias condições usando a cláusula WHERE em uma única consulta.
- Operador AND com cláusula WHERE
Sempre que o operador AND for usado entre as condições com a cláusula WHERE para verificar várias condições na consulta SELECT, os resultados serão exibidos quando apenas mais de uma condição fornecida na consulta for atendida.
Sintaxe:
SELECT *FROM table_name WHERE Condition 1 AND Condition 2 [AND Condition 3];
Exemplo 1:
Considere a tabela de alunos abaixo. Consideraremos a mesma tabela para todos os exemplos a seguir.
Student_RollNo | Nome_Aluno | Student_Gender | Student_MobileNumber | Student_HomeTown | Idade_aluno | Student_Percentage |
1 | Rohit Mais | Masculino | 9890786123 | Lucknow | 23 | 75 |
2 | Kunal Shah | Masculino | 7789056784 | Chandigarh | 20 | 68 |
3 | Kartik Goenka | Masculino | 9908743576 | Ahemdabad | 22 | 92 |
4 | Anupama Shah | Feminino | 8890907656 | Chandigarh | 24 | 94 |
5 | Snehal Jain | Feminino | 8657983476 | Surata | 21 | 94 |
Agora, vamos ver alguns exemplos para entender esse conceito de forma prática.
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_HomeTown = "Chandigarh";
Saída:
Há apenas um registro na tabela de alunos com o rolo número 2, que tem o gênero masculino e a cidade natal como Chandigarh. Mesmo que qualquer uma das condições especificadas não seja atendida, nesse caso, a saída não será a mesma. O registro/registros exibidos serão diferentes ou, em alguns casos, a saída pode ser um conjunto vazio se nenhum registro satisfizer ambas as condições.
Exemplo 2:
mysql> SELECT *FROM students WHERE Student_Age = 21 AND Student_Percentage = 94;
Saída:
Há apenas um registro com número de rolo '5' na tabela de alunos, que tem idade igual a '21' e percentual igual a '94'.
Exemplo 3:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" AND Student_HomeTown = "Chandigarh" AND Student_Age = 24;
Saída:
Entre todos os registros da tabela de alunos, há apenas um registro com número de rolo '4', que tem gênero como 'masculino', cidade de origem como 'Chandigarh' e idade igual a '24'. Este é o único registro que satisfaz todas as três condições.
Exemplo 4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_Name = "Kartik Goenka" AND Student_Percentage = 92;
Saída:
Entre todos os registros da tabela de alunos, há apenas um registro com número de rolo '3' em que todas as três condições são atendidas, ou seja, sexo como masculino, nome igual a 'Kartik Goenka' e percentual igual a '92'.
- Operador OR com cláusula WHERE
Sempre que o operador OR for usado entre as condições com a cláusula WHERE para verificar várias condições na consulta SELECT, os resultados serão exibidos quando pelo menos uma condição for atendida entre todas as outras condições gravadas em uma consulta.
Sintaxe:
SELECT *FROM table_name WHERE Condition 1 OR Condition 2 [OR Condition 3];
Exemplo 1:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_HomeTown = "Chandigarh";
Saída:
Na tabela de alunos, há quatro registros com rolo número 1, 2, 3 e 4 que tem o gênero masculino ou cidade natal como Chandigarh. Mesmo que quaisquer condições especificadas sejam atendidas, esse registro será considerado como parte da saída. Em alguns casos, a saída pode ser um conjunto vazio se nenhum registro satisfizer nenhuma das condições.
Exemplo 2:
mysql> SELECT *FROM students WHERE Student_Age = 21 OR Student_Percentage = 94;
Saída:
Existem dois números de rolo de registros '4' e '5' na tabela de alunos, que tem idade igual a '21' ou porcentagem igual a '94'.
Exemplo 3:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" OR Student_HomeTown = "Chandigarh" OR Student_Age = 24;
Saída:
Dentre todos os registros da tabela de alunos, há três registros com número de rolo '2', '4' e '5', que tem um ou outro gênero como 'feminino'; cidade natal como 'Chandigarh' ou idade igual a '24'. Esses são os registros que satisfazem uma das três condições.
Exemplo 4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_Name = "Kartik Goenka" OR Student_Percentage = 92;
Saída:
Entre todos os registros na tabela de alunos, há três registros com números de rolo '1', '2' e '3' em que qualquer uma das três condições é atendida, ou seja, sexo como masculino, nome igual a 'Kartik Goenka' ou porcentagem igual a '92'.
- Operador AND e OR com cláusula WHERE em uma única consulta
Na consulta da cláusula WHERE com uma instrução SELECT, também podemos usar uma combinação de operadores AND e OR em uma única consulta. O objetivo de usar as combinações de operadores AND e OR em uma única consulta é testar o nível mais alto de condições complicadas.
Sintaxe:
SELECT *FROM table_name WHERE Condition 1 AND/OR Condition 2 [AND/OR Condition 3];
Exemplo 1:
mysql> SELECT *FROM students WHERE Student_Gender = "Female" AND Student_HomeTown = "Chandigarh" OR Student_Age = 24;
Saída:
De acordo com as condições em uma consulta, o registro deve ter gênero como 'feminino' e cidade natal como 'Chandigarh'. A idade do aluno pode ou não ser ‘24’. Portanto, há apenas um registro com número de rolo '4', que atende a essas condições. Mesmo que qualquer registro tenha gênero como 'feminino' e cidade natal diferente de 'Chandigarh' ou vice-versa, esse registro não será considerado na saída.
Exemplo 2:
SELECT * FROM students WHERE Student_Gender = "Female" OR Student_HomeTown = "Chandigarh" AND Student_Age = 24;
Saída:
De acordo com as condições em uma consulta, o registro deve ter gênero como 'feminino' ou cidade natal como 'Chandigarh'. A idade do aluno não deve ser diferente de '24'. Portanto, existem dois registros com número de rolo '4' e '5' que atendem a essas condições.
Exemplo 3:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" AND Student_HomeTown = "Lucknow" OR Student_Age = 23 AND Student_Percentage = 75;
Saída:
Há apenas um registro na tabela de alunos com sexo como 'masculino', cidade de origem como 'Lucknow' e a porcentagem do aluno deve ser '75'. A idade de um aluno pode ser 23 ou diferente de 23.
Exemplo 4:
mysql> SELECT *FROM students WHERE Student_Gender = "Male" OR Student_HomeTown = "Lucknow" AND Student_Age = 23 OR Student_Percentage = 75;
Saída:
Na tabela de alunos, há três registros que possuem gênero como 'masculino' e idade como '23'. A cidade natal pode ou não ser 'Lucknow'. Além disso, a porcentagem pode ou não ser '75'.