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
:
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.
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 sentenciaSELECT
para filtrar filas de una consulta en función de una o varias condiciones.