Query-Related Issues MySQL permits you to store a “zero”  value of  ’0000-00-00’  as a “dummy date.”  This is in some cases more convenient than using  NULL  values. If a date to be stored in a  DATE  column cannot be converted to any reasonable value, MySQL stores  ’0000-00-00’ . To disallow  ’0000-00-00’ , enable the NO_ZERO_DATE  mode. To have MySQL check all dates and accept only legal dates (unless overridden by  IGNORE ), set the sql_mode  system variable to  "NO_ZERO_IN_DATE,NO_ZERO_DATE" . The concept of the  NULL  value is a common source of confusion for newcomers to SQL, who often think that  NULL  is the same thing as an empty string  ’’ . This is not the case. For example, the following statements are completely different: B.3.4.3 Problems with NULL Values Both statements insert a value into the  phone  column, but the first inserts a  NULL  value and the second inserts an empty string. The meaning of the first can be regarded as “phone number is not known”  and the meaning of the second can be regarded as “the person is known to have no phone, and thus no phone number.” To help with  NULL  handling, you can use the  IS NULL  and  IS NOT NULL  operators and the  IFNULL() function. In SQL, the  NULL  value is never true in comparison to any other value, even  NULL . An expression that contains  NULL  always produces a  NULL  value unless otherwise indicated in the documentation for the operators and functions involved in the expression. All columns in the following example return  NULL : To search for column values that are  NULL , you cannot use an  expr = NULL  test. The following statement returns no rows, because  expr = NULL  is never true for any expression: To look for  NULL  values, you must use the  IS NULL  test. The following statements show how to find the NULL  phone number and the empty phone number: You can add an index on a column that can have  NULL  values if you are using the  MyISAM ,  InnoDB , or MEMORY  storage engine. Otherwise, you must declare an indexed column  NOT NULL , and you cannot insert  NULL  into the column. See Section 3.3.4.6, “Working with NULL Values” , for additional information and examples. When reading data with  LOAD DATA , empty or missing columns are updated with  ’’ . To load a  NULL value into a column, use  \N  in the data file. The literal word  NULL  may also be used under some circumstances. See Section 13.2.7, “LOAD DATA Statement” . When using  DISTINCT ,  GROUP BY , or  ORDER BY , all  NULL  values are regarded as equal. When using  ORDER BY ,  NULL  values are presented first, or last if you specify  DESC  to sort in descending order. Aggregate (group) functions such as  COUNT() ,  MIN() , and  SUM()  ignore  NULL  values. The exception to this is  COUNT(*) , which counts rows and not individual column values. For example, the following 5309 mysql>  SELECT * FROM my_table WHERE phone IS NULL; mysql>  SELECT * FROM my_table WHERE phone = ’’; mysql>  SELECT * FROM my_table WHERE phone = NULL; mysql>  SELECT NULL, 1+NULL, CONCAT(’Invisible’,NULL); mysql>  INSERT INTO my_table (phone) VALUES (NULL); mysql>  INSERT INTO my_table (phone) VALUES (’’);