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.

  • ๐Ÿงฉ Kerndefinitie: NULL is een placeholder voor gegevens die niet bestaan. Het is geen gegevenstype en het is ook niet het getal nul.
  • โž— Rekenkundig gedrag: Elke rekenkundige expressie die NULL bevat, retourneert NULL, dus 69 + NULL resulteert in NULL in plaats van 69.
  • ๐Ÿ“Š Totale impact: COUNT(column) en andere aggregatiefuncties slaan rijen met NULL-waarden over, terwijl COUNT(*) elke rij in de tabel telt.
  • ???? NIET NULL-beperking: Door een kolom als NOT NULL te declareren, wordt elke invoeging geweigerd die geen waarde bevat, wat verplichte velden zoals identificatoren beschermt.
  • ๐Ÿ” Correcte filtering: IS NULL en IS NOT NULL zijn de enige betrouwbare tests, omdat de gelijkheidsoperator nooit overeenkomt met een NULL-waarde.
  • โ€‹ Driewaardige logica: Vergelijkingen met NULL geven UNKNOWN terug, dus SELECT NULL = NULL produceert NULL in plaats van TRUE.

MySQL IS NULL en IS NIET NULL

In SQL is NULL zowel een waarde als een sleutelwoord. Laten we eerst eens naar de waarde NULL kijken.

MySQL IS NUL EN IS NIET NUL

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.

Nul als waarde

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 email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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.

NIET NULL-waarden

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 email
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.

Veelgestelde vragen

Nul is een getal en een lege tekenreeks is tekst, dus beide voldoen aan de gelijkheidstoets. NULL betekent dat er helemaal geen waarde is opgegeven, vandaar dat het alleen reageert op IS NULL en IS NOT NULL.

IFNULL(column, 'N/A') retourneert de vervanging wanneer de kolom NULL is. COALESCE(a, b, c) retourneert het eerste argument dat niet NULL is. Beide zijn nuttig binnen MySQL functies en rapporten.

Nee. MySQL De NOT NULL-eigenschap wordt automatisch toegepast op elke primaire sleutelkolom, omdat een sleutel die een rij identificeert niet mag ontbreken. Een UNIQUE-index werkt anders en staat wel meerdere NULL-waarden toe.

Meestal wel. AI-assistenten in tools zoals MySQL Werkbank Verander "leden zonder telefoonnummer" in een WHERE-clausule (kolom is NULL). RevBekijk het filter, want een gelijkheidstest met NULL geeft stilzwijgend geen resultaat.

Vaak wel. AI-reviewtools signaleren fouten zoals vergelijkingen met NULL, een SELECT Dat middelt een kolom met NULL-waarden en lijsten die NIET in NULL-waarden voorkomen. Het uiteindelijke oordeel ligt bij degene die de gegevens kent.

Vat dit bericht samen met: