Spec-Zone .ru
спецификации, руководства, описания, API
|
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.
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 E.10.4, "Limits on Table Column Count and Row Size".
Columns that are part of a PRIMARY KEY
are made NOT NULL
even if not declared that way.
Trailing spaces are automatically deleted from ENUM
and SET
member values when the table is created.
MySQL maps certain data types used by other SQL database vendors to MySQL types. See Section 11.8, "Using Data Types from Other Database Engines".
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.
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.
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:
CREATE TABLE t( c1 VARCHAR(10) CHARACTER SET binary, c2 TEXT CHARACTER SET binary, c3 ENUM('a','b','c') CHARACTER SET binary);
The resulting table has this definition:
CREATE TABLE t( c1 VARBINARY(10), c2 BLOB, c3 ENUM('a','b','c') CHARACTER SET binary);
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 14.3.3.3, "Compressed Table Characteristics".