MySQL 中的 96 數(shù)據(jù)類(lèi)型是什么呢?96 數(shù)據(jù)類(lèi)型是一種比較少見(jiàn)的數(shù)據(jù)類(lèi)型,通常用于存儲(chǔ) IP 地址。96 數(shù)據(jù)類(lèi)型可以存儲(chǔ) 12 個(gè)字節(jié)的數(shù)據(jù),也就是說(shuō)可以存儲(chǔ) IPv6 地址。
CREATE TABLE `ip_table` ( `ip_address` VARBINARY(12) NOT NULL, `description` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`ip_address`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在上面的代碼中,我們創(chuàng)建了一個(gè)名為 ip_table 的表,這個(gè)表有兩個(gè)字段:ip_address 和 description。ip_address 的數(shù)據(jù)類(lèi)型是 VARBINARY(12),可以存儲(chǔ) 12 個(gè)字節(jié)的數(shù)據(jù),也就是 IPv6 地址所需要的空間。description 的數(shù)據(jù)類(lèi)型是 VARCHAR(255),用于存儲(chǔ)對(duì) IP 地址的描述信息。
使用 96 數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ) IP 地址有一個(gè)優(yōu)點(diǎn),那就是可以節(jié)省存儲(chǔ)空間。使用 VARCHAR(39) 來(lái)存儲(chǔ) IPv6 地址需要占用 39 個(gè)字節(jié)的空間(IPv4 地址需要占用 15 個(gè)字節(jié)的空間),而使用 VARBINARY(12) 只需要占用 12 個(gè)字節(jié)的空間。
當(dāng)然,使用 96 數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ) IP 地址也有一些缺點(diǎn)。首先,不能像 CHAR 或 VARCHAR 一樣進(jìn)行字符串操作。其次,需要手動(dòng)將 IP 地址轉(zhuǎn)化為二進(jìn)制格式再進(jìn)行存儲(chǔ),這增加了處理 IP 地址的復(fù)雜度。