I SQL er Null både en verdi og et nøkkelord. La oss se på NULL-verdien først -
Null som en verdi
Enkelt sagt er NULL rett og slett en plassholder for data som ikke eksisterer. Når du utfører innsettingsoperasjoner på tabeller, vil de være tidspunkter når noen feltverdier ikke vil være tilgjengelige.
For å oppfylle kravene til ekte relasjonell databaseadministrasjonssystemer, bruker MySQL NULL som plassholder for verdiene som ikke er sendt inn. Skjermbildet nedenfor viser hvordan NULL-verdier ser ut i databasen.
La oss nå se på noen av de grunnleggende for NULL før vi går videre inn i diskusjonen.
- NULL er ikke en datatype - dette betyr at den ikke blir gjenkjent som en "int", "dato" eller noen annen definert datatype.
- Aritmetiske operasjoner som involverer NULL returnerer alltid NULL, for eksempel 69 + NULL = NULL.
- Alle samlede funksjoner påvirker bare rader som ikke har NULL-verdier .
La oss nå demonstrere hvordan tellefunksjonen behandler nullverdier. La oss se det nåværende innholdet i medlemstabellen-
SELECT * FROM `members`;
Å utføre skriptet ovenfor gir oss følgende resultater
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 |
La oss telle alle medlemmene som har oppdatert kontaktnummeret sitt
SELECT COUNT(contact_number) FROM `members`;
Å utføre spørringen ovenfor gir oss følgende resultater.
COUNT(contact_number) |
---|
7 |
Merk: Verdier som er NULL er ikke inkludert
Hva er ikke?
Den IKKE logiske operatoren brukes til å teste for boolske forhold og returnerer true hvis tilstanden er falsk. IKKE-operatøren returnerer falsk hvis tilstanden som er testet er oppfylt
Betingelse |
IKKE operatørresultat |
ekte |
Falsk |
Falsk |
ekte |
Hvorfor bruke IKKE null?
Det vil være tilfeller når vi må utføre beregninger på et spørresultatsett og returnere verdiene. Hvis du utfører aritmetiske operasjoner på kolonner som har NULL-verdien, returneres nullresultater. For å unngå at slike situasjoner oppstår, kan vi bruke bruken av NOT NULL-klausulen for å begrense resultatene som dataene våre fungerer på.
IKKE NULL Verdier
La oss anta at vi ønsker å lage en tabell med visse felt som alltid skal leveres med verdier når vi setter inn nye rader i en tabell. Vi kan bruke NOT NULL-setningen på et gitt felt når vi lager tabellen.
Eksemplet vist nedenfor oppretter en ny tabell som inneholder ansattes data. Antall ansatte skal alltid oppgis
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
La oss nå prøve å sette inn en ny post uten å spesifisere ansattens navn og se hva som skjer.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Å utføre skriptet ovenfor i MySQL arbeidsbenk gir følgende feil -
NULL Nøkkelord
NULL kan også brukes som nøkkelord når du utfører boolske operasjoner på verdier som inkluderer NULL. Nøkkelordet "ER / IKKE" brukes i forbindelse med NULL-ordet til slike formål. Den grunnleggende syntaksen når null brukes som nøkkelord er som følger
`comlumn_name' IS NULL`comlumn_name' NOT NULL
HER
- "IS NULL" er nøkkelordet som utfører den boolske sammenligningen. Det returnerer sant hvis den oppgitte verdien er NULL og falsk hvis den oppgitte verdien ikke er NULL.
- "NOT NULL" er nøkkelordet som utfører den boolske sammenligningen. Det returnerer sant hvis den oppgitte verdien ikke er NULL og falsk hvis den oppgitte verdien er null.
La oss nå se på et praktisk eksempel som bruker søkeordet NOT NULL for å eliminere alle kolonneverdiene som har nullverdier.
Fortsett med eksemplet ovenfor, anta at vi trenger detaljer om medlemmer hvis kontaktnummer ikke er null. Vi kan utføre et spørsmål som
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Å utføre spørringen ovenfor gir bare poster der kontaktnummeret ikke er null.
Anta at vi vil ha medlemsoppføringer der kontaktnummeret er null. Vi kan bruke følgende spørsmål
SELECT * FROM `members` WHERE contact_number IS NULL;
Å utføre spørringen ovenfor gir medlemsdetaljer hvis kontaktnummer er 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 |
Sammenligning av nullverdi s
Treverdilogikk - å utføre boolske operasjoner under forhold som involverer NULL kan enten returnere "Ukjent", "Sann" eller "Usann".
For eksempel kan bruk av "IS NULL" nøkkelord når du utfører sammenligningsoperasjoner som involverer NULL enten returnere true eller false . Bruk av andre sammenligningsoperatører returnerer "Ukjent" (NULL).
Anta at du sammenligner nummer fem med 5
SELECT 5 =5;
Spørreresultatet er 1 som betyr SANT
5 =5 |
---|
1 |
La oss gjøre den samme operasjonen med NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
La oss se på et annet eksempel
SELECT 5 > 5;
5> 5 |
---|
0 |
Spørreresultatet er 0, noe som betyr FALSE
La oss se på det samme eksemplet ved hjelp av NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Lar oss bruke IS NULL-nøkkelordet
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Spørreresultatet er 0 som er FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Søkeresultatet er 1 som er SANT
Sammendrag
- NULL er en verdi plassholder for valgfrie tabellfelt.
- MySQL behandler NULL-verdien annerledes enn andre datatyper. NULL-verdiene når de brukes i en tilstand, evalueres til den falske boolske verdien.
- Den IKKE logiske operasjonen brukes til å teste for boolske verdier og evalueres til sann hvis den boolske verdien er usann og falsk hvis den boolske verdien er sann.
- NOT NULL-setningen brukes til å eliminere NULL-verdier fra et resultatsett
- Å utføre aritmetiske operasjoner på NULL-verdier returnerer alltid NULL-resultater.
- Sammenligningsoperatørene som [, = osv.] Kan ikke brukes til å sammenligne NULL-verdier.