CHARACTER SET latin1 COLLATE latin1_german1_ci ); ALTER TABLE t1 MODIFY col1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_swedish_ci; 

MySQL chooses the column character set and collation in the following manner: 

•If both CHARACTER SET charset_name  and COLLATE collation_name  are specified, character set charset_name  and collation collation_name  are used. 

CREATE TABLE t1 ( col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci ) CHARACTER SET latin1 COLLATE latin1_bin; 

The character set and collation are specified for the column, so they are used. The column has character set utf8  and collation utf8_unicode_ci . 

•If CHARACTER SET charset_name  is specified without COLLATE , character set charset_name  and its default collation are used. 

CREATE TABLE t1 ( col1 CHAR(10) CHARACTER SET utf8 ) CHARACTER SET latin1 COLLATE latin1_bin; 

The character set is specified for the column, but the collation is not. The column has character set utf8  and the default collation for utf8 , which is utf8_general_ci . To see the default collation for each character set, use the SHOW CHARACTER SET  statement or query the INFORMATION_SCHEMA CHARACTER_SETS  table. 

•If COLLATE collation_name  is specified without CHARACTER SET , the character set associated with collation_name  and collation collation_name  are used. 

CREATE TABLE t1 ( col1 CHAR(10) COLLATE utf8_polish_ci ) CHARACTER SET latin1 COLLATE latin1_bin; 

The collation is specified for the column, but the character set is not. The column has collation utf8_polish_ci  and the character set is the one associated with the collation, which is utf8 . 

•Otherwise (neither CHARACTER SET  nor COLLATE  is specified), the table character set and collation are used. 

CREATE TABLE t1 ( col1 CHAR(10) ) CHARACTER SET latin1 COLLATE latin1_bin; 

Neither the character set nor collation is specified for the column, so the table defaults are used. The column has character set latin1  and collation latin1_bin . 

The CHARACTER SET  and COLLATE  clauses are standard SQL. 

If you use ALTER TABLE  to convert a column from one character set to another, MySQL attempts to map the data values, but if the character sets are incompatible, there may be data loss. 

