NULL (SQL)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 2 septembrie 2021; verificările necesită 4 modificări .

NULL într-un SGBD este o valoare specială (pseudo-valoare) care poate fi scrisă într-un câmp al unui tabel al bazei de date (DB). NULL corespunde conceptului de „câmp gol”, adică „un câmp care nu conține nicio valoare”. Introdus pentru a distinge între valorile goale (nu afișate vizual) în câmpurile bazei de date (de exemplu, un șir de lungime zero ) și valorile lipsă (când nu este scrisă nicio valoare în câmp, chiar și goală) .

NULL înseamnă nu, informații necunoscute. Valoarea NULL nu este o valoare în sensul deplin al cuvântului: prin definiție înseamnă absența unei valori și poate fi de tip NULL sau de orice alt tip (CREATE TABLE new_tab AS (SELECT NULL) este un tip special de null , CREATE TABLE new_table AS (SELECT 10+NULL) - tip întreg). Prin urmare, NULL nu este nici booleanul FALSE, nici șirul gol, nici zero. Compararea NULL cu orice valoare va avea ca rezultat NULL, nu FALSE sau 0. Mai mult, NULL nu este egal cu NULL!

Necesitatea NULL în bazele de date relaționale

Folosind NULL într-o bază de date

În bazele de date care suportă conceptul de NULL, pentru un câmp de tabel din descriere, se stabilește dacă acesta poate fi gol. Dacă da, atunci nu poate fi scrisă nicio valoare în acest câmp, iar acest câmp va avea o valoare NULL. De asemenea, puteți scrie în mod explicit o valoare NULL într-un astfel de câmp.

De obicei, DBMS nu permite valori NULL pentru câmpurile care fac parte din cheia primară a unui tabel . În câmpurile de cheie străină , dimpotrivă, este permis NULL. Prezența lui NULL într-un câmp de cheie străină poate fi interpretată ca un semn al absenței unei înregistrări aferente, iar o astfel de cheie străină nu necesită implementarea regulilor de integritate referențială care sunt necesare pentru orice altă valoare a cheii străine.

Operații cu NULL

Deoarece NULL nu este, în sens general, o valoare, utilizarea sa în operații aritmetice , șiruri , logice și alte operațiuni este, strict vorbind, incorectă. Cu toate acestea, majoritatea DBMS acceptă astfel de operațiuni, dar introduc reguli speciale pentru acestea:

În plus, pot exista funcții speciale de sistem pentru conversia convenabilă a NULL în anumite valori, de exemplu, Oracle are o funcție de sistem NVL care returnează valoarea parametrului său dacă nu este NULL sau valoarea implicită dacă operandul este NULL. Standardul SQL-92 definește două funcții: NULLIF și COALESCE, deci utilizarea lor este mai de preferat (dacă un anumit SGBD le implementează).

Vezi și

Note

  1. Date K., Darwen H. Fundamentals of future database systems. Al treilea Manifest. a 2-a ed. (sub redactia S. D. Kuznetsov). M.: Janus-K, 2004.