我有点理解命令collate
的功能。事实是,我没有测试一个数据库中是否可以包含具有各种排序规则(甚至各种字符集)的表。
但是我发现(至少在phpmyadmin中)在创建任何数据库时,都设置了它的字符集和排序规则-如果我在CREATE TABLE ...
中错过了此命令,则会在创建数据库时自动设置排序规则集。
所以,我的问题是:如果collate
的sql中可能缺少命令CREATE TABLE ...
,那么在CREATE TABLE ...
的sql中存在什么感觉-建议在中进行整理或无关紧要?
最佳答案
在SQL Server中,如果您未指定COLLATE
,则默认为DB设置的默认值。因此,不进行指定就没有危险。
在MySQL中,行为是相同的:
表字符集和排序规则用作以下各项的默认值:
列定义(如果没有列字符集和排序规则)
在各个列定义中指定。 MySQL Reference
排序规则仅在您要指定为非默认值时使用。如果您使用的只是英文字符集,则无需担心。如果您使用多种语言存储数据,则必须指定特定的排序规则以确保正确存储了哪些字符。
关于mysql - 在创建表SQL中整理命令的意义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22440394/