[MySQL] MySQL에서 IP저장단위 및 조회방법

보통 IP DB 저장할때는 캐릭터 형태의 컬럼(varchar 혹은 char) 많이 사용하는것으로 알고 있습니다. 저또한 마찬가지 입니다. 그러나 MySQL에서는 IP 특화된 방법으로 저장하고 불러올 있습니다. 또한 저장 방법이 Integer방식이기 때문에 검색에서 효율적이기도 합니다. 

MySQL에서 IP 저장하는 방법과 호출하는 방법에 대해 알아보겠습니다.

 

▶︎ 준비사항

MySQL에서 IP 저장하는 방법은 숫자형으로 저장이 됩니다. MySQL문서에서는 INT형보다는 INT UNSIGNED 컬럼을 사용할것을 권고하고 있습니다.

create table addr(ip int(11) unsigned);

 

▶︎ 사용방법

INET_ATON(expr)

일발적인 IPv4 네트워크 주소 방식으로 표현된 문자열로 주어지면 네트워크 바이트 순서(Big Endian) 주소의 숫자 값을 나타내는 정수를 반환합니다. 만약 입력된 IP주소 형식이 틀리거나 범위가 넘어가면 NULL 반환합니다.

mysql> insert into addr values(INET_ATON('213.35.16.9'));
Query OK, 1 row affected (0.00 sec)

mysql> select * from addr;
+------------+
| ip         |
+------------+
| 3575844873 |
+------------+
1 row in set (0.00 sec)

 

위의 SQL Function INET_ATON 이용해 데이터를 입력하면 특별한 숫자가 반환되는데 숫자들은 다음과 같은 방식으로 계산된 값입니다.

213×256(3 제곱) + 35×256(2 제곱) + 16×256 + 9

 

INET_NTOA(expr)

INET_ATON 컬럼에 의해 저장된 숫자를 사람이 알아볼 있는 IP단위로 출력합니다. 범위가 벗어나거나 펑션이 이해하지 못하는 숫자를 제시하면 NULL 반환합니다.

mysql> select INET_NTOA(ip) from addr;
+---------------+
| INET_NTOA(ip) |
+---------------+
| 213.35.16.9   |
+---------------+
1 row in set (0.00 sec)

※도움이 되셨다면 광고클릭 한번 부탁드립니다.※

Designed by JB FACTORY