PostgreSQL DONDE
La cláusula `WHERE` de PostgreSQL se utiliza para filtrar los registros que cumplen determinadas condiciones. Permite recuperar sólo las filas que cumplen los criterios proporcionados.
Utilización
La cláusula `WHERE` se suele utilizar junto con comandos de recuperación de datos como `SELECT`, `UPDATE` y `DELETE` para especificar qué registros deben verse afectados. Va después del nombre de la tabla y antes de otras cláusulas como `ORDENAR POR` o `GRUPO POR`.
sql
SELECT column1, column2, ...
FROM table_name
WHERE condition;
En esta sintaxis, la condición `WHERE` define los criterios de filtrado de la consulta, limitando el conjunto de resultados sólo a las filas que cumplan la condición.
Ejemplos
1. Filtrado básico
sql
SELECT *
FROM employees
WHERE department = 'Sales';
Este ejemplo recupera todas las columnas de la tabla "Empleados" para los registros en los que el "Departamento" es "Ventas".
2. Filtrar con varias condiciones
sql
SELECT first_name, last_name
FROM employees
WHERE department = 'Engineering' AND salary > 50000;
Aquí, la consulta recupera el `nombre_y apellido` de los empleados del departamento de `Ingeniería` con un salario superior a 50.000.
3. Utilizar la concordancia de patrones
sql
SELECT product_name
FROM products
WHERE product_name LIKE 'A%';
Este ejemplo utiliza el operador `LIKE` para obtener todos los nombres de productos que empiecen por la letra `A`.
4. Uso de WHERE en una sentencia UPDATE
sql
UPDATE employees
SET salary = salary * 1.10
WHERE department = 'Marketing';
Esta consulta aumenta el salario en un 10% para todos los empleados del departamento "Marketing".
5. Uso de WHERE en una sentencia DELETE
sql
DELETE FROM orders
WHERE order_date < '2023-01-01';
Este ejemplo elimina todos los pedidos realizados antes del 1 de enero de 2023.
6. Manejo de valores nulos
sql
SELECT *
FROM customers
WHERE last_name IS NULL;
Esta consulta recupera todos los clientes cuyo `apellido` es `NULL`.
7. Operadores lógicos Ejemplo
sql
SELECT employee_id
FROM employees
WHERE department = 'HR' OR department = 'Finance' AND NOT salary < 40000;
Esta consulta obtiene los ID de los empleados de los departamentos de "RRHH" o "Finanzas" con un salario no inferior a 40.000.
Consejos y buenas prácticas
- Utiliza índices. Asegúrate de que las columnas indexadas se utilizan en las condiciones `WHERE` para acelerar el rendimiento de las consultas. Ten cuidado al utilizar funciones o cálculos en columnas indexadas, ya que pueden anular las ventajas del índice.
- Aprovecha los operadores lógicos. Combina varias condiciones utilizando `AND`, `OR` y `NOT` para crear filtros complejos.
- Optimiza el orden de las condiciones. Pon primero las condiciones más restrictivas para reducir rápidamente el conjunto de datos.
- Utiliza sabiamente la concordancia de patrones. Utiliza `%` y `_` con `LIKE` con precaución, ya que pueden afectar al rendimiento.
- Valida los tipos de datos. Asegúrate de que los tipos de datos de la condición de tu cláusula "DONDE" coinciden con los tipos de columna para evitar errores y mejorar la eficacia.
- Ten en cuenta la distinción entre mayúsculas y minúsculas. Recuerda que PostgreSQL distingue entre mayúsculas y minúsculas en las comparaciones de texto, lo que puede afectar a los resultados de las condiciones "DONDE" que utilizan cadenas.