INET
INET数据类型存储IPv4或IPv6地址。
语法
INET的常量值可以使用解释文本、类型INET注释的字符串文本,或者强制类型转换为类型INET来表示。
INET常量可以使用以下格式表示:
- IPv4
标准RFC791指定的4个八位字节格式,以十进制数字表示,并以句点分隔。地址之后可选择性添加子网掩码。示例:’190.0.0.0’,’190.0.0.0/ 24’。
- IPv6
标准RFC8200指定格式的8个冒号分隔的4个十六进制数字组。 IPv6地址可以映射到IPv4地址。地址之后可选择性添加子网掩码。
示例: ‘2001:4f8:3:ba:2e0:81ff:fe22:d1f1’, ‘::ffff:192.168.0.1/24’
‘2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120’。
存储IPv4格式的INET时将占用32位;而存储IPv6格式的INET时将占用128位;因此,IPv4地址将在IPv6地址之前排序,包括IPv4映射的IPv6地址。
类型转换
INET值可以强制转换为具有“地址/子网”格式的STRING类型的值。
示例
示例1:使用INET创建表computers:
CREATE TABLE inets(c1 INET PRIMARY KEY);
CREATE TABLE
SHOW COLUMNS FROM inets;
column_name | data_type | is_nullable | column_default | generation_expression | indices | is_hidden
+—————————-+—————-+——————-+————————+———————————-+—————-+—————-+
c1 | INET | false | NULL | | {primary} | false
示例2:将INTERVAL类型的字段插入表intervals:
INSERT INTO inets VALUES (‘192.168.0.1’),(‘192.168.0.2/10’), (‘2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120’);
INSERT 3
SELECT * FROM inets;
c1
+———————————————————+
192.168.0.2/10 192.168.0.1 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/120