5 - SQL - Bases de données

Les opérateurs de comparaison et les opérateurs logiques

Les opérateurs de comparaison

La clause WHERE est définie par une condition qui s'exprime à l'aide d'opérateurs de comparaison et d'opérateurs logiques.

Les opérateurs de comparaison sont :

A = B

A <> B (différent)

A < B

A > B

A <= B (inférieur ou égal)

A >= B (supérieur ou égal)

A BETWEEN B AND C (compris entre B et C)

A IN (B1, B2,...) liste de valeurs :

ex : SELECT nom_comm, insee_comm, population FROM commune WHERE statut IN('Commune simple', 'Chef-lieu de canton')

A LIKE 'chaîne'

permet d'insérer des caractères jokers dans l'opération de comparaison, % désignant 0 à plusieurs caractères quelconques , _ désignant un seul caractère.

Ex : SELECT * FROM commune WHERE nom_comm LIKE 'A%' sélectionne toutes les communes dont le nom commence par A

SELECT * FROM commune WHERE nom_comm LIKE '%SAINT%' sélectionne toutes les communes dont le nom contient la chaîne 'SAINT'

AttentionSensibilité à la casse

SQL est sensible à la casse (majuscule / minuscule) pour les constantes, ainsi NOM_COMM LIKE '%A' est différent de NOM_COMM LIKE '%a'.

Les mots clefs et les noms de colonnes sont insensibles à la casse. On peut ainsi écrire SeLecT * fRom ma_TabLE. Une convention couramment utilisée est d'écrire les mots clefs en majuscule et les noms en minuscules exemple : SELECT * FROM ma_table.

Dans PostgreSQL mettre les noms de colonnes entre guillemets double permet de les rendre sensibles à la casse, "ma_table" est différent de "MA_TABLE". Il est conseillé de donner des noms de champs en minuscules dans PostgreSQL.

Les chaînes de caractères des constantes sont en général entourées de guillemets simples (ex : 'SAINT %') qui est le caractère chr(39), cependant si la chaîne constante contient elle-même une apostrophe il faut la doubler (ex : SELECT * FROM commune WHERE nom_com LIKE 'l'' %' sélectionne toutes les communes dont le nom commence par l'

RemarqueNombre ou chaîne de caractères

Les opérandes (A ou B) peuvent être des nombres ou des chaînes de caractères. Ainsi NOM_COMMUNE <> 'PARIS' est correct et sélectionne toutes les communes dont le nom n'est pas Paris

FondamentalNULL

Une valeur par défaut peut-être attribuée à une colonne lors de la définition d'une table. Si aucune valeur par défaut n'est attribuée la valeur par défaut de la colonne est positionnée à NULL (0 ou espace n'est pas équivalent à NULL...c'est une différence importante par rapport à MapInfo).

Il est possible d'utiliser l'opérateur logique IS pour tester si un champ est ou non nul.

Exemple : SELECT * FROM commune WHERE nom_comm IS NULL récupère les enregistrement qui n'ont pas de nom de commune.

SELECT * FROM commune WHERE nom_comm IS NOT NULL récupère ceux qui ont effectivement un nom (non positionné à NULL).

Les opérateurs logiques

OR : pour séparer deux conditions dont au moins une doit être vérifiée.

Ex : SELECT * FROM commune WHERE statut = 'Commune simple' OR STATUT = 'Chef-lieu de canton'

Cette requête sélectionne les communes pour lesquelles le statut est commune simple ou chef-lieu de canton.

Bien penser dans l'exemple ci-dessus que le OR lie deux conditions. Une condition contient nécessairement un des opérateurs de comparaison. Ainsi on ne peut écrire

SELECT * FROM commune WHERE statut = 'Commune simple' OR 'Chef-lieu de canton'

AND : pour séparer deux conditions qui doivent être vérifiées simultanément.

Ex : SELECT * FROM commune WHERE statut = 'Sous-préfecture' AND population > 10000

seules les sous-préfectures de plus de 10 000 habitants sont sélectionnées.

NOT : permet d'inverser une condition.

Ex : SELECT * from commune WHERE NOT (statut = 'Commune simple' OR statut = 'Chef-lieu de canton')

sélectionne les communes qui ne sont ni commune simple, ni chef lieu de canton.

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Maîtrise d'ouvrage : MEDDE - METL - MAAF / Maîtrise d'œuvre : ENTE Aix - ENSG / Licence ouverte ETALAB Réalisé avec Scenari (nouvelle fenêtre)