PostgreSQL - wartości NULL
PostgreSQL NULLto termin używany do reprezentowania brakującej wartości. Wartość NULL w tabeli to wartość w polu, które wydaje się puste.
Pole z wartością NULL to pole bez wartości. Bardzo ważne jest, aby zrozumieć, że wartość NULL różni się od wartości zerowej lub pola zawierającego spacje.
Składnia
Podstawowa składnia using NULL podczas tworzenia tabeli wygląda następująco -
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
Tutaj, NOT NULLoznacza, że kolumna powinna zawsze akceptować jawną wartość danego typu danych. Istnieją dwie kolumny, w których nie użyliśmy NOT NULL. W związku z tym oznacza to, że te kolumny mogą mieć wartość NULL.
Pole z wartością NULL to takie, które zostało puste podczas tworzenia rekordu.
Przykład
Wartość NULL może powodować problemy podczas wybierania danych, ponieważ podczas porównywania nieznanej wartości z jakąkolwiek inną wartością wynik jest zawsze nieznany i nie jest uwzględniany w wynikach końcowych. Rozważ poniższą tabelę, FIRMA o następujących rekordach -
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
Użyjmy instrukcji UPDATE, aby ustawić kilka wartości dopuszczających wartość null jako NULL w następujący sposób -
testdb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
Teraz tabela COMPANY powinna mieć następujące rekordy -
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)
Następnie zobaczmy użycie IS NOT NULL operator, aby wyświetlić wszystkie rekordy, w których SALARY nie ma wartości NULL -
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NOT NULL;
Powyższa instrukcja PostgreSQL da następujący wynik -
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)
Poniżej przedstawiono użycie IS NULL operator, który wypisze wszystkie rekordy, w których SALARY ma wartość NULL -
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NULL;
Powyższa instrukcja PostgreSQL da następujący wynik -
id | name | age | address | salary
----+-------+-----+---------+--------
6 | Kim | 22 | |
7 | James | 24 | |
(2 rows)