Una WHERE
cláusula en SQL especifica que una declaración del lenguaje de manipulación de datos (DML) de SQL solo debe afectar a las filas que cumplen con los criterios especificados. Los criterios se expresan en forma de predicados. WHERE
Las cláusulas no son cláusulas obligatorias de las declaraciones SQL DML, pero se pueden usar para limitar el número de filas afectadas por una declaración SQL DML o devueltas por una consulta. En resumen, la cláusula WHERE de SQL se utiliza para extraer solo aquellos resultados de una declaración SQL, como: SELECT
, INSERT
, UPDATE
o DELETE
declaración. [1]
WHERE
es una palabra reservada de SQL .
La WHERE
cláusula se utiliza junto con declaraciones SQL DML y adopta la siguiente forma general:
SQL - DML - Declaración DESDE nombre_tabla DONDE predicado
todas las filas para las cuales el predicado de la WHERE
cláusula es Verdadero se ven afectadas (o devueltas) por la consulta o instrucción SQL DML. Las filas para las cuales el predicado se evalúa como Falso o Desconocido ( NULL ) no se ven afectadas por la consulta o instrucción 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 igual a 100.
ELIMINAR DE mytable DONDE mycol ES NULO O mycol = 100
Los predicados simples utilizan uno de los operadores =
, <>
, >
, >=
, , , , o .<
<=
IN
BETWEEN
LIKE
IS NULL
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 un enlace 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 = 'Martillo'
IN
encontrará cualquier valor existente en un conjunto de candidatos.
SELECCIONE ename DONDE ename EN ( 'Montreal' , 'Quebec' )
Todas las filas coinciden con el predicado si su valor es uno del conjunto de valores candidatos. Este es el mismo comportamiento que
SELECCIONE ename DONDE ename = 'valor1' O ename = 'valor2'
excepto que este último podría permitir la comparación de varias columnas, lo que cada IN
cláusula no permite. Para un número mayor de candidatos, IN
es menos detallado.
BETWEEN
encontrará cualquier valor dentro de un rango.
SELECCIONE ename DONDE ename ENTRE 'valor1' Y 'valor2'
SELECCIONE el salario de emp DONDE el salario ENTRE 5000 Y 10000
Todas las filas coinciden con el predicado si su valor está entre 'valor1' y 'valor2', ambos inclusive.
LIKE
encontrará una cadena que se ajuste a una determinada descripción.
SELECCIONE ename DESDE emp DONDE ename COMO 'S%' ;
SELECCIONE ename DESDE emp DONDE ename COMO '%S' ;
SELECCIONE ename DESDE emp DONDE ename COMO '%S%' ;
SELECCIONE ename DESDE emp DONDE ename COMO '%A_E%' ;
SELECCIONE ename DESDE emp DONDE ename COMO '[a-zA-Z0-9_]%' ;
El predicado LIKE normalmente realiza una búsqueda sin el beneficio de rendimiento normal de los índices. Usar '=", '<>', etc. en su lugar aumentará el rendimiento. La distinción entre mayúsculas y minúsculas (por ejemplo, 'S' frente a 's') puede ser diferente según el producto o la configuración de la base de datos.
Éste se usa en PostgresSQL y admite expresiones regulares con la siguiente sintaxis: [3]
cadena [ NO ] SIMILAR AL patrón [ ESCAPE carácter de escape ]
Funciona de manera similar a la declaración LIKE mencionada anteriormente.