La valeur NULL

Objectif

  • Savoir représenter l'absence de valeur en SQL.

Mise en situation

Dans une table, il est possible qu'un attribut n'ait pas valeurs pour certains enregistrements.

Imaginez par exemple une table qui stocke des informations sur des festivals de musique, passés et à venir.

Au moment où un festival s'organise, le lieu n'est pas forcément connu : ça ne doit pas empêcher l'enregistrement du festival, dont le lieu n'aura pas de valeur jusqu'à ce qu'il doit décidé.

Mais comment représenter l'absence de valeur en SQL ? Avec une case vide ? Un zéro ? Un caractère particulier ? Dans ce module, vous verrez que SQL possède une valeur spéciale, appelée valeur nulle, pour représenter l'absence de valeur.

L'absence de valeur, représentée par la valeur NULL, est une information fondamentale en SQL, qu'il ne faut pas confondre avec la chaîne de caractères espace ou bien la valeur 0. Il ne s'agit pas d'un type, ni d'une contrainte, mais d'une valeur possible dans tous les types.

Fondamental

Par défaut en SQL NULL fait partie du domaine, il faut l'exclure explicitement par la clause NOT NULL après la définition de type, si on ne le souhaite pas.

Syntaxe

1
CREATE TABLE nom_table (
2
nom_colonne1 domaine1 NOT NULL,
3
nom_colonne2 domaine2,
4
...
5
nom_colonneN domaineN NOT NULL
6
);

Exemple

1
CREATE TABLE book (
2
title VARCHAR(255),
3
subtitle INTEGER,
4
author VARCHAR(255),
5
year INTEGER
6
);
7
8
INSERT INTO book VALUES ('Odyssée', NULL, 'Homère', -800);
9
INSERT INTO book (title) VALUES ('Tristan et Iseut')  ;
1
SELECT * 
2
FROM book;

Remarque

On peut insérer une valeur nulle de façon explicite en « valuant » une colonne avec NULL ou bien implicitement en ne valuant pas du tout la colonne.