NULL en SQL
Le sens de NULL, la logique à trois valeurs, IS NULL contre = NULL, NULL dans les calculs, les agrégats, NOT IN et ORDER BY, et les fonctions COALESCE et NULLIF.
- 22 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
NULL : de quoi s'agit-il ?
Voir la réponse
Marqueur SQL de l'absence de valeur : la donnée est inconnue ou n'existe pas. Ce n'est ni zéro ni la chaîne vide.
Un prix à 0 est un prix gratuit ; un prix absent est un prix qu'on ne connaît pas. Toute comparaison avec ce marqueur,
=compris, rend « inconnu » : on le teste avecIS NULL.La colonne ville de 5 clients contient : Lyon, Paris, NULL, Lyon, NULL. Que rend cette requête ?
```sql
SELECT COUNT(*), COUNT(ville) FROM client;`- 5 et 3
- 5 et 5
- 3 et 3
- 5 et 2
Voir la réponse
5 et 3
COUNT(*)compte les lignes, quelles que soient leurs valeurs.COUNT(ville)ne compte que les valeurs présentes : Lyon, Paris, Lyon, doublons compris. Pour compter les villes différentes, c'estCOUNT(DISTINCT ville), qui rend 2.Une clause WHERE ne garde que les lignes dont la condition est … : les conditions fausses et inconnues sont écartées.
Voir la réponse
Une clause WHERE ne garde que les lignes dont la condition est vraie : les conditions fausses et inconnues sont écartées.
C'est ce qui rend
WHERE ville <> 'Lyon'muet sur les villes absentes : la condition y est inconnue, pas vraie.Logique à trois valeurs : de quoi s'agit-il ?
Voir la réponse
Logique de SQL où une condition vaut vrai, faux ou inconnu ; une comparaison avec une valeur absente est inconnue.
WHEREne garde que les lignes dont la condition est vraie : faux et inconnu sont écartés tous les deux. D'oùville <> 'Lyon'qui ne rend pas les lignes à ville absente.Cette requête rend 0 ligne alors que trois clients n'ont pas de téléphone. Quelle correction ?
```sql
SELECT * FROM client WHERE telephone = NULL;`- Écrire WHERE telephone = '' pour chercher les téléphones vides
- Écrire WHERE telephone IS NULL
- Écrire WHERE telephone <> NULL, qui est la négation de l'égalité
- Écrire WHERE telephone = 0 pour chercher les numéros nuls
Voir la réponse
Écrire WHERE telephone IS NULL
Comparer à NULL avec
=ou<>rend toujours inconnu, donc aucune ligne. SeulIS NULLteste l'absence.''et0sont des valeurs, pas des valeurs absentes.