MySQL中的身份證號數(shù)據(jù)類型實際上沒有專門的類型,通常會使用CHAR或VARCHAR類型來存儲身份證號碼。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `id_card` char(18) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在上面的示例中,id_card列使用char(18)類型來存儲身份證號碼,因為身份證號碼的長度是固定的18位。
當(dāng)然,也可以使用VARCHAR類型來存儲身份證號碼,這樣可以節(jié)省存儲空間,但需要注意長度設(shè)置,應(yīng)為18。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `id_card` varchar(18) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
雖然CHAR和VARCHAR類型都可以用于存儲身份證號碼,但使用CHAR類型時,MySQL會為每行固定分配18個字節(jié)的存儲空間,而使用VARCHAR類型時,存儲空間會根據(jù)實際的數(shù)據(jù)長度進行分配。因此,在存儲大量身份證號碼的情況下,VARCHAR類型可能會更加節(jié)省存儲空間。