我想在MySQL数据库中存储邮政编码(在美国境内)。 保存空间是首要任务。这是使用VARCHAR的更好选项 - 限制为最大长度为6位或使用INT或使用MEDIUM Int。邮政编码不会用于任何计算。邮政编码将用于插入(一次),更新(如果需要)和检索 - 一次(但可以多次)。
哪个更好的选择在这里使用 VARCHAR或INT或MEDIUM在MYSQL ?请提出其他建议吗?
答案 0 :(得分:18)
将邮政编码存储为数字值存在一些问题。
12345-6789
。您不能将破折号存储在数值数据类型中。我会将邮政编码存储为varchar(5)
或varchar(10)
。
作为旁注,我不确定为什么要选择varchar(6)
,当标准邮政编码为5或10时,您是否有理由选择不寻常的长度?
答案 1 :(得分:6)
我通常使用MEDIUMINT(5) ZEROFILL
获取5位邮政编码。这会保留任何前导0
,它只使用3个字节,其中VARCHAR(5)
将使用6.这假设您不需要扩展邮政编码,其中包含短划线和4个额外数字。如果您决定使用文字类型,我会使用CHAR(5)
代替VARCHAR(5)
,因为如果数据总是长5个字符会更好。
答案 2 :(得分:4)
邮政编码总是5个字符,因此您需要CHAR数据类型,而不是VARCHAR。
因此,您的选择
CHAR(5)
MEDIUMINT (5) UNSIGNED ZEROFILL
第一个每个邮政编码需要5个字节。
第二个邮政编码只需3个字节。对于带有前导零的邮政编码,ZEROFILL选项是必需的。
因此,如果空间是您的首选,请使用MEDIUMINT。
答案 3 :(得分:1)
我建议使用VARCHAR数据类型,因为在某些国家/地区,邮政编码用作字母数字,而在其他地方用作整数。所以我们不能使用整数来全局使用。此外,邮政编码可以从零开始,如001101
,所以在这种情况下,如果我们采用数据类型整数,那么前导零将丢失,因此我们无法传递实际的邮政编码。