MySQL如何存储IP值

来源:这里教程网 时间:2026-02-28 16:13:26 作者:
存储ip值

ip值一般使用char或varchar进行存储,但是当进行查找和统计时,字符类型不是很高效。mysql数据库内置了两个ip相关的函数

inet_aton()
inet_ntoa()
,可以实现 ip 地址和整数类型的转换。转换后使用可以int unsigned 来存储ip,转换后的数字是连续的,提高了查询性能,占用空间更小。

CREATE TABLE `tb_ip` (
  `increment_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `name` varchar(100) NOT NULL COMMENT '姓名',
    `inet_ip` int(10) unsigned NOT NULL COMMENT 'IP',
  PRIMARY KEY (`increment_id`),
  KEY `idx_inet_ip` (`inet_ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ip测试表';
# 插入数据
insert into `tb_ip` (`name`,`inet_ip`) values 
('wang',INET_ATON('192.168.0.1')),('lisi',INET_ATON('192.168.0.2'));
# 相互转换
select INET_ATON('192.168.0.1');
select INET_NTOA(3232235521);

相关推荐