MySQL ÄR NULL & ÄR INTE NULL Handledning med EXEMPEL
I SQL är Null både ett värde och ett nyckelord. Låt oss först titta på NULL-värdet –
Null som värde
Enkelt uttryckt är NULL helt enkelt en platshållare för data som inte finns. När du utför infogningsoperationer på tabeller kommer det att vara tillfällen då vissa fältvärden inte kommer att vara tillgängliga.
För att uppfylla kraven för äkta relationsdatabashanteringssystem, MySQL använder NULL som platshållare för de värden som inte har skickats in. Skärmdumpen nedan visar hur NULL-värden ser ut i databasen.
Låt oss nu titta på några av grunderna för NULL innan vi går vidare in i diskussionen.
- NULL är inte en datatyp – detta betyder att den inte känns igen som en "int", "datum" eller någon annan definierad datatyp.
- Aritmetiska operationer involverar NULL alltid returnera NULL till exempel, 69 + NULL = NULL.
- Alla aggregerade funktioner påverkar endast rader som inte har NULL-värden.
Låt oss nu demonstrera hur räknefunktionen behandlar nollvärden. Låt oss se det aktuella innehållet i medlemstabellen-
SELECT * FROM `members`;
Att köra skriptet ovan ger oss följande resultat
membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Låt oss räkna alla medlemmar som har uppdaterat sitt kontaktnummer
SELECT COUNT(contact_number) FROM `members`;
Att köra ovanstående fråga ger oss följande resultat.
COUNT(contact_number) |
---|
7 |
Obs! Värden som är NULL har inte inkluderats
Vad är inte?
Den logiska operatorn NOT används för att testa för booleska villkor och returnerar sant om villkoret är falskt. NOT-operatorn returnerar falskt om villkoret som testats är sant
Skick | INTE Operator Resultat |
---|---|
Sant | Falsk |
Falsk | Sant |
Varför använda NOT null?
Det kommer att finnas fall då vi måste utföra beräkningar på en frågeresultatuppsättning och returnera värdena. Om du utför alla aritmetiska operationer på kolumner som har NULL-värdet returneras null-resultat. För att undvika att sådana situationer inträffar kan vi använda användningen av NOT NULL-klausulen för att begränsa de resultat som våra data fungerar på.
INTE NULL-värden
Låt oss anta att vi vill skapa en tabell med vissa fält som alltid ska förses med värden när du infogar nya rader i en tabell. Vi kan använda NOT NULL-satsen på ett givet fält när vi skapar tabellen.
Exemplet nedan skapar en ny tabell som innehåller anställdas data. Personalnumret ska alltid anges
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Låt oss nu försöka infoga en ny post utan att ange den anställdes namn och se vad som händer.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Exekvera skriptet ovan i MySQL arbetsbänk ger följande fel-
NULL Nyckelord
NULL kan också användas som nyckelord när man utför booleska operationer på värden som inkluderar NULL. Nyckelordet "IS/NOT" används tillsammans med NULL-ordet för sådana ändamål. Den grundläggande syntaxen när null används som nyckelord är följande
`comlumn_name' IS NULL `comlumn_name' NOT NULL
HÄR
- "ÄR INGET är nyckelordet som utför den booleska jämförelsen. Det returnerar sant om det angivna värdet är NULL och false om det angivna värdet inte är NULL.
- "INTE NULL"är nyckelordet som utför den booleska jämförelsen. Det returnerar sant om det angivna värdet inte är NULL och falskt om det angivna värdet är NULL.
Låt oss nu titta på ett praktiskt exempel som använder nyckelordet NOT NULL för att eliminera alla kolumnvärden som har nollvärden.
Om vi fortsätter med exemplet ovan, anta att vi behöver uppgifter om medlemmar vars kontaktnummer inte är null. Vi kan utföra en fråga som
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Att utföra ovanstående fråga ger endast poster där kontaktnumret inte är null.
Anta att vi vill ha medlemsregister där kontaktnumret är null. Vi kan använda följande fråga
SELECT * FROM `members` WHERE contact_number IS NULL;
Genom att utföra ovanstående fråga får du medlemsuppgifter vars kontaktnummer är NULL
membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Jämför null-värden
Trevärdeslogik – att utföra booleska operationer på villkor som involverar NULL kan antingen returnera "Okänd", "Sant" eller "False".
Till exempel, med nyckelordet "IS NULL". när man gör jämförelseoperationer involverar NULL kan antingen återvända sann or falsk. Att använda andra jämförelseoperatorer ger avkastning "Okänd" (NULL).
Anta att du jämför nummer fem med 5
SELECT 5 =5;
Frågeresultatet är 1 vilket betyder TRUE
5 =5 |
---|
1 |
Låt oss göra samma operation med NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Låt oss titta på ett annat exempel
SELECT 5 > 5;
5 > 5 |
---|
0 |
Frågeresultatet är 0 vilket betyder FALSK
Låt oss titta på samma exempel med NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Låt oss använda nyckelordet IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Frågeresultatet är 0 vilket är FALSK
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Frågeresultatet är 1 vilket är TRUE
Sammanfattning
- NULL är en värdeplatshållare för valfria tabellfält.
- MySQL behandlar NULL-värdet annorlunda än andra datatyper. NULL-värdena när de används i ett villkor utvärderas till det falska booleska värdet.
- Den logiska NOT-operationen används för att testa för booleska värden och utvärderas till sant om det booleska värdet är falskt och falskt om det booleska värdet är sant.
- NOT NULL-satsen används för att eliminera NULL-värden från en resultatuppsättning
- Att utföra aritmetiska operationer på NULL-värden returnerar alltid NULL-resultat.
- Jämförelseoperatorerna som [, =, etc.] kan inte användas för att jämföra NULL-värden.