我有点理解命令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/

10-12 13:25