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:
        
mysql>INSERT INTO my_table (phone) VALUES (NULL);mysql>INSERT INTO my_table (phone) 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:
        
mysql> SELECT NULL, 1+NULL, CONCAT('Invisible',NULL);
          If you want 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:
        
mysql> SELECT * FROM my_table WHERE phone = NULL;
          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:
        
mysql>SELECT * FROM my_table WHERE phone IS NULL;mysql>SELECT * FROM my_table WHERE phone = '';
          See Section 3.3.4.6, “Working with NULL Values”, for additional
          information and examples.
        
          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.
        
          When reading data with
          LOAD DATA
          INFILE, empty or missing columns are updated with
          ''. If you want a NULL
          value in a column, you should use \N in the
          data file. The literal word
          “NULL” may also be used under
          some circumstances. See Section 12.2.6, “LOAD DATA INFILE
      Syntax”.
        
          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 (summary) 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
          statement produces two counts. The first is a count of the
          number of rows in the table, and the second is a count of the
          number of non-NULL values in the
          age column:
        
mysql> SELECT COUNT(*), COUNT(age) FROM person;
          For some data types, MySQL handles NULL
          values specially. If you insert NULL into a
          TIMESTAMP column, the current
          date and time is inserted. If you insert
          NULL into an integer or floating-point
          column that has the AUTO_INCREMENT
          attribute, the next number in the sequence is inserted.
        


User Comments
Add your own comment.