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