MySQL ER NULL & ER IKKE NULL Opplæring med EKSEMPLER
I SQL er Null både en verdi og et nøkkelord. La oss først se på NULL-verdien –
Null som en verdi
Enkelt sagt er NULL ganske enkelt en plassholder for data som ikke eksisterer. Når du utfører innsettingsoperasjoner på tabeller, vil det være tidspunkter da noen feltverdier ikke vil være tilgjengelige.
For å møte kravene til ekte relasjonsdatabaseadministrasjonssystemer, MySQL bruker 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å noe av det grunnleggende for NULL før vi går videre inn i diskusjonen.
- NULL er ikke en datatype – dette betyr at den ikke gjenkjennes som en "int", "dato" eller noen annen definert datatype.
- Aritmetiske operasjoner involverer NULL alltid returner NULL for eksempel 69 + NULL = NULL.
- Alle aggregerte 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ørelse av 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 | 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 |
La oss telle alle medlemmer som har oppdatert kontaktnummeret sitt
SELECT COUNT(contact_number) FROM `members`;
Utførelse av spørringen ovenfor gir oss følgende resultater.
COUNT(contact_number) |
---|
7 |
Merk: Verdier som er NULL er ikke inkludert
Hva er IKKE?
Den logiske NOT-operatoren brukes til å teste for boolske forhold og returnerer sann hvis betingelsen er usann. NOT-operatoren returnerer usann hvis betingelsen som ble testet er sann
Betingelse | IKKE Operator Resultat |
---|---|
ekte | Falsk |
Falsk | ekte |
Hvorfor bruke NOT null?
Det vil være tilfeller der vi må utføre beregninger på et søkeresultatsett og returnere verdiene. Hvis du utfører aritmetiske operasjoner på kolonner som har NULL-verdien, returneres null-resultater. 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 du setter inn nye rader i en tabell. Vi kan bruke NOT NULL-leddet på et gitt felt når vi lager tabellen.
Eksemplet nedenfor oppretter en ny tabell som inneholder ansattes data. Ansattnummeret 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 den ansattes navn og se hva som skjer.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Utfører skriptet ovenfor i MySQL arbeidsbenken gir følgende feil-
NULL Nøkkelord
NULL kan også brukes som et nøkkelord når du utfører boolske operasjoner på verdier som inkluderer NULL. Nøkkelordet "IS/NOT" brukes sammen med NULL-ordet for 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
- "ER NULL er nøkkelordet som utfører den boolske sammenligningen. Den returnerer true hvis den oppgitte verdien er NULL og usann hvis den oppgitte verdien ikke er NULL.
- "IKKE NULL"er nøkkelordet som utfører den boolske sammenligningen. Den returnerer true hvis den oppgitte verdien ikke er NULL og usann hvis den oppgitte verdien er null.
La oss nå se på et praktisk eksempel som bruker nøkkelordet NOT NULL for å eliminere alle kolonneverdiene som har nullverdier.
Fortsetter med eksemplet ovenfor, anta at vi trenger detaljer om medlemmer hvis kontaktnummer ikke er null. Vi kan utføre en spørring som
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Utførelse av spørringen ovenfor gir bare poster der kontaktnummeret ikke er null.
Anta at vi ønsker medlemsregister der kontaktnummer er null. Vi kan bruke følgende forespørsel
SELECT * FROM `members` WHERE contact_number IS NULL;
Utførelse av søket 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 | 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 |
Sammenligning av nullverdier
Tre-verdi logikk – å utføre boolske operasjoner på forhold som involverer NULL kan enten returnere "Ukjent", "True" eller "False".
For eksempel, ved å bruke nøkkelordet "IS NULL". når du gjør sammenligningsoperasjoner involverer NULL kan enten returnere sant or falsk. Å bruke andre sammenligningsoperatører returnerer "Ukjent" (NULL).
Anta at du sammenligner nummer fem med 5
SELECT 5 =5;
Spørreresultatet er 1 som betyr SANN
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 som betyr FALSE
La oss se på samme eksempel med NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
La oss bruke søkeordet IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Spørreresultatet er 0 som er FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Spørreresultatet er 1 som er SANN
Oppsummering
- NULL er en verdiplassholder 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.
- NOT logisk operasjon brukes til å teste for boolske verdier og evalueres til sann hvis den boolske verdien er usann og usann hvis den boolske verdien er sann.
- NOT NULL-leddet brukes til å eliminere NULL-verdier fra et resultatsett
- Å utføre aritmetiske operasjoner på NULL-verdier returnerer alltid NULL-resultater.
- Sammenligningsoperatorene som [, = osv.] kan ikke brukes til å sammenligne NULL-verdier.