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