In SQL is Null zowel een waarde als een trefwoord. Laten we eerst naar de NULL-waarde kijken -
Null als waarde
In eenvoudige bewoordingen is NULL gewoon een plaatshouder voor gegevens die niet bestaan. Bij het uitvoeren van invoegbewerkingen op tabellen, zullen dit momenten zijn waarop sommige veldwaarden niet beschikbaar zullen zijn.
Om te voldoen aan de vereisten van echte relationele databasebeheersystemen, gebruikt MySQL NULL als plaatshouder voor de waarden die niet zijn ingediend. De onderstaande schermafbeelding laat zien hoe NULL-waarden eruitzien in de database.
Laten we nu eens kijken naar enkele basisprincipes voor 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 met NULL retourneren altijd NULL , bijvoorbeeld 69 + NULL = NULL.
- Alle statistische functies zijn alleen van invloed op rijen die geen NULL-waarden hebben .
Laten we nu demonstreren hoe de count-functie null-waarden behandelt. Laten we eens kijken naar de huidige inhoud van de ledentabel-
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 | 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 |
Laten we alle leden tellen die hun contactnummer hebben bijgewerkt
SELECT COUNT(contact_number) FROM `members`;
Het uitvoeren van de bovenstaande zoekopdracht geeft ons 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 onwaar is. De operator NOT retourneert false als de geteste voorwaarde waar is
Staat |
NOT Operator Resultaat |
Klopt |
Vals |
Vals |
Klopt |
Waarom NOT null gebruiken?
Er zullen gevallen zijn waarin we berekeningen moeten uitvoeren op een set van queryresultaten en de waarden moeten retourneren. Als u rekenkundige bewerkingen uitvoert op kolommen met de waarde NULL, worden null-resultaten geretourneerd. Om dergelijke situaties te voorkomen, kunnen we het gebruik van de NOT NULL-clausule gebruiken om de resultaten waarop onze gegevens werken te beperken.
NOT NULL Waarden
Stel 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 op een bepaald veld gebruiken bij het maken van de tabel.
In het onderstaande voorbeeld wordt een nieuwe tabel gemaakt met de gegevens van de werknemer. Het personeelsnummer dient altijd te worden opgegeven
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');
Het uitvoeren van het bovenstaande script in MySQL-workbench geeft de volgende foutmelding -
NULL Trefwoorden
NULL kan ook als trefwoord worden gebruikt bij het uitvoeren van Booleaanse bewerkingen op waarden die NULL bevatten. Het sleutelwoord "IS / NOT" wordt voor dergelijke doeleinden gebruikt in combinatie met het NULL-woord. De basissyntaxis wanneer null als trefwoord wordt gebruikt, is als volgt
`comlumn_name' IS NULL`comlumn_name' NOT NULL
HIER
- "IS NULL" is het sleutelwoord dat de Booleaanse vergelijking uitvoert. Het retourneert true als de opgegeven waarde NULL is en false als de opgegeven waarde niet NULL is.
- "NOT NULL" is het sleutelwoord dat de Booleaanse vergelijking uitvoert. Het retourneert true als de opgegeven waarde niet NULL is en false als de opgegeven waarde null is.
Laten we nu eens kijken naar een praktisch voorbeeld dat het NOT NULL-sleutelwoord gebruikt om alle kolomwaarden met null-waarden te elimineren.
Als we doorgaan met het bovenstaande voorbeeld, stel dat we gegevens nodig hebben van leden waarvan het contactnummer niet nul is. We kunnen een zoekopdracht uitvoeren zoals
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Het uitvoeren van de bovenstaande zoekopdracht levert alleen records op waarvan het contactnummer niet nul is.
Stel dat we ledenrecords willen waarvan het contactnummer nul is. We kunnen de volgende vraag gebruiken
SELECT * FROM `members` WHERE contact_number IS NULL;
Als u de bovenstaande zoekopdracht uitvoert, krijgt u de details van het lid 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 | 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 |
Null-waarde s vergelijken
Logica met drie waarden - het uitvoeren van Booleaanse bewerkingen op voorwaarden waarbij NULL betrokken is, kan "Unknown", "True" of "False" retourneren .
Als u bijvoorbeeld het sleutelwoord "IS NULL" gebruikt bij het uitvoeren van vergelijkingsbewerkingen met NULL, kan dit true of false retourneren . Als u andere vergelijkingsoperatoren gebruikt, wordt "Unknown" (NULL) geretourneerd .
Stel dat je nummer vijf met 5 vergelijkt
SELECT 5 =5;
Het zoekresultaat 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 zoekresultaat 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 ONWAAR is
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Het zoekresultaat is 1 wat WAAR is
Overzicht
- NULL is een plaatshouder voor waarde 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 NOT logische operatie wordt gebruikt om te testen op Booleaanse waarden en evalueert naar true als de Booleaanse waarde false is en false als de Booleaanse waarde true is.
- De NOT NULL-clausule wordt gebruikt om NULL-waarden uit een resultaatset 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.