偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

面試官:數(shù)據(jù)庫(kù)怎樣保存 IP 地址?

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
MySQL 推薦使用 INT UNSIGNED 類型保存 IPV4 地址,并且提供了專門的函數(shù) INET_ATON(將 IP 轉(zhuǎn)為整數(shù))和 INET_NTOA(將整數(shù)轉(zhuǎn)為 IP) 進(jìn)行轉(zhuǎn)換。

數(shù)據(jù)庫(kù)保存 IP 地址是偶爾會(huì)遇到的存儲(chǔ)場(chǎng)景,今天來(lái)聊一聊數(shù)據(jù)庫(kù)怎樣保存 IP 地址。

PostgreSQL

PostgreSQL 使用 INET 類型存儲(chǔ) IP 地址,IPv4 或 IPv6 都可以存儲(chǔ),同時(shí)也可以存儲(chǔ)子網(wǎng)信息。

存儲(chǔ)格式為 IP/子網(wǎng)掩碼位數(shù),比如:192.168.1.1/24。插入 SQL 如下:

INSERT INTO ip_test(id, ip) VALUES (1, '192.168.1.1/24');

INET 類型可以對(duì) IP 地址進(jìn)行輸入校驗(yàn)、子網(wǎng)包含判斷等操作,提升數(shù)據(jù)完整性和查詢效率。比如下面語(yǔ)句判斷子網(wǎng)是否包含,結(jié)果返回 true:

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

MySQL

MySQL 可以使用 VARCHAR 類型保存 IP 地址,但是并不推薦,因?yàn)?nbsp;MySQL 提供了專門的保存 IP 地址的數(shù)據(jù)類型。

IPV4

MySQL 推薦使用 INT UNSIGNED 類型保存 IPV4 地址,并且提供了專門的函數(shù) INET_ATON(將 IP 轉(zhuǎn)為整數(shù))和 INET_NTOA(將整數(shù)轉(zhuǎn)為 IP) 進(jìn)行轉(zhuǎn)換。首先我們創(chuàng)建一張表:

CREATE TABLE`ip_test` (
`id`bigint(20) NOTNULL AUTO_INCREMENT,
`ip`int(10) unsignedDEFAULTNULL,
KEY`id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2DEFAULTCHARSET=utf8 COLLATE=utf8_bin

下面 SQL 是插入和查詢的實(shí)例:

--插入
INSERT INTO ip_test VALUES(1,INET_ATON('192.168.1.5'));
--查詢
SELECT  id, INET_NTOA(ip) FROM ip_test;

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

  • 存儲(chǔ)空間更小,僅 4 個(gè)字節(jié);
  • 支持范圍查詢和索引優(yōu)化,查詢性能更好。

IPv6

對(duì)于 IPv6 類型地址,MySQL 可以使用 VARBINARY(16) 類型存儲(chǔ),并且提供了 INET6_ATON 和 INET6_NTOA 函數(shù)進(jìn)行轉(zhuǎn)換。我們?cè)賱?chuàng)建一張保存 IPV6 地址的表:

CREATE TABLE `ip_test_v6` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `ip` varbinary(16) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

下面 SQL 是插入和查詢的實(shí)例:

--插入
INSERT INTO ip_test_v6 (id,ip) VALUES (1, INET6_ATON('FC00:0:130F:0:0:9C0:876A:130B'));
--查詢
SELECT id, INET6_NTOA(ip) FROM ip_test_v6;

總結(jié)

主流數(shù)據(jù)庫(kù)一般不推薦直接使用 VARCHAR 類型來(lái)存儲(chǔ) IP 地址,而是提供了內(nèi)置的類型和函數(shù),存儲(chǔ)和查詢效率更高。

責(zé)任編輯:武曉燕 來(lái)源: 君哥聊技術(shù)
相關(guān)推薦

2024-11-14 09:29:38

2020-07-28 00:58:20

IP地址子網(wǎng)TCP

2025-09-26 01:15:00

2024-09-19 08:10:54

2021-05-18 08:32:33

TCPIP協(xié)議

2020-06-22 11:50:38

TCPIP協(xié)議

2022-06-06 15:06:42

MySQLJAVA

2022-03-30 07:28:24

MySQL數(shù)據(jù)庫(kù)ACID

2025-10-21 08:06:20

2024-02-22 09:19:52

2021-07-06 07:08:18

管控數(shù)據(jù)數(shù)倉(cāng)

2019-08-07 09:52:34

數(shù)據(jù)庫(kù)MySQLSQL

2021-10-14 06:51:55

數(shù)據(jù)庫(kù)SQL

2020-09-24 06:39:58

MySQL數(shù)據(jù)庫(kù)

2021-04-30 20:25:20

Spring MVCJava代碼

2022-05-23 08:43:02

BigIntJavaScript內(nèi)置對(duì)象

2018-10-22 14:28:26

面試官數(shù)據(jù)公司

2024-08-28 11:23:33

2020-11-11 10:05:04

數(shù)據(jù)庫(kù)分庫(kù)分表美團(tuán)面試

2015-08-13 10:29:12

面試面試官
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)