Sök…
Introduktion
NULL i SQL, liksom programmering i allmänhet, betyder bokstavligen "ingenting". I SQL är det lättare att förstå som "frånvaron av något värde".
Det är viktigt att skilja det från till synes tomma värden, till exempel den tomma strängen '' eller antalet 0 , varken är faktiskt NULL .
Det är också viktigt att vara försiktig så att du inte bifogar NULL i citat, till exempel 'NULL' , som är tillåtet i kolumner som accepterar text, men är inte NULL och kan orsaka fel och felaktiga datamängder.
Filtrering för NULL i frågor
Syntaxen för filtrering för NULL (dvs. frånvaron av ett värde) i WHERE block är något annorlunda än filtrering för specifika värden.
SELECT * FROM Employees WHERE ManagerId IS NULL ;
SELECT * FROM Employees WHERE ManagerId IS NOT NULL ;
Observera att eftersom NULL inte är lika med någonting, inte ens till sig själv, använder jämställdhetsoperatörer = NULL eller <> NULL (eller != NULL ) alltid sanningsvärdet för UNKNOWN som kommer att avvisas av WHERE .
WHERE filtrerar alla rader att villkoret är FALSE eller UKNOWN och bara rader att villkoret är TRUE .
Nullable kolumner i tabeller
När du skapar tabeller är det möjligt att förklara en kolumn som nullable eller non-nullable.
CREATE TABLE MyTable
(
MyCol1 INT NOT NULL, -- non-nullable
MyCol2 INT NULL -- nullable
) ;
Som standard är varje kolumn (utom de som är i primär nyckelbegränsning) nullable om vi inte uttryckligen ställer NOT NULL begränsning.
Att försöka tilldela NULL till en icke-nullable kolumn kommer att resultera i ett fel.
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (1, NULL) ; -- works fine
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (NULL, 2) ;
-- cannot insert
-- the value NULL into column 'MyCol1', table 'MyTable';
-- column does not allow nulls. INSERT fails.
Uppdaterar fält till NULL
Att ställa in ett fält till NULL fungerar precis som med något annat värde:
UPDATE Employees
SET ManagerId = NULL
WHERE Id = 4
Infoga rader med NULL-fält
Till exempel infoga en anställd utan telefonnummer och ingen chef i tabellen Anställda :
INSERT INTO Employees
(Id, FName, LName, PhoneNumber, ManagerId, DepartmentId, Salary, HireDate)
VALUES
(5, 'Jane', 'Doe', NULL, NULL, 2, 800, '2016-07-22') ;