MySQL IS NULL & IS NOT NULL Tutorial met VOORBEELDEN
In SQL is Null zowel een waarde als een trefwoord. Laten we eerst naar de NULL-waarde kijken -
Nul als waarde
Simpel gezegd is NULL gewoon een tijdelijke aanduiding voor gegevens die niet bestaan. Bij het uitvoeren van invoegbewerkingen op tabellen, zullen er momenten zijn waarop sommige veldwaarden niet beschikbaar zijn.
Om te voldoen aan de eisen van echte relationele databasebeheersystemen, MySQL gebruikt NULL als tijdelijke aanduiding voor de waarden die niet zijn ingediend. De onderstaande schermafbeelding laat zien hoe NULL-waarden er in de database uitzien.
Laten we nu eens kijken naar enkele basisprincipes van NULL voordat we verder ingaan op de discussie.
- NULL is geen gegevenstype – dit betekent dat het niet wordt herkend als een “int”, “date” of enig ander gedefinieerd gegevenstype.
- Rekenkundige bewerkingen waarbij NULL altijd retourneer NULL bijvoorbeeld 69 + NULL = NULL.
- Alle geaggregeerde functies heeft alleen invloed op rijen die geen NULL-waarden hebben.
Laten we nu demonstreren hoe de count-functie nulwaarden behandelt. Laten we de huidige inhoud van de ledentabel bekijken-
SELECT * FROM `members`;
Het uitvoeren van het bovenstaande script geeft ons de volgende resultaten
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 |
Laten we alle leden tellen die hun contactnummer hebben bijgewerkt
SELECT COUNT(contact_number) FROM `members`;
Als u de bovenstaande query uitvoert, krijgt u de volgende resultaten.
COUNT(contact_number) |
---|
7 |
Opmerking: Waarden die NULL zijn, zijn niet opgenomen
Wat is niet?
De logische operator NOT wordt gebruikt om te testen op Booleaanse voorwaarden en retourneert true als de voorwaarde false is. De operator NOT retourneert false als de geteste voorwaarde true is
Conditie | NIET Operato Resultaat |
---|---|
Waar | Niet waar |
Niet waar | Waar |
Waarom NOT null gebruiken?
Er zullen gevallen zijn waarin we berekeningen moeten uitvoeren op een queryresultaatset en de waarden moeten retourneren. Het uitvoeren van rekenkundige bewerkingen op kolommen met de NULL-waarde retourneert null-resultaten. Om te voorkomen dat dergelijke situaties zich voordoen, kunnen we de NOT NULL-clausule gebruiken om de resultaten te beperken waarop onze gegevens worden uitgevoerd.
NIET NULL-waarden
Laten we aannemen dat we een tabel willen maken met bepaalde velden die altijd van waarden moeten worden voorzien bij het invoegen van nieuwe rijen in een tabel. We kunnen de NOT NULL-clausule voor een bepaald veld gebruiken bij het maken van de tabel.
In het onderstaande voorbeeld wordt een nieuwe tabel gemaakt die de gegevens van de werknemer bevat. Het personeelsnummer dient altijd te worden vermeld
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Laten we nu proberen een nieuw record in te voegen zonder de naam van de werknemer op te geven en kijken wat er gebeurt.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Voer het bovenstaande script uit in MySQL workbench geeft de volgende foutmelding:
NULL-zoekwoorden
NULL kan ook worden gebruikt als trefwoord bij het uitvoeren van Booleaanse bewerkingen op waarden die NULL bevatten. Het trefwoord "IS/NOT" wordt voor dergelijke doeleinden gebruikt in combinatie met het woord NULL. De basissyntaxis wanneer null als trefwoord wordt gebruikt, is als volgt
`comlumn_name' IS NULL `comlumn_name' NOT NULL
HIER
- "IS NIETS is het trefwoord dat de Booleaanse vergelijking uitvoert. Het retourneert true als de opgegeven waarde NULL is en false als de opgegeven waarde niet NULL is.
- "NIET NUL"is het trefwoord dat de Booleaanse vergelijking uitvoert. Het retourneert true als de opgegeven waarde niet NULL is en false als de opgegeven waarde nul is.
Laten we nu eens kijken naar een praktisch voorbeeld waarin het trefwoord NOT NULL wordt gebruikt om alle kolomwaarden met nulwaarden te elimineren.
Als we doorgaan met het bovenstaande voorbeeld, veronderstel dat we details nodig hebben van leden waarvan het contactnummer niet null is. We kunnen een query uitvoeren zoals
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Als u de bovenstaande query uitvoert, worden alleen records weergegeven waarvan het contactnummer niet nul is.
Stel dat we ledenrecords willen waarbij het contactnummer nul is. We kunnen de volgende query gebruiken
SELECT * FROM `members` WHERE contact_number IS NULL;
Als u de bovenstaande query uitvoert, krijgt u lidgegevens waarvan het contactnummer NULL is
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 |
Nulwaarden vergelijken
Logica met drie waarden – het uitvoeren van Booleaanse bewerkingen op voorwaarden die NULL omvatten, kan ofwel retourneren ‘Onbekend’, ‘Waar’ of ‘Niet waar’.
Bijvoorbeeld met behulp van het trefwoord “IS NULL”. bij het uitvoeren van vergelijkingsbewerkingen waarbij NULL betrokken is kan beide terugkeren waar or vals. Het gebruik van andere vergelijkingsoperatoren retourneert “Onbekend” (NULL).
Stel dat je nummer vijf vergelijkt met 5
SELECT 5 =5;
Het resultaat van de zoekopdracht is 1, wat WAAR betekent
5 =5 |
---|
1 |
Laten we dezelfde bewerking uitvoeren met NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Laten we naar een ander voorbeeld kijken
SELECT 5 > 5;
5 > 5 |
---|
0 |
Het resultaat van de zoekopdracht is 0, wat ONWAAR betekent
Laten we naar hetzelfde voorbeeld kijken met NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Laten we het trefwoord IS NULL gebruiken
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Het resultaat van de zoekopdracht is 0, wat FALSE is
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Het resultaat van de zoekopdracht is 1, wat WAAR is
Samenvatting
- NULL is een waardeplaatshouder voor optionele tabelvelden.
- MySQL behandelt de NULL-waarde anders dan andere gegevenstypen. De NULL-waarden die in een voorwaarde worden gebruikt, resulteren in de valse Booleaanse waarde.
- De logische functie NOT wordt gebruikt om te testen op Booleaanse waarden en evalueert naar true als de Booleaanse waarde false is en naar false als de Booleaanse waarde true is.
- De NOT NULL-clausule wordt gebruikt om NULL-waarden uit een resultatenset te verwijderen
- Het uitvoeren van rekenkundige bewerkingen op NULL-waarden levert altijd NULL-resultaten op.
- De vergelijkingsoperatoren zoals [, =, etc.] kunnen niet worden gebruikt om NULL-waarden te vergelijken.