ENUM and
SET columns provide an
efficient way to define columns that can contain only a given
set of values. See Section 10.4.4, “The ENUM Type”, and
Section 10.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.