Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么mysql有许多不同的字段类型?_Mysql_Field - Fatal编程技术网

为什么mysql有许多不同的字段类型?

为什么mysql有许多不同的字段类型?,mysql,field,Mysql,Field,既然数据被分类为int、decimal、text(string)、date、enum,为什么mysql仍然需要将它们分类为更多的组,就像文本被分为char、varchar、text、tinytext等一样?我知道这会使它更快,但是分类到更多的组和使它更快之间有什么关系呢?原因是什么 对不起,我的英语很差。嗯,主要原因是记忆力差。请参见地址是文本信息,名称是文本信息,如果要存储任何值,如yes,no也是文本值,如果要从任何一个位置获取评论或帖子,它也是text值。所有这些价值观都需要不同的记忆。当

既然数据被分类为int、decimal、text(string)、date、enum,为什么mysql仍然需要将它们分类为更多的组,就像文本被分为char、varchar、text、tinytext等一样?我知道这会使它更快,但是分类到更多的组和使它更快之间有什么关系呢?原因是什么


对不起,我的英语很差。

嗯,主要原因是记忆力差。请参见地址是文本信息,名称是文本信息,如果要存储任何值,如
yes
no
也是文本值,如果要从任何一个位置获取评论或帖子,它也是
text
值。所有这些价值观都需要不同的记忆。当你们谈论大系统时,内存是一个重要的因素。例如,如果为所有文本信息设置
text
type,这是一种非常糟糕的做法。所以mysql被分为不同的类别。例如,如果要存储名称,可以使用
varchar(50)
,如果要存储地址,甚至可以使用
varchar(255)
。如果您想存储帖子、评论、描述或任何东西,您可以使用
文本
。如果要使用
yes
no
类似的信息,可以使用
char
。希望您能理解。

字符串类型的变化数量是进步的标志。在理想的世界中,旧的类型将被删除,新的和改进的类型将取代它们。但是,在现实世界中,遗留兼容性要求字段类型的行为类似于20世纪60年代的COBOL字符串处理,适用于需要它的应用程序。因此,
char(20)
键入带有尾随空格的pad,使其像IBM keypunch卡一样工作


把各种类型的螺丝刀看作一套螺丝刀,有些小,有些大。每一种都有一个合适的使用范围。如果你在做怀表,就不需要大螺丝刀了。但是,如果应用是桥梁建设,那么微型精密螺丝刀仍然不用,而大型螺丝刀会被使用。数据库很像这样。

是的,我明白。我仍然想知道为什么mysql需要我们声明字段长度而不是计算长度本身?谢谢你的回答:)