ENUM and SET columns
provide an efficient way to define columns that can contain
only a given set of values. See Section 11.4.4, “The ENUM Type”, and
Section 11.4.5, “The SET Type”. However, in MySQL 4.1 and earlier,
ENUM and SET columns do
not provide true constraints on entry of invalid data:
ENUM columns always have a default
value. If you specify no default value, then it is
NULL for columns that can have
NULL, otherwise it is the first
enumeration value in the column definition.
If you insert an incorrect value into an
ENUM column or if you force a value
into an ENUM column with
IGNORE, it is set to the reserved
enumeration value of 0, which is
displayed as an empty string in string context.
If you insert an incorrect value into a
SET column, the incorrect value is
ignored. For example, if the column can contain the values
'a', 'b', and
'c', an attempt to assign
'a,x,b,y' results in a value of
'a,b'.

User Comments
like already metioned: "An ENUM value must be one of those listed ..."
when fetching enum fields eg. to an array:
enum('a','b','c') == array(1=>'a', 2=>'b', 3=>'c')
Add your own comment.