前言
一、网络地址类型
用于存储IPV4、IPV6、MAC网络地址的专有网络地址数据类型,
使用网络地址数据类型存储IP地址要优于字符类型。
1.网络地址数据类型列表
字符类型名称 | 存储长度 | 描述 |
---|---|---|
cidr | 7或19字节 | IPV4和IPV6网络 |
inet | 7或19字节 | IPV4和IPV6网络 |
macaddr | 6字节 | MAC地址 |
macaddr8 | 8字节 | MAC地址 |
cidr/inet类型存储的网络地址格式为address/y。
如果y省略,则对于IPV4网络掩码为32,对于IPV6网络掩码为128,所以该值表示一台主机。
cidr/inet类型都会对数据合法性进行检查,不合法会报错:
select '192.168.2.1000'::inet;
lhcdb@10.206.132.17:5432=>select '192.168.2.1000'::inet;
ERROR: invalid input syntax for type inet: "192.168.2.1000"
LINE 1: select '192.168.2.1000'::inet;
inet和cidr类型存在以下差别:
(1)cidr类型的输出默认带子网掩码信息,而inet不一定:
select '192.168.1.100'::cidr;
lhcdb@10.206.132.17:5432=>select '192.168.1.100'::cidr;
cidr
------------------
192.168.1.100/32
(1 row)
select '192.168.1.100/32'::inet;
lhcdb@10.206.132.17:5432=>select '192.168.1.100/32'::inet;
inet
---------------
192.168.1.100
(1 row)
select '192.168.0.0/16'::inet;
lhcdb@10.206.132.17:5432=>select '192.168.0.0/16'::inet;
inet
----------------
192.168.0.0/16
(1 row)
(2)cidr类型对IP地址和子网掩码合法性进行检查,而inet不会:
select '192.168.2.0/8'::cidr;
lhcdb@10.206.132.17:5432=>select '192.168.2.0/8'::cidr;
ERROR: invalid cidr value: "192.168.2.0/8"
LINE 1: select '192.168.2.0/8'::cidr;
^
DETAIL: Value has bits set to right of mask.
select '192.168.2.0/8'::inet;
lhcdb@10.206.132.17:5432=>select '192.168.2.0/8'::inet;
inet
---------------
192.168.2.0/8
(1 row)
select '192.168.2.0/24'::cidr;
lhcdb@10.206.132.17:5432=>select '192.168.2.0/24'::cidr;
cidr
----------------
192.168.2.0/24
(1 row)