PostgreSQL Où
La clause `WHERE` de PostgreSQL est utilisée pour filtrer les enregistrements qui répondent à des conditions spécifiques. Il permet de récupérer uniquement les lignes qui répondent aux critères fournis.
Utilisation
La clause `WHERE` est typiquement utilisée en conjonction avec des commandes de récupération de données comme `SELECT`, `UPDATE`, et `DELETE` pour spécifier quels enregistrements doivent être affectés. Elle vient après le nom du tableau et avant d'autres clauses comme `ORDER BY` ou `GROUP BY`.
sql
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Dans cette syntaxe, `WHERE condition` définit les critères de filtrage de la requête, limitant l'ensemble des résultats aux seules lignes qui satisfont à la condition.
Exemples
1. Filtrage de base
sql
SELECT *
FROM employees
WHERE department = 'Sales';
Cet exemple récupère toutes les colonnes du tableau `employees` pour les enregistrements dont le `département` est 'Sales'.
2. Filtrer avec des conditions multiples
sql
SELECT first_name, last_name
FROM employees
WHERE department = 'Engineering' AND salary > 50000;
Ici, la requête extrait le `first_name` et le `last_name` des employés du département 'Engineering' dont le salaire est supérieur à 50 000.
3. Utilisation de la correspondance des motifs
sql
SELECT product_name
FROM products
WHERE product_name LIKE 'A%';
Cet exemple utilise l'opérateur `LIKE` pour récupérer tous les noms de produits commençant par la lettre 'A'.
4. Utilisation de WHERE dans une instruction UPDATE
sql
UPDATE employees
SET salary = salary * 1.10
WHERE department = 'Marketing';
Cette requête augmente le salaire de 10 % pour tous les employés du département "Marketing".
5. Utilisation de WHERE dans une instruction DELETE
sql
DELETE FROM orders
WHERE order_date < '2023-01-01';
Cet exemple supprime toutes les commandes passées avant le 1er janvier 2023.
6. Traitement des valeurs NULL
sql
SELECT *
FROM customers
WHERE last_name IS NULL;
Cette requête récupère tous les clients dont le `last_name` est `NULL`.
7. Exemple d'opérateurs logiques
sql
SELECT employee_id
FROM employees
WHERE department = 'HR' OR department = 'Finance' AND NOT salary < 40000;
Cette requête permet de récupérer les identifiants des employés des départements "RH" ou "Finances" dont le salaire n'est pas inférieur à 40 000 euros.
Conseils et bonnes pratiques
- Utilisez des index. Assurez-vous que les colonnes indexées sont utilisées dans les conditions `WHERE` pour accélérer les performances des requêtes. Soyez prudent lorsque vous utilisez des fonctions ou des calculs sur des colonnes indexées, car ils peuvent annuler les avantages de l'index.
- Exploitez les opérateurs logiques. Combinez plusieurs conditions à l'aide de `AND`, `OR` et `NOT` pour créer des filtres complexes.
- Optimisez l'ordre des conditions. Placez les conditions les plus restrictives en premier pour réduire rapidement l'ensemble des données.
- Utilisez judicieusement la correspondance des modèles. Utilisez `%` et `_` avec `LIKE` avec prudence, car ils peuvent avoir un impact sur les performances.
- Validez les types de données. Veillez à ce que les types de données de votre clause conditionnelle `WHERE` correspondent aux types de colonnes afin d'éviter les erreurs et d'améliorer l'efficacité.
- Tenez compte de la sensibilité à la casse. Rappelez-vous que PostgreSQL est sensible à la casse dans les comparaisons de texte, ce qui peut affecter les résultats des conditions `WHERE` utilisant des chaînes de caractères.