72
Chapitre 5 • Le langage SQL DML
L’usage de parenthèses permet de former des conditions plus élaborées encore :
where COMPTE > 0
and
(CAT = 'C1' or LOCALITE = 'Paris')
Les parenthèses peuvent être utilisées même lorsqu’elles ne sont pas indispensables,
par exemple pour rendre plus lisible une condition composée :
where (LOCALITE = 'Toulouse') and (COMPTE < 0)
5.2.6 Un peu de logique
Il n’est peut-être pas inutile de rappeler quelques principes et propriétés de la
logique classique. Celle-ci va en effet nous servir à comprendre, exprimer et simplifier les conditions de sélection qui apparaissent dans la clause where 5 .
Sur le plan pratique, outre la négation (communément notée ¬ et dénommée not
en SQL), deux opérateurs logiques à deux arguments (les deux conditions P et Q par
exemple) nous permettront de construire des conditions composées à partir de
conditions plus simples :
• la conjonction, notée P ∧ Q (P et Q en français, P and Q en SQL); cette expression est vraie si les arguments sont vrai;
• la disjonction, notée P ∨ Q (P ou Q en français, P or Q en SQL); cette expression est vraie si au moins un des arguments est vrai.
Lors de l’évaluation d’une expression complexe, la négation (not) a priorité sur la
conjonction (and), qui elle-même a priorité sur la disjonction (or). On peut imposer
un ordre d’évaluation différent à l’aide de parenthèses. Soit, par exemple, l’expression :
LOCALITE = 'Toulouse' and COMPTE < 0 or CAT = ’C1’
Elle indique qu’une ligne de CLIENT est sélectionnée si (LOCALITE = 'Toulouse'
et COMPTE < 0) ou si (CAT = ’C1’) ou si les deux conditions sont vérifiées. On
aurait pu écrire, de manière équivalente :
(LOCALITE = 'Toulouse' and COMPTE < 0) or CAT = ’C1’
En revanche, l’expression :
LOCALITE = 'Toulouse' and (COMPTE < 0 or CAT = ’C1’)
a une toute autre interprétation. Une ligne de CLIENT est sélectionnée si elle vérifie
simultanément deux conditions : d’une part, (LOCALITE = 'Toulouse'), et d’autre
5. On trouvera aussi de telles conditions dans les clauses check, dans les triggers et dans les
procédures SQL, comme nous le verrons dans le chapitre 5.
Chapitre 5 • Le langage SQL DML
L’usage de parenthèses permet de former des conditions plus élaborées encore :
where COMPTE > 0
and
(CAT = 'C1' or LOCALITE = 'Paris')
Les parenthèses peuvent être utilisées même lorsqu’elles ne sont pas indispensables,
par exemple pour rendre plus lisible une condition composée :
where (LOCALITE = 'Toulouse') and (COMPTE < 0)
5.2.6 Un peu de logique
Il n’est peut-être pas inutile de rappeler quelques principes et propriétés de la
logique classique. Celle-ci va en effet nous servir à comprendre, exprimer et simplifier les conditions de sélection qui apparaissent dans la clause where 5 .
Sur le plan pratique, outre la négation (communément notée ¬ et dénommée not
en SQL), deux opérateurs logiques à deux arguments (les deux conditions P et Q par
exemple) nous permettront de construire des conditions composées à partir de
conditions plus simples :
• la conjonction, notée P ∧ Q (P et Q en français, P and Q en SQL); cette expression est vraie si les arguments sont vrai;
• la disjonction, notée P ∨ Q (P ou Q en français, P or Q en SQL); cette expression est vraie si au moins un des arguments est vrai.
Lors de l’évaluation d’une expression complexe, la négation (not) a priorité sur la
conjonction (and), qui elle-même a priorité sur la disjonction (or). On peut imposer
un ordre d’évaluation différent à l’aide de parenthèses. Soit, par exemple, l’expression :
LOCALITE = 'Toulouse' and COMPTE < 0 or CAT = ’C1’
Elle indique qu’une ligne de CLIENT est sélectionnée si (LOCALITE = 'Toulouse'
et COMPTE < 0) ou si (CAT = ’C1’) ou si les deux conditions sont vérifiées. On
aurait pu écrire, de manière équivalente :
(LOCALITE = 'Toulouse' and COMPTE < 0) or CAT = ’C1’
En revanche, l’expression :
LOCALITE = 'Toulouse' and (COMPTE < 0 or CAT = ’C1’)
a une toute autre interprétation. Une ligne de CLIENT est sélectionnée si elle vérifie
simultanément deux conditions : d’une part, (LOCALITE = 'Toulouse'), et d’autre
5. On trouvera aussi de telles conditions dans les clauses check, dans les triggers et dans les
procédures SQL, comme nous le verrons dans le chapitre 5.
