I SQL er Null både en værdi såvel som et nøgleord. Lad os se på NULL-værdien først -
Null som værdi
Enkelt sagt er NULL simpelthen en pladsholder for data, der ikke findes. Når du udfører indsatshandlinger i tabeller, vil de være tidspunkter, hvor nogle feltværdier ikke er tilgængelige.
For at imødekomme kravene i ægte relationelle databasestyringssystemer bruger MySQL 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 de grundlæggende for NULL, inden vi går videre ind i diskussionen.
- NULL er ikke en datatype - det betyder, at den ikke genkendes som en "int", "dato" eller nogen anden defineret datatype.
- Aritmetiske operationer, der involverer NULL, returnerer altid 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 i 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 | 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 |
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 IKKE logiske operatør bruges til at teste for boolske forhold og returnerer sand, hvis betingelsen er falsk. NOT-operatøren returnerer falsk, hvis den testede tilstand er sand
Tilstand |
IKKE operatørresultat |
Sand |
Falsk |
Falsk |
Sand |
Hvorfor bruge IKKE 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 NULL-værdien, returnerer nulresultater. For at undgå, at sådanne situationer opstår, kan vi anvende NOT NULL-klausulen for 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 have værdier, når der indsættes nye rækker i en tabel. Vi kan bruge NOT NULL-klausulen på et givet felt, når vi opretter tabellen.
Eksemplet nedenfor opretter en ny tabel, der indeholder medarbejderens data. Medarbejdernummeret skal altid angives
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 specificere 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 -
NUL Nøgleord
NULL kan også bruges som nøgleord, når du udfører boolske operationer på værdier, der inkluderer NULL. Nøgleordet "ER / IKKE" bruges i forbindelse med NULL-ordet til sådanne formål. Den grundlæggende syntaks, når null bruges som nøgleord, er som følger
`comlumn_name' IS NULL`comlumn_name' NOT NULL
HER
- "IS NULL" er nøgleordet, der udfører den boolske sammenligning. Det returnerer sandt, hvis den leverede værdi er NULL og falsk, hvis den leverede værdi ikke er NULL.
- "IKKE NULL" er nøgleordet, der udfører den boolske sammenligning. Det returnerer sandt, hvis den leverede værdi ikke er NULL og falsk, hvis den leverede værdi er nul.
Lad os nu se på et praktisk eksempel, der bruger NOT NULL-nøgleordet til at eliminere alle kolonneværdier, der har nulværdier.
Fortsæt med eksemplet ovenfor, antag, at vi har brug for detaljer om medlemmer, hvis kontaktnummer ikke er nul. 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 vil have medlemsoptegnelser, 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 | 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 af nulværdi s
Tre-værdi-logik - udførelse af boolske operationer under forhold, der involverer NULL, kan enten returnere "Ukendt", "Sandt" eller "Falsk".
For eksempel kan brug af nøgleordet "IS NULL" ved sammenligning med NULL enten returnere true eller false . 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 udføre den samme operation 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å det samme eksempel ved hjælp af 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, som er SAND
Resumé
- NULL er en pladsholder til valgfri tabelfelter.
- MySQL behandler NULL-værdien forskelligt fra andre datatyper. NULL-værdierne, når de anvendes i en tilstand, evalueres til den falske boolske værdi.
- Den IKKE logiske funktion 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-klausulen 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.