Arbetar med NULL-värden i SQL Server

Vi kan inte förutsäga värden för de flesta framtida datapunkter när vi arbetar med databassystem. Till exempel har tabeller som används för kundinformation ofta en mobilnummerkolumn. Det är möjligt att en kund inte har ett mobilnummer, eller av privatlivets skull vill han inte dela sitt mobilnummer. I sådana fall kan vi använda NULL-värden för att indikera osäkra framtida datapunkter.

Vad är NULL?

NULL är ett nyckelord som innebär att inget värde finns.

Med tanke på NULLs vid utformning av tabeller

Vi måste bestämma vilka fält som ska tillåta NULL-värden. Vid utformning av tabeller måste vi överväga vilka fält som krävs eller obligatoriskt att fyllas i av användaren och vilka fält är inte obligatoriska. Baserat på detta kan vi bestämma huruvida vi ska tillåta NULL-värden.

CREATE TABLE Kund (Customer_id INT PRIMARY KEY, Förnamn VARCHAR (50) INTE NULL, LastName VARCHAR (50) INTE NULL, MobileNo VARCHAR (15) NULL);

Vi har utformat ett bord, kund, där alla fält är obligatoriska (NOT NULL), förutom MobileNo-fältet som tillåter NULL-värden.

Obs! Primära nyckelbegränsningar är alltid NULL, så det behöver inte anges explicit.

INTE NULL indikerar att ett värde är obligatoriskt (levereras). NULL anger att värdet inte är obligatoriskt.

Infoga NULLs

Vi använder NULL för mobilnumret i fall 2 eftersom vi inte har ett mobilnummer för CustomerId = 2 just nu. Se till att du inte anger enkla citat runt NULL eftersom det kommer att betraktas som en sträng där NULL är ett specialt nyckelord.

Fall 1: Vi har en giltig MobileNo.

Infoga i dbo.Customer (Customer_id, FirstName, LastName, MobileNo) Värden (1, "Hen", "Kaz", 9833844);

Fall 2: Vi har ingen MobileNo och vi lägger därför in det som NULL.

Infoga i dbo.Customer (Customer_id, FirstName, LastName, MobileNo) värden (2, 'Rec', 'John', NULL);

Fråga NULLs

Att ställa in NULLs i SQL skiljer sig från att fråga regelbundna data eftersom vi inte kan fråga efter strängen "NULL" eller söka efter ett värde som är lika med NULL.

Fall 1: Felaktig fråga

VÄLJ * FRÅN KUNDEN VAR MobileNo = NULL

Fall 2: Felaktig fråga

VÄLJ * FRÅN KUNDEN VAR MobileNo som "NULL"

Fall 3: Giltig fråga för att hitta MobileNos Har ett NULL-värde

VÄLJ * FRÅN KUNDEN VAR MobileNo är NULL

Fall 4: Giltig fråga för att hitta MobileNos som inte har ett NULL-värde

VÄLJ * FRÅN KUNDEN HUR MobileNo är inte NULL

Uppdaterar NULLS

Nu har vi fått mobilnumret för kund id = 2, vilket tidigare var NULL.
Låt oss uppdatera mobilnumret för kund id = 2, där mobilnumret nu är NULL.

- För kund-ID 2 vars mobilnummer är nu NULL VÄLJ * FRÅN KUNDEN VAR MobileNo är NULL och Customer_id = 2 - Uppdatera MobileNo UPPDATERA KUNDINSTÄLLET MobileNo = 91244 Var Mobil är NULL och Customer_id = 2 --Se ändringarna VÄLJ * FRÅN KUND WHERE Customer_id = 2 --Sätt upp MobileNo till NULL igen för att inkludera det i radera NULLS UPPDATERA KUNDSÄTTA MobileNo = NULL WHERE Customer_id = 2 VÄLJ * FRÅN KUNDEN VARNAR MobileNo är NULL och Customer_id = 2

Sletter NULLs

Vid uppdatering av NULLs rekommenderas att du uppdaterar MobileNo för kund-id = 2 till NULL igen.

Använd följande för att radera rader med NULL-värden:

Ta bort från kund där MobileNo är NULL