Saltar a contenido

La sentencia SELECT devuelve todas las filas de una o varias columnas de una tabla. Para recuperar filas que satisfacen una condición especificada, se utiliza una cláusula WHERE.

La sintaxis de la cláusula WHERE de PostgreSQL es la siguiente:

SELECT 
  seleccionar_lista 
FROM 
  nombre_tabla 
WHERE 
  condición 
ORDENAR POR 
  sort_expression;

En esta sintaxis, la cláusula WHERE se coloca justo después de la cláusula FROM de la sentencia SELECT.

La cláusula WHERE utiliza la condición condition para filtrar las filas devueltas por la cláusula SELECT.

La condición es una expresión booleana que se evalúa como verdadero, falso o desconocido.

La consulta sólo devuelve las filas que cumplen la "condición" de la cláusula "WHERE". En otras palabras, la consulta incluirá en el conjunto de resultados sólo las filas que hagan que la "condición" se evalúe como verdadera.

PostgreSQL evalúa la cláusula WHERE después de la cláusula FROM pero antes de las cláusulas SELECT y ORDER BY:

img

Si utiliza un alias de columna en la cláusula SELECT, no se podrá utilizar en la cláusula WHERE.

Además de la sentencia SELECT, se puede utilizar la cláusula WHERE en las sentencias UPDATE y DELETE para especificar filas a actualizar y borrar.

Para formar la condición en la cláusula WHERE, se utilizan operadores lógicos y de comparación:

Operador Descripción
= Igual
> Mayor que than
< Menos que
>= Mayor o igual que
<= Menor o igual que
<> or != Distinto
AND Operador lógico AND
OR Operador lógico OR
IN Devuelve true si un valor coincide con cualquier valor de la lista
BETWEEN Devuelve true si un valor está entre un rango de valores
LIKE Devuelve true si un valor coincide con el patrón
IS NULL Devuelve true si un valor es NULL
NOT Niega el resultado de otros operadores

Ejemplos de la cláusula WHERE

Practiquemos con algunos ejemplos de uso de la cláusula WHERE.

Utilizaremos la tabla customer de la base de datos de ejemplo para la demostración.

customer table

Ejemplo de uso de la cláusula WHERE con el operador =

La siguiente sentencia utiliza la cláusula WHERE para encontrar clientes cuyo nombre de pila sea Jamie:

SELECT 
  last_name 
  first_name
FROM 
  customer
WHERE
  first_name = 'Jamie';

Salida:

 last_name | first_name
-----------+------------
 Rice      | Jamie
 Waugh     | Jamie
(2 rows)

Ejemplo de uso de la cláusula WHERE con el operador AND

El siguiente ejemplo utiliza una cláusula WHERE con el operador lógico AND para buscar clientes cuyo nombre y apellidos sean Jamie y rice:

SELECT 
  last_name, 
  first_name 
FROM 
  customer 
WHERE 
  first_name = 'Jamie' 
  AND last_name = 'Rice';

Salida:

 last_name | first_name
-----------+------------
 Rice      | Jamie
(1 row)

Ejemplo de uso de la cláusula WHERE con el operador OR

El siguiente ejemplo utiliza una cláusula WHERE con un operador OR para encontrar los clientes cuyo apellido es Rodriguez o cuyo nombre es Adam:

SELECT 
  first_name, 
  last_name 
FROM 
  customer 
WHERE 
  last_name = 'Rodriguez' 
  OR first_name = 'Adam';

Salida:

 first_name | last_name
------------+-----------
 Laura      | Rodriguez
 Adam       | Gooch
(2 rows)

Ejemplo de uso de la cláusula WHERE con el operador IN

Si desea encontrar un valor en una lista de valores, puede utilizar el operador IN.

El siguiente ejemplo utiliza la cláusula WHERE con el operador IN para encontrar los clientes con nombres en la lista Ann, Anne y Annie:

SELECT 
  first_name, 
  last_name 
FROM 
  customer 
WHERE 
  first_name IN ('Ann', 'Anne', 'Annie');Code language: SQL (Structured Query Language) (sql)

Salida:

 first_name | last_name
------------+-----------
 Ann        | Evans
 Anne       | Powell
 Annie      | Russell
(3 rows)

Ejemplo de uso de la cláusula WHERE con el operador LIKE

Para encontrar una cadena que coincida con un patrón especificado, utilice el operador LIKE.

El siguiente ejemplo utiliza el operador LIKE en la cláusula WHERE para buscar clientes cuyo nombre empiece por la palabra Ann:

SELECT 
  first_name, 
  last_name 
FROM 
  customer 
WHERE 
  first_name LIKE 'Ann%';

Salida:

 first_name | last_name
------------+-----------
 Anna       | Hill
 Ann        | Evans
 Anne       | Powell
 Annie      | Russell
 Annette    | Olson
(5 rows)

El % es un comodín que coincide con cualquier cadena. El patrón 'Ann%' coincide con cualquier cadena que empiece por 'Ann'.

Ejemplo de uso de la cláusula WHERE con el operador BETWEEN

El siguiente ejemplo busca clientes cuyo nombre empiece por la letra A y contenga de 3 a 5 caracteres utilizando el operador BETWEEN.

El operador BETWEEN devuelve verdadero si un valor se encuentra en un rango de valores.

SELECT 
  first_name, 
  LENGTH(first_name) name_length 
FROM 
  customer 
WHERE 
  first_name LIKE 'A%' 
  AND LENGTH(first_name) BETWEEN 3 
  AND 5 
ORDER BY 
  name_length;

Salida:

first_name | name_length
------------+-------------
 Amy        |           3
 Ann        |           3
 Ana        |           3
 Andy       |           4
 Anna       |           4
 Anne       |           4
 Alma       |           4
 Adam       |           4
 Alan       |           4
 Alex       |           4
 Angel      |           5
...

En este ejemplo, utilizamos la función LENGTH() para obtener el número de caracteres de una cadena de entrada.

Ejemplo de uso de la cláusula WHERE con el operador <>

Este ejemplo busca clientes cuyo nombre empiece por Bra y cuyo apellido no sea Motley:

SELECT 
  first_name, 
  last_name 
FROM 
  customer 
WHERE 
  first_name LIKE 'Bra%' 
  AND last_name <> 'Motley';Code language: SQL (Structured Query Language) (sql)

Salida:

 first_name | last_name
------------+-----------
 Brandy     | Graves
 Brandon    | Huey
 Brad       | Mccurdy
(3 rows)

Tenga en cuenta que puede utilizar el operador != y el operador <> indistintamente porque son equivalentes.

Resumen

  • Utiliza una cláusula WHERE en la sentencia SELECT para filtrar filas de una consulta en función de una o varias condiciones.