I SQL är Null både ett värde och ett nyckelord. Låt oss titta på NULL-värdet först -
Null som ett värde
Enkelt uttryckt är NULL helt enkelt en platshållare för data som inte finns. När du gör insättningsoperationer i tabeller kommer de att tider då vissa fältvärden inte är tillgängliga.
För att uppfylla kraven i riktiga relationshanteringssystem använder MySQL NULL som platshållare för de värden som inte har skickats. 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 - det betyder att den inte känns igen som ett "int", "datum" eller någon annan definierad datatyp.
- Aritmetiska operationer som involverar NULL returnerar alltid NULL till exempel, 69 + NULL = NULL.
- Alla aggregerade funktioner påverkar endast rader som inte har NULL-värden .
Låt oss nu visa hur räkningsfunktionen behandlar nollvärden. Låt oss se det aktuella innehållet i medlemstabellen-
SELECT * FROM `members`;
Att utföra ovanstående skript 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 utfö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 INTE logiska operatören används för att testa för booleska förhållanden och returnerar true om villkoret är falskt. NOT-operatören returnerar falskt om villkoret som testats är sant
Tillstånd |
INTE operatörsresultat |
Sann |
Falsk |
Falsk |
Sann |
Varför använda INTE null?
Det kommer att finnas fall då vi måste utföra beräkningar på en sökresultatuppsättning och returnera värdena. Genom att utföra alla aritmetiska operationer på kolumner som har NULL-värdet returneras nollresultat. För att undvika sådana situationer kan vi använda användningen av NOT NULL-klausulen för att begränsa de resultat som våra uppgifter 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 vi sätter in nya rader i en tabell. Vi kan använda NOT NULL-satsen i ett visst fält när vi skapar tabellen.
Exemplet som visas nedan skapar en ny tabell som innehåller anställdas data. Antalet anställda 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 medarbetarnamnet och se vad som händer.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Exekvering av ovanstående skript i MySQL-arbetsbänk ger följande fel -
NULL Nyckelord
NULL kan också användas som nyckelord när du utför booleska operationer på värden som inkluderar NULL. Nyckelordet "IS / NOT" används i kombination 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
- "IS NULL" är nyckelordet som utför den booleska jämförelsen. Det returnerar sant om det angivna värdet är NULL och falskt om det angivna värdet inte är NULL.
- "INTE NULL" är nyckelordet som utför den booleska jämförelsen. Det returnerar true om det angivna värdet inte är NULL och false 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.
Fortsätt med exemplet ovan, antar att vi behöver information om medlemmar vars kontaktnummer inte är noll. 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 bara poster där kontaktnumret inte är null.
Antag att vi vill ha medlemsregister där kontaktnumret är noll. 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 medlemsinformation 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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öra nollvärde s
Trevärdeslogik - att utföra booleska operationer under förhållanden som involverar NULL kan antingen returnera "Okänd", "Sann" eller "Falsk".
Om du till exempel använder nyckelordet "IS NULL" när du gör jämförelseåtgärder med NULL kan du antingen returnera true eller false . Användning av andra jämförelseoperatörer returnerar "Okänd" (NULL).
Antag att du jämför nummer fem med 5
SELECT 5 =5;
Frågeresultatet är 1 vilket betyder SANT
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 FALSKT
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 FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Frågeresultatet är 1 vilket är SANT
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 tillstånd utvärderas till det falska booleska värdet.
- Den INTE logiska funktionen 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örelsesoperatorerna som [, =, etc.] kan inte användas för att jämföra NULL-värden.