Onde (SQL) - Where (SQL)

Uma WHERE cláusula em SQL especifica que uma instrução SQL Data Manipulation Language (DML) deve afetar apenas as linhas que atendem aos critérios especificados. Os critérios são expressos na forma de predicados. WHERE cláusulas não são cláusulas obrigatórias de instruções SQL DML, mas podem ser usadas para limitar o número de linhas afetadas por uma instrução SQL DML ou retornadas por uma consulta. Em resumo, a cláusula SQL WHERE é usada para extrair apenas os resultados de uma instrução SQL, como: instrução SELECT, INSERT, UPDATE ou DELETE.

Visão geral

WHERE é uma palavra reservada SQL .

A WHERE cláusula é usada em conjunto com instruções SQL DML e assume a seguinte forma geral:

SQL-DML-Statement
FROM table_name 
WHERE predicate

todas as linhas para as quais o predicado na WHERE cláusula é True são afetadas (ou retornadas) pela instrução ou consulta SQL DML. As linhas para as quais o predicado é avaliado como Falso ou Desconhecido ( NULL ) não são afetadas pela instrução ou consulta DML.

A consulta a seguir retorna apenas as linhas da tabela mytable onde o valor na coluna mycol é maior que 100.

SELECT *
FROM   mytable
WHERE  mycol > 100

A DELETE instrução a seguir remove apenas as linhas da tabela mytable onde a coluna mycol é NULL ou tem um valor igual a 100.

DELETE
FROM   mytable
WHERE  mycol IS NULL OR mycol = 100

Predicados

Predicados simples usar um dos operadores = , <> , > , >= , < , <= , IN , BETWEEN , LIKE , IS NULL ou IS NOT NULL .

Os predicados podem ser colocados entre parênteses, se desejado. As palavras AND - chave e OR podem ser usadas para combinar dois predicados em um novo. Se várias combinações forem aplicadas, os parênteses podem ser usados ​​para agrupar combinações para indicar a ordem de avaliação. Sem parênteses, o AND operador tem uma ligação mais forte do que OR .

O exemplo a seguir exclui linhas de mytable onde o valor de mycol é maior que 100 e o valor de item é igual ao literal de string 'Hammer':

DELETE
FROM   mytable
WHERE  mycol > 100 AND item = 'Hammer'

DENTRO

IN encontrará quaisquer valores existentes em um conjunto de candidatos.

SELECT ename WHERE ename IN ('Montreal', 'Quebec')

Todas as linhas correspondem ao predicado se seu valor for um dos conjuntos de valores candidatos. Este é o mesmo comportamento que

SELECT ename WHERE ename='value1' OR ename='value2'

exceto que o último poderia permitir a comparação de várias colunas, o que cada IN cláusula não permite. Para um número maior de candidatos, IN é menos prolixo.

ENTRE

BETWEEN encontrará todos os valores dentro de um intervalo.

SELECT ename WHERE ename BETWEEN 'value1' AND 'value2'
SELECT salary from emp WHERE salary BETWEEN 5000 AND 10000

Todas as linhas correspondem ao predicado se seu valor estiver entre 'valor1' e 'valor2', inclusive.

COMO

LIKE encontrará uma string que se encaixa em uma determinada descrição.

  • Terminando curinga
    • Encontre qualquer string que comece com a letra 'S'
      SELECT ename FROM emp WHERE ename LIKE 'S%';
      
  • Caractere curinga inicial
    • Encontre qualquer string que termine com a letra 'S'
      SELECT ename FROM emp WHERE ename LIKE '%S';
      
  • Múltiplos curingas
    • Encontre qualquer string que contenha, em qualquer lugar, a letra 'S'
      SELECT ename FROM emp WHERE ename LIKE '%S%';
      
  • Curinga de um único caractere
    • Encontre qualquer string que contenha a letra 'A' seguida por qualquer caractere seguido pela letra 'E'
      SELECT ename FROM emp WHERE ename LIKE '%A_E%';
      
  • Classes de personagens
    • Encontre qualquer string que comece com uma letra ou número ou o símbolo '_'
      SELECT ename FROM emp WHERE ename LIKE '[a-zA-Z0-9_]%';
      

O predicado LIKE normalmente executa uma pesquisa sem o benefício de desempenho normal dos índices. Usar '=', '<>', etc., em vez disso, aumentará o desempenho. A distinção entre maiúsculas e minúsculas (por exemplo, 'S' versus 's') pode ser diferente com base no produto ou configuração do banco de dados.

Referências

  1. ^ "Cláusula SQL WHERE - Coisas que os iniciantes devem saber" .
  2. ^ Microsoft Technet recuperado em 21 de novembro de 2013.

links externos