Valeurs NULL dans PostgreSQL

Une valeur NULL représente des données inconnues manquantes.

Par défaut, une colonne de table peut contenir des valeurs NULL.

Ce chapitre explique les opérateurs IS NULL et IS NOT NULL.

Syntaxe

La syntaxe de base de NULL lors de la création d'une table est la suivante :

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Ici, NOT NULL indique que le champ est contraint de toujours contenir une valeur. Cela signifie que vous ne pouvez pas insérer un nouvel enregistrement ni mettre à jour un enregistrement sans ajouter de valeur à ce champ.

Un champ avec une valeur NULL peut être laissé vide lors de la création d'un enregistrement.

Lors de l'interrogation des données, les valeurs NULL peuvent poser des problèmes, car une valeur inconnue comparée à toute autre valeur donnera toujours un résultat inconnu.

De plus, vous ne pouvez pas comparer NULL et 0, car ils ne sont pas équivalents.

Exemple

Exemple

Créer la table COMPANY (Télécharger le fichier SQL COMPANY), le contenu des données est le suivant :

exampledb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Ensuite, nous utilisons l'instruction UPDATE pour définir sur NULL plusieurs champs pouvant être mis à vide :

exampledb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
Maintenant, la table COMPANY ressemble à ceci :
exampledb=# select * from company;
 id | name  | age |         address     | salary 
----+-------+-----+---------------------+--------
  1 | Paul  |  32 | California          |  20000
  2 | Allen |  25 | Texas               |  15000
  3 | Teddy |  23 | Norway              |  20000
  4 | Mark  |  25 | Rich-Mond           |  65000
  5 | David |  27 | Texas               |  85000
  6 | Kim   |  22 |                     |       
  7 | James |  24 |                     |       
(7 rows)

IS NOT NULL

Maintenant, nous utilisons l'opérateur IS NOT NULL pour lister tous les enregistrements dont la valeur SALARY (salaire) n'est pas NULL :

exampledb=# SELECT  ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NOT NULL;

Le résultat obtenu est le suivant :

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(5 rows)

IS NULL

IS NULL est utilisé pour trouver les champs ayant une valeur NULL.

Ci-dessous se trouve l'utilisation de l'opérateur IS NULL pour lister les enregistrements où la valeur SALARY (salaire) est NULL :

exampledb=#  SELECT  ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NULL;

Le résultat obtenu est le suivant :

id | name  | age | address | salary
----+-------+-----+---------+--------
  6 | Kim   |  22 |         |
  7 | James |  24 |         |
(2 rows)
Autres extensions