Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

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.