数据库保存文件(【SQL】数据库怎样保存 IP 地址?)

数据库保存文件(【SQL】数据库怎样保存 IP 地址?)

各位老铁们好,相信很多人对数据库保存文件都不是特别的了解,因此呢,今天就来为大家分享下关于数据库保存文件以及数据库保存文件的问题知识,还望可以帮助大家,解决大家的一些困惑,接下来一起来看看吧!



数据库保存 IP 地址是偶尔会遇到的存储场景,今天来聊一聊数据库怎样保存 IP 地址。

PostgreSQL

PostgreSQL 使用 INET 类型存储 IP 地址,IPv4 或 IPv6 都可以存储,同时也可以存储子网信息。

存储格式为 IP/子网掩码位数,比如:192.168.1.1/24。插入 SQL 如下:

数据库保存文件(【SQL】数据库怎样保存 IP 地址?)

INET 类型可以对 IP 地址进行输入校验、子网包含判断等操作,提升数据完整性和查询效率。比如下面语句判断子网是否包含,结果返回 true:

SELECT '192.168.1.5'::inet << '192.168.1.0/24'::inet;MySQL

MySQL 可以使用 VARCHAR 类型保存 IP 地址,但是并不推荐,因为 MySQL 提供了专门的保存 IP 地址的数据类型。

MySQL 推荐使用 INT UNSIGNED 类型保存 IPV4 地址,并且提供了专门的函数 INET_ATON(将 IP 转为整数)和 INET_NTOA(将整数转为 IP) 进行转换。首先我们创建一张表:

下面 SQL 是插入和查询的实例:

使用 INT UNSIGNED 类型保存 IPV4 地址,有如下好处:

存储空间更小,仅 4 个字节;支持范围查询和索引优化,查询性能更好。

对于 IPv6 类型地址,MySQL 可以使用 VARBINARY(16) 类型存储,并且提供了 INET6_ATON 和 INET6_NTOA 函数进行转换。我们再创建一张保存 IPV6 地址的表:

下面 SQL 是插入和查询的实例:

主流数据库一般不推荐直接使用 VARCHAR 类型来存储 IP 地址,而是提供了内置的类型和函数,存储和查询效率更高。

关于数据库保存文件数据库保存文件的介绍到此结束,希望对大家有所帮助。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读