MySQL ER NULL & ER IKKE NULL Selvstudium med EKSEMPLER
I SQL er Null både en værdi og et nøgleord. Lad os først se på NULL-værdien –
Nul som værdi
Enkelt sagt er NULL simpelthen en pladsholder for data, der ikke eksisterer. Når du udfører indsættelseshandlinger på tabeller, vil det være tidspunkter, hvor nogle feltværdier ikke vil være tilgængelige.
For at opfylde kravene til ægte relationelle databasestyringssystemer, MySQL bruger NULL som pladsholder for de værdier, der ikke er indsendt. Skærmbilledet nedenfor viser, hvordan NULL-værdier ser ud i databasen.
Lad os nu se på nogle af det grundlæggende for NULL, før vi går videre ind i diskussionen.
- NULL er ikke en datatype – dette betyder, at den ikke genkendes som en "int", "dato" eller nogen anden defineret datatype.
- Aritmetiske operationer involverer NULL altid returner NULL for eksempel 69 + NULL = NULL.
- Alle samlede funktioner påvirker kun rækker, der ikke har NULL-værdier.
Lad os nu demonstrere, hvordan tællefunktionen behandler nulværdier. Lad os se det aktuelle indhold af medlemstabellen-
SELECT * FROM `members`;
Udførelse af ovenstående script giver os 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 |
Lad os tælle alle medlemmer, der har opdateret deres kontaktnummer
SELECT COUNT(contact_number) FROM `members`;
Udførelse af ovenstående forespørgsel giver os følgende resultater.
COUNT(contact_number) |
---|
7 |
Bemærk: Værdier, der er NULL, er ikke inkluderet
Hvad er IKKE?
Den NOT logiske operator bruges til at teste for booleske betingelser og returnerer sand, hvis betingelsen er falsk. NOT-operatoren returnerer falsk, hvis betingelsen, der blev testet, er sand
Betingelse | IKKE Operator Resultat |
---|---|
Sand | False |
False | Sand |
Hvorfor bruge NOT null?
Der vil være tilfælde, hvor vi bliver nødt til at udføre beregninger på et forespørgselsresultatsæt og returnere værdierne. Udførelse af aritmetiske operationer på kolonner, der har værdien NULL, returnerer null-resultater. For at undgå, at sådanne situationer opstår, kan vi bruge brugen af NOT NULL-klausulen til at begrænse de resultater, som vores data fungerer på.
IKKE NULL-værdier
Lad os antage, at vi vil oprette en tabel med bestemte felter, der altid skal forsynes med værdier, når der indsættes nye rækker i en tabel. Vi kan bruge NOT NULL-sætningen på et givet felt, når vi opretter tabellen.
Eksemplet nedenfor opretter en ny tabel, der indeholder medarbejderens data. Medarbejdernummeret skal altid oplyses
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Lad os nu prøve at indsætte en ny post uden at angive medarbejdernavnet og se, hvad der sker.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Udførelse af ovenstående script i MySQL workbench giver følgende fejl-
NULL søgeord
NULL kan også bruges som et nøgleord, når du udfører booleske operationer på værdier, der inkluderer NULL. Nøgleordet "IS/NOT" bruges sammen med NULL-ordet til sådanne formål. Den grundlæggende syntaks, når null bruges som et nøgleord, er som følger
`comlumn_name' IS NULL `comlumn_name' NOT NULL
HER
- "ER NULL er det nøgleord, der udfører den boolske sammenligning. Den returnerer sand, hvis den angivne værdi er NULL og falsk, hvis den angivne værdi ikke er NULL.
- "IKKE NULL"er det nøgleord, der udfører den boolske sammenligning. Den returnerer sand, hvis den angivne værdi ikke er NULL og falsk, hvis den angivne værdi er NULL.
Lad os nu se på et praktisk eksempel, der bruger nøgleordet NOT NULL til at eliminere alle kolonneværdier, der har nulværdier.
Fortsætter med eksemplet ovenfor, antag, at vi har brug for oplysninger om medlemmer, hvis kontaktnummer ikke er ugyldigt. Vi kan udføre en forespørgsel som
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Udførelse af ovenstående forespørgsel giver kun poster, hvor kontaktnummeret ikke er nul.
Antag, at vi ønsker medlemsregistre, hvor kontaktnummeret er nul. Vi kan bruge følgende forespørgsel
SELECT * FROM `members` WHERE contact_number IS NULL;
Udførelse af ovenstående forespørgsel giver medlemsoplysninger, 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 af nulværdier
Tre-værdi logik – at udføre booleske operationer på forhold, der involverer NULL, kan enten vende tilbage "Ukendt", "True" eller "False".
For eksempel: ved at bruge nøgleordet "ER NULL". når du laver sammenligningsoperationer involverer NULL kan enten vende tilbage sand or falsk. Brug af andre sammenligningsoperatører returnerer "Ukendt" (NULL).
Antag, at du sammenligner nummer fem med 5
SELECT 5 =5;
Forespørgselsresultatet er 1, hvilket betyder SAND
5 =5 |
---|
1 |
Lad os gøre den samme handling med NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Lad os se på et andet eksempel
SELECT 5 > 5;
5 > 5 |
---|
0 |
Forespørgselsresultatet er 0, hvilket betyder FALSK
Lad os se på samme eksempel ved at bruge NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Lad os bruge søgeordet IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Forespørgselsresultatet er 0, hvilket er FALSK
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Forespørgselsresultatet er 1, hvilket er SAND
Resumé
- NULL er en værdipladsholder for valgfri tabelfelter.
- MySQL behandler NULL-værdien anderledes end andre datatyper. NULL-værdierne, når de bruges i en betingelse, evalueres til den falske boolske værdi.
- Den IKKE logiske operation bruges til at teste for boolske værdier og evalueres til sand, hvis den boolske værdi er falsk, og falsk, hvis den boolske værdi er sand.
- NOT NULL-udtrykket bruges til at eliminere NULL-værdier fra et resultatsæt
- Udførelse af aritmetiske operationer på NULL-værdier returnerer altid NULL-resultater.
- Sammenligningsoperatorerne såsom [, = osv.] kan ikke bruges til at sammenligne NULL-værdier.