2584 13.1.20.8 CREATE TABLE and Generated Columns 13.1.20.7 Silent Column Specification Changes CREATE TABLE Statement The  INFORMATION_SCHEMA.CHECK_CONSTRAINTS  table provides information about  CHECK  constraints defined on tables. See Section 26.3.5, “The INFORMATION_SCHEMA CHECK_CONSTRAINTS Table” . All changes are subject to the internal row-size limit of 65,535 bytes, which may cause some attempts at data type changes to fail. See Section 8.4.7, “Limits on Table Column Count and Row Size” . In some cases, MySQL silently changes column specifications from those given in a  CREATE TABLE  or ALTER TABLE  statement. These might be changes to a data type, to attributes associated with a data type, or to an index specification. The resulting table has this definition: To see whether MySQL used a data type other than the one you specified, issue a  DESCRIBE  or  SHOW CREATE TABLE  statement after creating or altering the table. Certain other data type changes can occur if you compress a table using  myisampack . See Section 16.2.3.3, “Compressed Table Characteristics” . CREATE TABLE  supports the specification of generated columns. Values of a generated column are computed from an expression included in the column definition. Generated columns are also supported by the  NDB  storage engine. CREATE TABLE t ( c1 VARBINARY(10), c2 BLOB, c3 ENUM(’a’,’b’,’c’) CHARACTER SET binary ); CREATE TABLE t ( c1 VARCHAR(10) CHARACTER SET binary, c2 TEXT CHARACTER SET binary, c3 ENUM(’a’,’b’,’c’) CHARACTER SET binary ); •Specifying the  CHARACTER SET binary  attribute for a character data type causes the column to be created as the corresponding binary data type:  CHAR  becomes  BINARY ,  VARCHAR  becomes VARBINARY , and  TEXT  becomes  BLOB . For the  ENUM  and  SET  data types, this does not occur; they are created as declared. Suppose that you specify a table using this definition: •If strict SQL mode is not enabled, a  VARCHAR  column with a length specification greater than 65535 is converted to  TEXT , and a  VARBINARY  column with a length specification greater than 65535 is converted to  BLOB . Otherwise, an error occurs in either of these cases. •If you include a  USING  clause to specify an index type that is not permitted for a given storage engine, but there is another index type available that the engine can use without affecting query results, the engine uses the available type. •MySQL maps certain data types used by other SQL database vendors to MySQL types. See Section 11.9, “Using Data Types from Other Database Engines” . •Trailing spaces are automatically deleted from  ENUM  and  SET  member values when the table is created. •Columns that are part of a  PRIMARY KEY  are made  NOT NULL  even if not declared that way.