MySQL字符与int
我正在课堂上讨论MySQL中的数据类型MySQL字符与int,mysql,types,Mysql,Types,我正在课堂上讨论MySQL中的数据类型char和int。 我们有一个由8个独立号码组成的电话号码。然而,我们找不到它们各自的优点和缺点 我们应该使用char类型还是int类型,原因是什么?取决于您希望如何表示电话号码,您是否需要区号、国家代码和类似的内容,您希望将其保存为单个列还是将其拆分 就个人而言,我会选择将区号、国家代码和电话号码表示为3列,数据类型为int,因为这样可以更容易地在一个区域中查找所有电话号码,依此类推。但是,如果目的仅仅是一个字符串值,那么字符就足够了,但是,如果有几个国家
char
和int
。
我们有一个由8个独立号码组成的电话号码。然而,我们找不到它们各自的优点和缺点
我们应该使用
char
类型还是int
类型,原因是什么?取决于您希望如何表示电话号码,您是否需要区号、国家代码和类似的内容,您希望将其保存为单个列还是将其拆分
就个人而言,我会选择将区号、国家代码和电话号码表示为3列,数据类型为
int
,因为这样可以更容易地在一个区域中查找所有电话号码,依此类推。但是,如果目的仅仅是一个字符串值,那么字符就足够了,但是,如果有几个国家的电话号码,我会考虑使用<代码> VARCHAR < /代码>。 < P>我开始使用<代码> VARCHAR < /代码>来存储电话号码,因为它使您在不同国家的格式中有更多的范围。存储是便宜的。如果你有一个固定大小的字段,那么你可以使用char(8)
->8B,mysql在固定大小的字段中工作得更快,但是如果你选择int
->4B,你将节省空间,而且如果你在该字段上有一个索引,它的工作速度将比char快得多
您可以使用char(8)和int做一个简单的基准测试来测试写入和读取的速度
如果您有一个固定的大小,那么使用变量长度类型(如varchar或varbinary)是没有意义的,因为性能将降低不确切地了解美国,但在欧洲,国家访问代码是领先的0,而国际访问代码是领先的00或+。这是使用INT的一个缺点,因为前面的0会丢失。此外,您还有包含姓名的电话号码,即使这些姓名可以转换为数字,也最好将其保留为姓名。这是使用INT的第二个缺点。最后一个缺点是您还可以有分机号码等。所有这些都有利于VARCHAR。谢谢您的回答。但是,我们只需要为每行存储8位数字。持有8个数字,char或int,什么能更好地完成这项工作?varchar可以完成这项工作,因为您无法用int值存储前导零。char、
varchar
和int
都可以完成这项工作。在丹麦,电话号码不能有前导零。我只需要知道哪一个更适合使用,以及为什么所有这些都足以满足您的需要。然后,我个人会选择varchar
,因为数据实际上没有那么大,因此不会对性能产生太大的影响varchar
也将“准备好拨打国际电话号码”。但是,所有这些都可以使用。