Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Les conditions de sélection

Icône Présentation
1 / 1

Conditions

Nous allons voir dans cette partie différentes possibilités de filtrage des lignes d’une table en SQL.

NULL

NULL

IS NULL

Une condition élémentaire peut porter sur la présence de valeurs NULL, par exemple :

SELECT nom, prenom, telephone
FROM Clients
WHERE telephone IS NULL;
Clients
nomprenomtelephone
Rey Michel
Weiss Dominique
Berlioz Diane
Lefevre Jean
Barda Jérôme
Jacques Chaoui

Conditions

IS NOT NULL

Ou sur une condition élémentaire portant sur des valeurs non NULL, par exemple :

SELECT nom, prenom, telephone
FROM Clients
WHERE telephone IS NOT NULL;
Clients
nomprenomtelephone
Lebreton Éléonore 0776059929
Vasseur Georges +33 1 44 68 49 74
Da Costa Léon 0568740044

Listes

Listes

IN

SELECT nom, prenom, ville
FROM Clients
WHERE ville IN ('Paris', 'Grenoble');
Clients
nomprenomville
Vasseur Georges Grenoble
Da Costa Léon Paris
Berlioz Diane Paris
Barda Jérôme Paris
Jacques Chaoui Paris

Listes

NOT IN

SELECT nom, prenom, ville
FROM Clients
WHERE ville NOT IN ('Paris', 'Grenoble');
Clients
nomprenomville
Lebreton Éléonore Meylan
Rey Michel Vizille
Weiss Dominique Lille
Lefevre Jean Lyon

Intervalle

Intervalle

Dans l’intervalle :

SELECT *
FROM Commandes
WHERE dateCommande BETWEEN '2024-01-01' AND '2024-04-01';
Commandes
numeronumeroClientdateCommandestatut
1 1 2024-02-01 livrée
2 1 2024-03-15 livrée

Alternativement, on peut écrire :

SELECT *
FROM Commandes
WHERE dateCommande >= '2024-01-01' AND dateCommande <= '2024-04-01';

Intervalle

En dehors de l’intervalle :

SELECT *
FROM Commandes
WHERE dateCommande NOT BETWEEN '2024-01-01' AND '2024-04-01';
Commandes
numeronumeroClientdateCommandestatut
3 3 2024-04-28 livrée
4 4 2024-06-24 annulée
5 5 2024-06-30 en cours
6 5 2024-07-12 en cours
7 4 2024-08-19 annulée

Masques (wildcards)

Masques (wildcards)

Caractère seul

SELECT *
FROM Clients
WHERE ville LIKE '_eclercq';
Clients

Ici le L de Leclercq est remplacé par un caractère quelconque, en utilisant le masque _.

Masques (wildcards)

Chaine de caractères

SELECT *
FROM Clients
WHERE ville LIKE '%cq%';
Clients

La requête renvoie les lignes pour lesquelles la valeur de la colonne ville contient les lettres cq, en utilisant le masque %.

Masques (wildcards)

Remarques

  • Les symboles utilisés dans les masques :

    • _ (underscore) désigne un caractère quelconque
    • % désigne un suite de caractères éventuellement vide
  • Pour utiliser les caractères _ et % en tant que caractères normaux, il faut les préfixer d’un anti-slash \ :

    • col LIKE 'user\_name'
    • value LIKE '100\%'
  • Un masque peut s’appliquer à une date :

    • dateCommande LIKE '2023%'
  • Les conditions admettent la forme négative :

    • dateCommande NOT LIKE '2023%'

Logiques

La condition de la clause WHERE peut être composée d’une expression booléenne.

Exemple :

SELECT *
FROM Clients
WHERE ville = 'Paris' AND categorie = 'C3';
Clients
numeronomprenomruecodePostalvilletelephonecategoriecompte
3 Da Costa Léon 18, boulevard Brigitte Faivre 75000 Paris 0568740044 C3 -1500

Soit les expressions P et Q :

  • WHERE P AND Q : sélectionne les lignes qui vérifient simultanément P et Q
  • WHERE P OR Q : sélectionne les lignes qui vérifient P ou Q ou les deux
  • WHERE NOT P : sélection les lignes qui ne vérifient pas P

L’usage de parenthèses permet d’exprimer des expressions plus complexes :

WHERE COMPTE < 0 AND ( CAT = 'C1' OR LOCALITE = 'Paris' )

Conclusion

  • Les conditions de sélection permettent de filtrer les lignes d’une table
  • Les conditions de sélection sont définies dans la clause WHERE
  • Les conditions de sélection sont des expressions booléennes
  • Les conditions de sélection peuvent être composées d’opérateurs de comparaison, logiques et de quantifieurs