Introdução à cláusula WHERE
Como todos sabemos, o SQL (Structured Query Language) é uma das linguagens mais usadas para bancos de dados relacionais (banco de dados no qual os registros são salvos na forma de linhas e colunas). No SQL, as consultas são disparadas para atingir o banco de dados e executar as operações desejadas, seja DML (Data Manipulation Language), DDL (Data Definition Language) ou DCL (Data Control Language). O SQL usa algumas cláusulas como WHERE, GROUP BY, HAVING, ORDER BY que executam operações específicas. A cláusula WHERE é usada para aplicar condições e filtrar resultados enquanto recupera ou manipula quaisquer dados do banco de dados. É usada com as instruções SELECT, UPDATE e DELETE e a cláusula WHERE é opcional para ser usada com elas.
Em geral, os termos, cláusula WHERE,
- Usado para filtrar as linhas de acordo com os critérios fornecidos.
- Limita o número de linhas retornadas.
- Seguido por uma condição lógica que retorna verdadeiro ou falso.
- Funciona apenas se a condição mencionada retornar verdadeira.
- Pode ser usado com as instruções SELECT, UPDATE ou DELETE.
1. Sintaxe com SELECT
SELECT column1, column2, column3… from table_name WHERE condition;
Aqui, o SELECT recuperará todos os dados da coluna1, coluna2, coluna3 da tabela (nomeada como nome_tabela) e a cláusula WHERE aplica as condições aos dados recuperados pela instrução SELECT e o filtra de acordo com a condição mencionada na instrução.
2. Sintaxe com UPDATE
UPDATE table_name SET column_name = value WHERE condition;
Aqui, a atualização atualizará o valor para o column_name com a condição where fornecida.
Os operadores lógicos e de comparação também podem ser usados com a condição WHERE como e, ou, não, como, <, =, etc.
3. Sintaxe com DELETE
DELETE from table_name WHERE condition;
Na sintaxe acima:
Nome da tabela | Nome da tabela na qual as operações precisam ser executadas. |
condição | Especifica a condição do filtro na qual os registros precisam ser filtrados |
column_list | Nome das colunas da tabela |
Exemplos
Considere uma tabela de alunos com diferentes colunas e valores mencionados abaixo:
Stu_id | Stu_name | Stu_address | Stu_phno | Stu_percentage |
1 | Rahul | Agra | 9557806625 | 85 |
2 | Ankit | Délhi | 8855664471 | 75 |
3 | Shailendra | Noida | 7213457896 | 92 |
Cenário 1
Recupere a identificação do aluno, o nome, o endereço e a porcentagem de todos os alunos que pontuaram mais de 80%.
Inquerir
SELECT Stu_id, Stu_name, Stu_address from students WHERE Stu_percentage > 80;
Resultado:
Número de registros: 2
Stu_id | Stu_name | Stu_address | Stu_percentage |
1 | Rahul | Agra | 85 |
3 | Shailendra | Noida | 92 |
Cenário # 2
Atualize a porcentagem de Rahul em 2%.
Inquerir
UPDATE students SET Stu_percentage = Stu_percentage+2 WHERE Stu_name ='Rahul';
Resultado:
Linhas afetadas: 1
Se clicarmos na consulta para visualizar os campos atualizados:
Inquerir
SELECT * from students WHERE Stu_name ='Rahul';
Resultado:
Número de registros: 1
Stu_id | Stu_name | Stu_address | Stu_percentage |
1 | Rahul | Agra | 87 |
Cenário # 3
O aluno Ankit saiu da escola, então exclua todo o registro dele da tabela.
Inquerir
DELETE from students WHERE Stu_name = 'Ankit';
Resultado:
Linhas afetadas: 1
Para visualizar o aluno da tabela atualizado:
Inquerir
SELECT * from students;
Resultado:
Linhas afetadas: 2
Stu_id | Stu_name | Stu_address | Stu_phno | Stu_percenta ge |
1 | Rahul | Agra | 9557806625 | 87 |
3 | Shailendra | Noida | 7213457896 | 92 |
Cláusula WHERE Operações
A cláusula WHERE mantém as condições nas quais os valores do banco de dados são filtrados. Vários operadores podem ser usados com a cláusula WHERE. Alguns deles são fornecidos abaixo na tabela com um exemplo:
S.No. | Operador | Descrição | Exemplo |
1 | E | Retorna true se a condição corresponder | SELECT * dos alunos WHERE Stu_name = 'Rahul' e Stu_percentage = 85; |
2) | OU | Retorna true se qualquer um dos
correspondências de condição | SELECT * dos alunos WHERE Stu_name = 'Rahul' ou Stu_name = 'Shalendra'; |
3) | DENTRO | O valor corresponde a qualquer um dos vários valores especificados | SELECT * dos alunos WHERE Stu_city IN ('AGRA', 'NOIDA'); |
4) | NÃO EM | O valor não corresponde a nenhum dos vários valores especificados | SELECT * dos alunos ONDE a ESTÚDIO NÃO ESTÁ ('AGRA', 'NOIDA'); |
5) | = | Igual | SELECT * dos alunos ONDE
Stu_name = 'Rahul'; |
6 | > | Maior que | SELECT * dos alunos WHERE Stu_percentage> 80; |
7) | < | Menor que | SELECT * dos alunos WHERE Stu_percentage <78; |
8) | > = | Melhor que ou igual a | SELECT * dos alunos WHERE Stu_percenetage> = 70; |
9 | <= | Menos que ou igual a | SELECT * dos alunos WHERE Stu_percenetage <= 70; |
10) | Não é igual a | SELECT * dos alunos WHERE Stu_percentage 75; | |
11) | ENTRE | O valor está entre um certo intervalo | SELECT * dos alunos ONDE
Stu_percentage ENTRE 70 E 85; |
12) | GOSTAR | Os valores correspondem a um determinado padrão. Usado para executar pesquisas curinga | SELECT * dos alunos WHERE Stu_city COMO 'AG%'; |
Nota: Há uma coisa que precisa ser lembrada ao trabalhar com a cláusula WHERE: ao especificar a condição, os valores numéricos não são citados entre aspas simples (''), enquanto os valores de texto (varchar) precisam ser citados em uma única citações (' ').
Como a cláusula WHERE funciona no SQL?
Embora os exemplos acima mostrem claramente como a cláusula WHERE é usada para filtrar os dados de acordo com a condição especificada pelo usuário e permita a execução mais rápida do código SQL, pois o número de registros retornados é limitado pela condição. O otimizador de consultas SQL trabalha primeiro na consulta usando FROM (tabela na qual a operação precisa ser executada) para recuperar, excluir ou atualizar e aplicar a cláusula WHERE aos resultados.
A cláusula WHERE pode ser usada apenas quando precisamos filtrar os resultados em uma única tabela ou associação de tabelas, pois funciona nos dados das linhas, mas quando, no caso das funções Agregadas, WHERE não pode ser usado para aplicar condições à consulta.
Vamos considerar o cenário em que a cláusula WHERE não pode ser usada:
Cenário: em uma tabela de 'filmes', recupere todos os detalhes de filmes que ganham mais de 10 crores em anos específicos como (2000, 2010, 2012..etc)
Inquerir:
SELECT * from movies GROUP BY Year_released HAVING earnings > 10;
O exemplo acima usa a cláusula HAVING em vez de WHERE, porque a cláusula WHERE não pode ser usada nas funções agregadas, enquanto HAVING pode, e essa também é uma das principais diferenças entre a cláusula WHERE e HAVING
Conclusão - Cláusula SQL WHERE
A explicação acima mostra claramente o uso da cláusula WHERE e sua implementação para diferentes cenários nas consultas SQL. Antes de escrever qualquer consulta, é preciso ter em mente o uso de cada cláusula e o cenário em que essa cláusula ou palavra-chave específica deve ser usada.
Artigos recomendados
Este é um guia para a cláusula SQL WHERE. Aqui discutimos o uso da cláusula WHERE e sua implementação para diferentes cenários. Você também pode consultar nossos outros artigos sugeridos -
- Tipos de junções no SQL
- Curingas no MySQL
- Consulta de Inserção SQL
- Chave estrangeira no SQL
- Os 6 principais tipos de junções no MySQL com exemplos