mysql 使用inet_aton和inet_ntoa处理ip地址数据、mysql中IP地址字段推荐使用int类型,不推荐用char(15)

1.业务中IP地址字段推荐使用int类型,不推荐用char(15)

因为int只占4字节,可以用如下函数相互转换,而char(15)占用至少15字节。一旦表数据行数到了1亿,那么要多用1.1G存储空间!

SQL:select inet_aton('192.168.2.12'); select inet_ntoa(3232236044);

Php: ip2long(‘192.168.2.12’); long2ip(3530427185);

2.创建数据库

2.1char类型

CREATE TABLE `login_log_char` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(30) NOT NULL,
  `login_ip` char(15) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='登录日志';

INSERT INTO `test`.`login_log_char` (`id`, `username`, `login_ip`) VALUES ('1', '1', '192.168.1.1');
select * from login_log_char

 

2.2.int类型

注意这里unsigned ,否则插入数据报错,要么改为bigint

CREATE TABLE `login_log_int` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(30) NOT NULL,
  `login_ip` int(10) unsigned  NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='登录日志';

INSERT INTO `login_log_int` (`username`, `login_ip`)
VALUES
	(
		'1',
		inet_aton('192.168.1.1')
	);
select *,INET_NTOA(login_ip) from login_log_int

3.函数

select inet_aton('192.168.2.12');

select inet_ntoa(3232236044);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值