[MySQL] MySQL에서 IP저장단위 및 조회방법
- Databases/MySQL
- 2021. 12. 10.
보통 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)
※도움이 되셨다면 광고클릭 한번 부탁드립니다.※
'Databases > MySQL' 카테고리의 다른 글
[MySQL][InnoDB] Buffer Pool 상태저장과 복원(Buffer Pool Cache Warming기법) (0) | 2021.12.18 |
---|---|
[MySQL] MySQL 8.0.25 Rocky Linux 8.5 (1) | 2021.12.12 |
[MySQL] Performance Cheat Sheet(성능 관련 파라미터들) (0) | 2021.11.13 |
[MySQL] MySQL Tuning(튜닝) 그리고 Optimization(최적화) (0) | 2021.11.07 |
[MySQL] 기본 성능 튜닝 (0) | 2021.11.06 |