MySQL存储IP地址的方法
为什么问存储IP首先,要澄清一些人所要问的问题:你为什么要问IP如何保存、varchar的直接型不
事实上,任何程序设计都要在功能实现的基础上对性能进行优化,而数据库设计是程序设计中不可忽视的重要部分,因此IP地址在一定程度上可以大大提高。
函数算法处理
在MySQL中,IP类型字段不直接提供,但如果有两个功能,可以将IP的10大数字类型,int类型存储IP具有更高的性能来存储IP地址比varchar类型,和很多空间减少。因为varchar是可变长度的,它需要一个额外的字节的存储长度。此外,int类型是比逻辑运算的varchar快。
IP化数字功能inet_aton()
我们转换几个常见的IP地址
MySQL >选择inet_aton('255.255.255.255);
------------------------------ + +
| inet_aton('255.255.255.255)|
------------------------------ + +
4294967295 | |
------------------------------ + +
1行集(0秒)
MySQL >选择inet_aton('192.168.1.1);
-------------------------- + +
| inet_aton('192.168.1.1)|
-------------------------- + +
3232235777 | |
-------------------------- + +
1行集(0秒)
MySQL >选择inet_aton('10.10.10.10);
-------------------------- + +
| inet_aton('10.10.10.10)|
-------------------------- + +
168430090 | |
-------------------------- + +
1行集(0秒)
因此,IP的表字段可以设置为int(10),如果没有获得IP,0个代表可以得到未获得IP的含义。
数字将IP功能inet_ntoa()
MySQL >选择inet_ntoa(4294967295);
----------------------- + +
| inet_ntoa(4294967295)|
----------------------- + +
| 255.255.255.255 |
----------------------- + +
1行集(0秒)
MySQL >选择inet_ntoa(3232235777);
----------------------- + +
| inet_ntoa(3232235777)|
----------------------- + +
| 192.168.1.1 |
----------------------- + +
1行集(0秒)
MySQL >选择inet_ntoa(168430090);
---------------------- + +
| inet_ntoa(168430090)|
+----------------------+
| 10.10.10.10 |
---------------------- + +
1行集(0秒)
MySQL >选择inet_ntoa(0);
-------------- + +
| inet_ntoa(0)|
-------------- + +
| 0.0.0.0 |
-------------- + +
1行集(0秒)
注意,0转换为0.0.0.0
整数字段比字符串高效得多,它也与优化原则一致:字段类型定义使用最合适(最小)和最简单的数据类型。
的inet_aton()算法,事实上,借鉴国际上使用的国家之间的区别的IP号码。
ABCD的IP数:
一个* 256 3平方+ B * 256 2平方+ C * 256 1平方+ D * 256。
以上说明是mysql存储IP地址的方法,希望能对大家的学习有所帮助。