在创建表时,每列使用COLLATE是否有任何意义?

时间:2014-02-20 18:03:13

标签: mysql collate

我刚刚导出了一个MySQL数据库,以便在另一台服务器上复制它。查看sql脚本,我看到以下内容:

CREATE TABLE `X` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `email` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL
  PRIMARY KEY (`id`),
  KEY `name_index` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8366 
  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

为表格设置collate时,是否需要在每列中使用此项?

我认为每个专栏的原因都是因为我想确保我可以存储 locale 值,例如æ, ø å

1 个答案:

答案 0 :(得分:3)

由于您的列级排序规则完全相同,因此在表级设置排序规则会产生相同的效果。

请注意,排序规则不会影响 store ;相反,它会影响结果的排序方式。您希望每列具有不同排序规则的唯一原因是,如果您的表包含具有不同语言环境的数据的列,这些列需要不同的排序顺序。