Null means missing or unknown value. Null is not equal to zero or blank space data in a column. Null is also not the same as an empty string. So to match a Null value we can use the IS NULL condition in our SQL statement to get the records from a database table. Here is an example.
NULL : In an exam some students got 0 mark and some have not appeared in the exam. Here for the absent students, we will use NULL, as no data exist for these students and at the same time we can't use 0 marks for them.
For all our examples we have modified our student table by making class and mark column to accept null and changed the data to add some null values. You can download and install a copy of this table to test in your database.
← SQL dump of student3 table
SELECT* FROM`student3` WHERE class IS NULL
This will display all the records which have NULL value for class column.
Similarly we can display all the records which do not have null value for the class. Like this
SELECT * FROM `student3` WHERE class IS NOT NULL
Now we will get all the records without having NULL value in class column
Making the column data to null
We can make all the class data ( or column ) equal to NULL by updating the record like this
update `student3` set class = null
We can't change the value of the column ( class here ) if the property is set to NOT NULL for the column. To make the column null for all the records we first have to make the table accept NULL value by updating the structure of the table.
ALTER TABLE `student3` CHANGE `class` `class` VARCHAR( 10 )
CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT ''
After this change we can add NULL value to the record.
Deleting records with null value
We can delete records for which some column has null value. Here it is
DELETE FROM student3 WHERE class IS NULL
As we know null value means unknown data so how to use the value ? A situation may come where we have to multiply or apply any other mathematical calculation on all the data of a column ( say Mark in our student table ) which have some null data also. For this we have to use different sql commands like IFNULL, COALESCE, NVL. We will learn in next Part.
FNULL, COALESCE, NVL
Output is NULL as NULL is not equal to NULL
We can’t compare null value with null value as Null value meaning is absence of a value. So in our student3 table we have some null values in class column, but they will not be included in the result.
SELECT * from student3 WHERE class <> 'Six'
The above query output will not include the rows with class column having NULL value.
NULL safe operators
MySQL gives us null safe operator <=> to give us null values. This will return 1 if both operands are NULL. This query will return all records having NULL value in class column.
SELECT * FROM student3 WHERE class <=> NULL
We will get three records as output as we have three records with class column having NULL data.
One of our record ( id =4 ) has null value for both class and mark column and one more record has 5 as mark and class. But this query will return only one row. ( why ? )
SELECT * FROM student3 where class=mark
My John Rob
Though we have NULL value for class and mark columns but we can't compare NULL with NULL. So we will get one row as output ( not two ) By using NULL safe operator we can compare NULL values. This query will return two records as output.