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%';
- Encontre qualquer string que comece com a letra 'S'
- Caractere curinga inicial
- Encontre qualquer string que termine com a letra 'S'
SELECT ename FROM emp WHERE ename LIKE '%S';
- Encontre qualquer string que termine com a letra 'S'
- Múltiplos curingas
- Encontre qualquer string que contenha, em qualquer lugar, a letra 'S'
SELECT ename FROM emp WHERE ename LIKE '%S%';
- Encontre qualquer string que contenha, em qualquer lugar, a letra '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%';
- Encontre qualquer string que contenha a letra 'A' seguida por qualquer caractere seguido pela letra '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_]%';
- Encontre qualquer string que comece com uma letra ou número ou o símbolo '_'
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
- ^ "Cláusula SQL WHERE - Coisas que os iniciantes devem saber" .
- ^ Microsoft Technet recuperado em 21 de novembro de 2013.
links externos
- PSOUG Home Puget Sound Oracle Users Group fornece vários exemplos de instruções SELECT com cláusulas WHERE.