PostgreSQL NULL-Werte

Ein NULL-Wert steht für fehlende, unbekannte Daten.

Standardmäßig kann eine Tabellenspalte NULL-Werte enthalten.

Dieses Kapitel erläutert die Operatoren IS NULL und IS NOT NULL.

Syntax

Die grundlegende Syntax von NULL beim Erstellen einer Tabelle ist wie folgt:

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

Hier gibt NOT NULL an, dass das Feld immer einen Wert enthalten muss. Das bedeutet, dass Sie keinen neuen Datensatz einfügen oder einen Datensatz aktualisieren können, ohne diesem Feld einen Wert hinzuzufügen.

Ein Feld mit einem NULL-Wert kann beim Erstellen eines Datensatzes leer gelassen werden.

Beim Abfragen von Daten können NULL-Werte einige Probleme verursachen, da ein unbekannter Wert, der mit einem anderen Wert verglichen wird, immer unknown ergibt.

Außerdem kann man NULL und 0 nicht vergleichen, da sie nicht äquivalent sind.

Beispiel

Beispiel

Erstellen Sie die COMPANY-Tabelle (Laden Sie die COMPANY-SQL-Datei herunter), der Dateninhalt lautet wie folgt:

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)

Als Nächstes verwenden wir die UPDATE-Anweisung, um mehrere Felder, die auf leer gesetzt werden können, auf NULL zu setzen:

exampledb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
Jetzt sieht die COMPANY-Tabelle so aus:
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

Jetzt verwenden wir den Operator IS NOT NULL, um alle Datensätze aufzulisten, deren SALARY-Wert (Gehalt) nicht NULL ist:

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

Das erhaltene Ergebnis lautet wie folgt:

 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 wird verwendet, um Felder mit einem NULL-Wert zu finden.

Nachfolgend wird die Verwendung des Operators IS NULL gezeigt, um die Datensätze aufzulisten, bei denen der SALARY-Wert (Gehalt) NULL ist:

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

Das erhaltene Ergebnis lautet wie folgt:

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