MySQL ON NULL & EI OLE NULL koos näidetega
⚡ Nutikas kokkuvõte
MySQL IS NULL and IS NOT NULL are comparison keywords that test whether a column holds a missing value. NULL marks absent data, behaves differently from zero or an empty string, and requires dedicated operators for reliable filtering.

In SQL, NULL is both a value and a keyword. Let us look into the NULL value first.
What is NULL in MySQL?
Lihtsamalt öeldes NULL is a place holder for data that does not exist. When performing insert operations on tables, there will be times when some field values are not available.
Tõeliste relatsiooniliste andmebaaside haldussüsteemide nõuete täitmiseks MySQL uses NULL as the place holder for the values that have not been submitted. The screenshot below shows how NULL values look in a database table.
Notice that the empty cells are marked NULL, not blank text and not zero. Before going further, look at some of the basics of NULL.
- NULL ei ole andmetüüp – see tähendab, et seda ei tuvastata kui "int", "date" või mis tahes muud määratletud andmetüüpi.
- Aritmeetilised toimingud kaasates NULL alati tagasta NULL, for example, 69 + NULL = NULL.
- sild koondfunktsioonid ignore rows that hold NULL values. The one exception is COUNT(*), which counts every row regardless of NULL.
How Aggregate Functions Treat NULL
This rule changes the answers that reporting queries return, so let us prove it. Start with the current contents of the members table.
SELECT * FROM `members`;
Ülaltoodud skripti täitmine annab meile järgmised tulemused.
| 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 |
The highlighted contact_ number column holds nine rows in total, but two of them are NULL. Let us count all members who have updated their contact number.
SELECT COUNT(contact_number) FROM `members`;
Ülaltoodud päringu täitmine annab meile järgmised tulemused.
| COUNT(contact_number) |
|---|
| 7 |
Märge: the answer is 7 and not 9, because the two NULL values were not included. Running COUNT(*) on the same table would return 9, since COUNT(*) counts rows rather than values.
NOT NULL Väärtused
A safer approach is to stop NULL from entering mandatory columns at all. That is the job of the NOT NULL constraint.
What is the NOT Operator?
The NOT logical operator is used to test Boolean conditions, and it returns true if the condition is false. The NOT operator returns false if the condition being tested is true.
| Tingimus | EI Operator Tulemus |
|---|---|
| Tõsi | Vale |
| Vale | Tõsi |
Why use NOT NULL?
There will be cases when we have to perform computations on a query result set and return the values. Performing any arithmetic operation on a column that holds a NULL value returns a NULL result. In order to avoid such situations, we can employ the NOT NULL clause to limit the results on which our data operates.
Creating a Table with a NOT NULL Column
Let us suppose that we want to create a table with certain fields that should always be supplied with values when inserting new rows. We can use the NOT NULL clause on a given field when creating the table.
The example shown below creates a new table that contains employee data. The employee number should always be supplied.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Let us now try to insert a new record without specifying the employee number and see what happens.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Ülaltoodud skripti käivitamine MySQL Workbench gives the following error, because the mandatory column was left out.
IS NULL and IS NOT NULL Keywords
The constraint blocks new NULL values. To work with NULL values that already exist, NULL is used as a keyword. The syntax is as follows.
column_name IS NULL column_name IS NOT NULL
SIIN
- "ON NULL" on märksõna, mis teostab Boole'i võrdlust. Tagastab tõene, kui esitatud väärtus on NULL, ja false, kui esitatud väärtus ei ole NULL.
- “IS NOT NULL” is the keyword that performs the opposite comparison. It returns true if the supplied value is not NULL and false if the supplied value is NULL.
Let us look at a practical example that uses the IS NOT NULL keyword to eliminate all the rows that hold NULL values in a column.
Continuing with the members table above, suppose we need the details of members whose contact number is not NULL. We can execute a query like this.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Executing the above query returns only the seven records where the contact number is present, which matches the COUNT result from the previous section.
Now suppose we want the opposite: the member records where the contact number is missing. We can use the following query.
SELECT * FROM `members` WHERE contact_number IS NULL;
Executing the above query gives the two member records whose contact number is NULL.
| 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 |
Hoiatus: a condition such as WHERE contact_number = NULL returns an empty result set, even though NULL values exist. The equality operator can never match NULL, so IS NULL is the only correct test.
Comparing NULL Values with Three-Valued Logic
Kolme väärtusega loogika – performing Boolean operations on conditions that involve NULL can return “Unknown”, “True” or “False”.
Using the “IS NULL” keyword võrdlustoimingute tegemisel kaasates NULL Tulu tõsi or vale. Using the other comparison operators returns “Unknown” (NULL). The table below compares each expression side by side.
| Väljendus | Tulemus | Tähendus |
|---|---|---|
| SELECT 5 = 5; | 1 | TRUE |
| SELECT NULL = NULL; | NULL | UNKNOWN |
| SELECT 5 > 5; | 0 | FALSE |
| SELECT NULL > NULL; | NULL | UNKNOWN |
| SELECT 5 IS NULL; | 0 | FALSE |
| SELECT NULL IS NULL; | 1 | TRUE |
Compare the number five with itself, then repeat the operation with NULL.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
The first result is 1 (TRUE). The second is NULL, because MySQL cannot state that one unknown value equals another unknown value. Now use the IS NULL keyword on the same values.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
This time the answers are definite: 0 (FALSE) and 1 (TRUE). Only the IS NULL and IS NOT NULL keywords return a definite answer when NULL is involved.


