Una WHERE
cláusula en SQL especifica que una declaración de lenguaje de manipulación de datos (DML) de SQL solo debe afectar a las filas que cumplan con los criterios especificados. Los criterios se expresan en forma de predicados. WHERE
las cláusulas no son cláusulas obligatorias de las sentencias DML de SQL, pero se pueden utilizar para limitar el número de filas afectadas por una sentencia DML de SQL o devueltas por una consulta. En resumen, la cláusula SQL WHERE se usa para extraer solo los resultados de una declaración SQL, como: instrucción SELECT, INSERT, UPDATE o DELETE. [1]
Descripción general
WHERE
es una palabra reservada de SQL .
La WHERE
cláusula se utiliza junto con las sentencias DML de SQL y adopta la siguiente forma general:
SQL - DML - Sentencia FROM table_name WHERE predicado
todas las filas para las que el predicado en la WHERE
cláusula es Verdadero se ven afectadas (o devueltas) por la instrucción o consulta SQL DML. Las filas para las que el predicado se evalúa como Falso o Desconocido ( NULL ) no se ven afectadas por la instrucción o consulta DML.
La siguiente consulta devuelve solo aquellas filas de la tabla mytable donde el valor en la columna mycol es mayor que 100.
SELECCIONE * DE mytable DONDE mycol > 100
La siguiente DELETE
declaración elimina solo aquellas filas de la tabla mytable donde la columna mycol es NULL o tiene un valor que es igual a 100.
BORRAR DE mytable DONDE mycol ES NULO O mycol = 100
Predicados
Predicados simples utilizan uno de los operadores =
, <>
, >
, >=
, <
, <=
, IN
, BETWEEN
, LIKE
, IS NULL
o IS NOT NULL
.
Los predicados se pueden encerrar entre paréntesis si se desea. Las palabras clave AND
y OR
se pueden utilizar para combinar dos predicados en uno nuevo. Si se aplican múltiples combinaciones, se pueden usar paréntesis para agrupar combinaciones para indicar el orden de evaluación. Sin paréntesis, el AND
operador tiene una vinculación más fuerte que OR
.
El siguiente ejemplo elimina filas de mytable donde el valor de mycol es mayor que 100 y el valor del elemento es igual al literal de cadena 'Hammer':
ELIMINAR DE mytable DONDE mycol > 100 Y item = 'Hammer'
EN
IN
encontrará los valores existentes en un conjunto de candidatos.
SELECCIONE el esmalte DONDE el esmalte EN ( 'Montreal' , 'Quebec' )
Todas las filas coinciden con el predicado si su valor es uno de los conjuntos de valores candidatos. Este es el mismo comportamiento que
SELECCIONE esmalte DONDE esmalte = 'valor1' O esmalte = 'valor2'
excepto que este último podría permitir la comparación de varias columnas, lo IN
que no permite cada cláusula. Para un mayor número de candidatos, IN
es menos detallado.
ENTRE
BETWEEN
encontrará cualquier valor dentro de un rango.
SELECCIONE esmalte DONDE esmalte ENTRE 'valor1' Y 'valor2'
SELECCIONE salario de emp DONDE salario ENTRE 5000 Y 10000
Todas las filas coinciden con el predicado si su valor está entre 'valor1' y 'valor2', inclusive.
COMO
LIKE
encontrará una cadena que se ajuste a una determinada descripción.
- Comodín final
- Encuentra cualquier cadena que comience con la letra 'S'
SELECT ename DE emp DONDE ename LIKE 'S%' ;
- Encuentra cualquier cadena que comience con la letra 'S'
- Comodín principal
- Encuentra cualquier cadena que termine con la letra 'S'
SELECCIONE esmalte DE emp DONDE esmalte COMO '% S' ;
- Encuentra cualquier cadena que termine con la letra 'S'
- Múltiples comodines
- Encuentra cualquier cadena que contenga, en cualquier lugar, la letra 'S'
SELECT ename DE emp DONDE ename LIKE '% S%' ;
- Encuentra cualquier cadena que contenga, en cualquier lugar, la letra 'S'
- Comodín de un solo carácter
- Busque cualquier cadena que contenga la letra 'A' seguida de un carácter individual seguido de la letra 'E'
SELECCIONE esmalte DE emp DONDE esmalte LIKE '% A_E%' ;
- Busque cualquier cadena que contenga la letra 'A' seguida de un carácter individual seguido de la letra 'E'
- Clases de personajes [2]
- Busque cualquier cadena que comience con una letra, un número o el símbolo '_'
SELECCIONE esmalte DE emp DONDE esmalte COMO '[a-zA-Z0-9 _]%' ;
- Busque cualquier cadena que comience con una letra, un número o el símbolo '_'
El predicado LIKE normalmente realiza una búsqueda sin el beneficio de rendimiento normal de los índices. El uso de '=', '<>', etc. en su lugar aumentará el rendimiento. La distinción entre mayúsculas y minúsculas (p. Ej., 'S' frente a 's') puede ser diferente según el producto o la configuración de la base de datos.
Referencias
- ^ "Cláusula SQL WHERE - Cosas que los principiantes deben saber" .
- ^ Microsoft Technet obtenido el 21 de noviembre de 2013.
enlaces externos
- PSOUG Home Puget Sound Oracle Users Group ofrece varios ejemplos de instrucciones SELECT con cláusulas WHERE.