For numeric columns:
UNSIGNED
ZEROFILL (causes UNSIGNED)
AUTO_INGREMENT (may be only one per table, and must be indexed, and must be defined as NOT NULL)
LAST_INSERT_ID() returns the most recently generated AUTO_INCREMENT value.
If you update an AUTO_INCREMENT column to NULL or 0, the column is set to 0.
By default, inserting 0 in an AUTO_INCREMENT column has the same effect as inserting NULL unless the NO_AUTO_VALUE_ON_ZERO SQL mode is enabled.
MyISAM storage engine supports composite indexes. In composite indexes, AUTO_INCREMENT value could be reused.
For string columns:
CHARACTER SET (= CHARSET) ex. utf-8
COLLATE (if CHARSET is omitted, set to the collation's character set.)
BINARY
For general columns:
NOT NULL
DEFAULT value (can't use for TEXT, BLOB and AUTO_INCREMENT (integer) columns)
A default value must be a constant except CURRENT_TIMESTAMP for one TIMESTAMP column.
Implicit default values are:
0 for numeric columns
"" for string columns except ENUM
the first enumeration member for ENUM
zero value for temporal columns