이때까지 IP 주소를 varchar형으로 저장 했었는데 IP는 4바이트 정수형을 선언하기를 권장하고 있다.
IP를 정수형으로 변환하여 저장하게 되면 용량과 검색에 더 효과적이라고 한다.
MYSQL 레퍼런스
여기서 정수형 변환을 지원하는 함수가 있다.
INET_ATON(expr)
점 4개로 구분된 네트워크 주소를 스트링 형태로 입력하면, 네크워크 주소의
수치적 값을 표현하기 위한 정수값이 리턴 된다. 이러한 주소는 4 또는 8 바이트 주소가 됨.
mysql> SELECT INET_ATON('112.115.203.45');
결과값은 1886636845으로, 함수가 반환하는 값은 항상 네트워크 바이트 순서가 된다.
즉, 리턴되는 숫자는 112×2563 + 115×2562 + 203×256 + 45로 계산이 됨.
INET_ATON()는 IP 주소의 축약형도 인식한다.
mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1'); -> 2130706433, 2130706433
Note: INET_ATON()에 의해 생성된 값을 정렬할 경우, INT UNSIGNED
컬럼을 사용할 것을 권고한다. 만일 (부호화 된) INT 컬럼을 사용한다면, 127 보다 큰 첫 번째 8진수에 해당하는 IP 주소 값은 정확하게 저장되지 않는다.
Section 11.2, “Numeric Types”를 참조할 것.
- INET_NTOA(expr)
수치적인 네트워크 주소 (4 또는 8 바이트)를 입력하면, 점 4개로 구분되는 스트링 형태의 값이 리턴된다.
mysql> SELECT INET_NTOA(3520061480); -> '209.207.224.40'
IPv6의 경우 BINARY(16) 로 데이터 유형을 설정하고 INET6_ATON/INET6_NTOA 를 사용한다.
IPv4의 경우 INT UNSIGNED로 데이터 유형을 설정하고 INET_ATON/INET_NTOA를 사용한다
'프로그래밍 > DBMS' 카테고리의 다른 글
[MySQL / MariaDB] Connection 모니터링 (0) | 2019.06.12 |
---|---|
[Mysql] Mysql을 사용하면서 하지 말아야할 17가지 (0) | 2019.01.18 |
[Mysql] 사용자 권한 설정 (0) | 2018.09.04 |
[MariaDB] 설치, 설정 , DB 생성, 권한부여 (0) | 2018.09.04 |
[Mysql]sysdate , now 차이 (0) | 2018.06.27 |