MySQL IS NULL & IS NOT NULL met voorbeelden
โก Slimme samenvatting
MySQL IS NULL en IS NOT NULL zijn vergelijkingssleutelwoorden die testen of een kolom een โโontbrekende waarde bevat. NULL geeft aan dat er geen gegevens zijn, gedraagt โโzich anders dan nul of een lege tekenreeks en vereist specifieke operatoren voor betrouwbare filtering.

In SQL is NULL zowel een waarde als een sleutelwoord. Laten we eerst eens naar de waarde NULL kijken.
Wat is NULL in MySQL?
In simpele termen, NULL is een placeholder voor gegevens die niet bestaan.Bij het invoegen van gegevens in tabellen kan het voorkomen dat bepaalde veldwaarden niet beschikbaar zijn.
Om te voldoen aan de eisen van echte relationele databasebeheersystemen, MySQL NULL wordt gebruikt als placeholder voor waarden die niet zijn ingediend. De onderstaande schermafbeelding laat zien hoe NULL-waarden eruitzien in een databasetabel.
Merk op dat de lege cellen zijn gemarkeerd als NULL, niet als lege tekst en niet als nul. Voordat we verdergaan, bekijk eerst een aantal basisprincipes van NULL.
- 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.
- De meeste geaggregeerde functies Negeer rijen die NULL-waarden bevatten.De enige uitzondering is COUNT(*), die elke rij telt, ongeacht of deze NULL is.
Hoe aggregatiefuncties omgaan met NULL-waarden
Deze regel verandert de antwoorden die rapportagequery's retourneren, dus laten we dat bewijzen. Begin met de huidige inhoud van de ledentabel.
SELECT * FROM `members`;
Als u bovenstaand script uitvoert, krijgt u 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 |
De gemarkeerde kolom 'contact_number' bevat in totaal negen rijen, maar twee daarvan zijn NULL. 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 |
Let op: Het antwoord is 7 en niet 9, omdat de twee NULL-waarden niet zijn meegerekend. Als je COUNT(*) op dezelfde tabel uitvoert, krijg je 9 als resultaat, omdat COUNT(*) rijen telt in plaats van waarden.
NIET NULL-waarden
Een veiligere aanpak is om te voorkomen dat NULL-waarden รผberhaupt in verplichte kolommen terechtkomen. Dat is de taak van de NOT NULL-beperking.
Wat is de NIET OperaTor?
De logische operator NOT wordt gebruikt om Booleaanse voorwaarden te testen en retourneert waar als de voorwaarde onwaar is. De NOT-operator retourneert onwaar als de geteste voorwaarde waar is.
| Staat van het product | NIET Operato Resultaat |
|---|---|
| Waar | Niet waar |
| Niet waar | Waar |
Waarom NOT NULL gebruiken?
Er zullen gevallen zijn waarin we berekeningen moeten uitvoeren op een queryresultaat en de waarden moeten retourneren. Het uitvoeren van een rekenkundige bewerking op een kolom die een NULL-waarde bevat, resulteert in een NULL-resultaat. Om dergelijke situaties te voorkomen, kunnen we de NOT NULL-clausule gebruiken om de resultaten waarop onze gegevens werken te beperken.
Een tabel maken met een kolom die niet null mag zijn.
Stel dat we een tabel willen maken met bepaalde velden die altijd een waarde moeten bevatten bij het invoegen van nieuwe rijen. We kunnen de NOT NULL-clausule gebruiken voor een bepaald veld bij het aanmaken van de tabel.
Het onderstaande voorbeeld toont een nieuwe tabel met werknemersgegevens. Het werknemersnummer moet altijd worden ingevuld.
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 het personeelsnummer 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 Werkbank Geeft de volgende foutmelding, omdat de verplichte kolom is weggelaten.
IS NULL en IS NOT NULL trefwoorden
De beperking voorkomt dat er nieuwe NULL-waarden worden aangemaakt. Om met reeds bestaande NULL-waarden te werken, wordt NULL als trefwoord gebruikt. De syntax is als volgt.
column_name IS NULL column_name IS 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.
- โIS NOT NULLโ `is` is het sleutelwoord dat de omgekeerde vergelijking uitvoert. Het retourneert `true` als de opgegeven waarde niet NULL is en `false` als de opgegeven waarde wel NULL is.
Laten we een praktisch voorbeeld bekijken waarin het trefwoord IS NOT NULL wordt gebruikt om alle rijen met NULL-waarden in een kolom te verwijderen.
Laten we, voortbordurend op de bovenstaande ledentabel, de gegevens opvragen van leden waarvan het contactnummer niet NULL is. We kunnen hiervoor een query uitvoeren zoals deze.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Het uitvoeren van de bovenstaande query levert slechts de zeven records op waarin het contactnummer aanwezig is, wat overeenkomt met het COUNT-resultaat uit de vorige sectie.
Stel nu dat we het tegenovergestelde willen: de ledengegevens waar het contactnummer ontbreekt. We kunnen de volgende query gebruiken.
SELECT * FROM `members` WHERE contact_number IS NULL;
Het uitvoeren van bovenstaande query levert de twee ledenrecords op waarvan het contactnummer NULL is.
| membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Waarschuwing: Een voorwaarde zoals WHERE contact_number = NULL levert een lege resultatenset op, ook al bestaan โโer NULL-waarden. De gelijkheidsoperator kan nooit overeenkomen met NULL, dus IS NULL is de enige correcte test.
NULL-waarden vergelijken met driewaardige logica
Logica met drie waarden โ het uitvoeren van Booleaanse bewerkingen op voorwaarden die NULL bevatten, kan resulteren in โOnbekendโ, โWaarโ of โOnwaarโ.
Het trefwoord โIS NULLโ gebruiken bij het uitvoeren van vergelijkingsbewerkingen waarbij NULL betrokken is Retourneren waar or valsHet gebruik van de andere vergelijkingsoperatoren retourneert โOnbekendโ (NULL)De onderstaande tabel vergelijkt elke uitdrukking naast elkaar.
| Expressie | Resultaat | Betekenis |
|---|---|---|
| SELECTEER 5 = 5; | 1 | TRUE |
| SELECT NULL = NULL; | NULL | ONBEKEND |
| SELECTEER 5 > 5; | 0 | Juist |
| SELECT NULL > NULL; | NULL | ONBEKEND |
| SELECT 5 IS NULL; | 0 | Juist |
| SELECT NULL IS NULL; | 1 | TRUE |
Vergelijk het getal vijf met zichzelf en herhaal de bewerking vervolgens met NULL.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
Het eerste resultaat is 1 (WAAR). Het tweede is NULL, omdat MySQL Je kunt niet stellen dat een onbekende waarde gelijk is aan een andere onbekende waarde. Gebruik nu het trefwoord IS NULL op dezelfde waarden.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
Deze keer zijn de antwoorden eenduidig: 0 (ONWAAR) en 1 (WAAR). Alleen de trefwoorden IS NULL en IS NOT NULL geven een eenduidig โโantwoord wanneer NULL een rol speelt.


