Home > Fragmenty szkoleń > NOT NULL w PostgreSQL

NOT NULL w PostgreSQL

PostgreSQL

Stosując ograniczenie NOT NULL w PostgreSQL możemy mieć pewność, że kolumny, na które nałożyliśmy to ograniczenie, nie zaakceptują żadnej wartości NULL. Jak wiadomo w bazie danych Słowo kluczowe NULL definiuje informacje, których brakuje lub są nieznane. Znaczenie wartości NULL jest różne od wartości zero lub pustego łańcucha.

Rozważmy przypadek, w którym mamy formularz ze szczegółowymi informacje o Kliencie sklepu, ale dopuszczamy mozliwośc, że Klient nie poda nam numeru telefonu komórkowego, bo np. nie chce tego zrobić, abyśmy nie nadużywali go w kontaktach, lub po prostu takowego nie posiada. W takim wypadku jeżeli Klient nie korzysta z telefonu komórkowego lub nie chce podać numeru telefonu, możemy zamiast tego numeru użyć pustego ciągu.

Składnia NOT NULL w PosgreSQL:

  • Jak widać składnia ograniczenia NOT NULL jest używana po typie danych kolumny, co powoduje odrzucenie wartości NULL do wstawienia, jeśli kolumna nie ma zdefiniowanego ograniczenia NOT NULL dla wstawionych wartości NULL.
  • W celu sprawdzenia, czy dana wartość jest NULL czy też nie, musimy użyć operatora boolowskiego IS NOT NULL lub IS NULL. Jeżeli porównamy wyrażenie NULL = NULL otrzymamy wynik jako NULL.
  • Z tym jak ważne jest ograniczenie NOT NULL możemy zetknąć się podczas wykonywania operacji INSERT lub UPDATE na tabeli. Powinniśmy mieć wartości, które nie są równe wartości NULL.
  • Ograniczenie NOT NULL jest własnością kolumny, a nie tabeli (ograniczenie nakładamy na kolumnę).
  • W PostgreSQL kolumna może mieć wiele ograniczeń, nie jedynie NOT NULL.

Przykłady użycia NOT NULL w PosgreSQL:

1. Nałożenie ograniczenia NOT NULL na kolumny, podczas tworzenia tabeli:

Przykład 1. Użyliśmy słowa kluczowego NOT NULL po typie danych kolumn name i price, aby zdefiniować ograniczenie NOT NULL. W PostgreSQL możemy mieć wiele ograniczeń na jednej kolumnie może to być: NOT NULL, FOREIGN KEY, UNIQUE i CHECK. Kolejność ograniczeń nie jest istotna, mozna je definiować jedno po drugim.

Teraz dodamy do tabeli biblioteka wartości, które są przez kolumny akceptowane:

Sprawdzamy jak zmieniły sie rekordy tabeli używając zapytania SELECT ALL:

A teraz spróbujemy dodamy do tabeli biblioteka wartość NULL:

Jak widać, próbujemy wstawić wartość NULL w kolumnie price, co kłóci się z nałożonym na kolumnę ograniczeniem więc jako wynik otrzymamy wyjątek.

2. Dodawanie ograniczenia NOT NULL do istniejących kolumn.

Aby dodać ograniczenie NOT NULL do kolumny w istniejącej już tabeli, możemy użyć instrukcji ALTER TABLE w następujący sposób:

Przykład 2. Utworzymy tabelę product z następującą instrukcją CREATE table.

Wstawimy kilka rekordów do tabeli product, używając następującej instrukcji INSERT INTO:

Stosujemy instrukcję SELECT ALL:

Otrzymujemy na wyjściu:

Jeśli chcemy, aby kolumna prod_ilosc miała wartość NOT NULL, możemy dodać ograniczenie not-null używając taj jak wcześniej instrukcji ALTER TABLE, ale tabela product_orders nie jest pusta! Dostaniemy więc na wyjściu błąd, podczas próby aktualizacji tabeli.

Musimy więc najpierw zaktualizować tabelę product w następujący sposób:

PO zastosowaniu instrukcji SELECT otrzymamy:

Teraz możemy zastosować instrukcję ALTER TABLE:

Możemy podejrzeć czy zmiany się powiodły:

Korzyści ze stosowania NOT NULL w PostgreSQL

  • Możemy uniknąć wstawiania lub aktualizowania wartości NULL w tabeli;
  • Ograniczenie PostgreSQL NOT-NULL spowoduje, że będziemy mieć pewność, że tabela będzie zawierać dane w kolumnie;
  • Pomaga nam wstawiać poprawne dane do tabeli;

Po więcej informacji zapraszamy na nasze szkolenia.Dokumentacja PostgreSQL.

Może Cię również zainteresować: