반응형

 

 

MySQL 기본 명령어를 사용해 테이블을 만들다 마주친 int(11) int(4) 등의 형태가 요상해서

찾아본 내용을 정리해봄

 

 

 

[MySQL] 데이터베이스 테이블 생성, 조회, 데이터 추가 명령어

생활코딩에서 복습한 기념으로 기본적인 데이터베이스 명령어인 테이블 생성, 조회 등을 기록해보려함 Windows에서 MySQL을 사용하기 위해서는 여기로 들어가 다운로드 하면된다 https://dev.mysql.com/d

studyingpingu.tistory.com

 

 

사실 이러한 형태는 zerofill 이라는 타입을 추가로 정의해주지 않는다면

int(4)나 int(11)이나 같은 형태로 출력이되고

 

데이터베이스에 저장될때도

두 개의 표현 모두, 원래 int 자료형의 범위 (-2,147,483,648 to 2,147,483,647) 만큼

동일한 크기로 저장된다고 한다

 

int(4)로 저장한다고 int(11)보다 적은 사이즈가 디비에 저장되는게 아니라서

공간을 효율적으로 줄이는것도 아니라고함

 

대신에 저장된 숫자의 공백칸 만큼을 0으로 표현해주는 차이라고 한다

int(4) 이지만 한자리 숫자가 저장된다면,

4칸을 보여주기 위해 앞의 3칸을 0으로 채운 0004를 출력한다는 것

 

 

아래는 그 예제

 

 

 

추가로 달린 댓글에서 보면 이러한 제로필 방식은 사용하지 않는걸 강하게 추천하고 있다

이 댓글이 받은 좋아요 수가 높은걸 보면

그냥 개념만 알아두고 사용은 피하는게 좋을것같다

 

대충 몇개의 숫자가 보여질지 선택하는건 DB단에서 하는게 아니라

UI 단에서 해주는 부분이므로 이걸 데이터베이스에서 건드리는 순간

문제가 생길수있는 확률이 올라간다고 하니

 

개념만 이해하는 식으로 넘어가자

 

 

 

 

참고 : https://stackoverflow.com/questions/5256469/what-is-the-benefit-of-zerofill-in-mysql

 

What is the benefit of zerofill in MySQL?

I just want to know what is the benefit/usage of defining ZEROFILL for INT DataType in MySQL? `id` INT UNSIGNED ZEROFILL NOT NULL

stackoverflow.com

 

 

반응형
반응형

 

 

Warning | 1681 | Integer display width is deprecated and will be removed in a future release.

 

예제를 따라서 SQL문을 작성하다가 마주친 워닝 문구

 

mysql warnings

아마 범위 지정때문에 경고를 받은듯하다

 

어떤 경고인지 자세하게 보면 좋을것같아 찾아본 MySQL warning 확인하는 명령어

 

mysql> show warnings
    -> ;
+---------+------+------------------------------------------------------------------------------+
| Level   | Code | Message                                                                      |
+---------+------+------------------------------------------------------------------------------+
| Warning | 1681 | Integer display width is deprecated and will be removed in a future release. |
| Warning | 1681 | Integer display width is deprecated and will be removed in a future release. |
| Warning | 1681 | Integer display width is deprecated and will be removed in a future release. |
| Warning | 1681 | Integer display width is deprecated and will be removed in a future release. |
+---------+------+------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

show warnings; 를 입력해주면 받은 경고에 대한 상세 메세지를 확인할수있다

 

워닝 코드는 1681이며

워닝 메세지는 Integer display width is deprecated and will be removed in a future release. 였다

 

 

 

이제 이 경고가 왜 뜨는지, 또 피할수있는 방법이 있는지 검색을 시도해봤음

 

친절한 스택오버플로우는

이러한 워닝은 데이터를 저장하거나 표출하는데 아무런 문제가 없으며

 

그렇더라도 이러한 문구를 피하고싶다면, 기존 컬럼 타입을

INT(11) 등의 형태에서 INT로 수정하라고 해결방법까지 안내해준다

 

 

 

 

참고 : 

https://dev.mysql.com/doc/refman/8.0/en/numeric-type-attributes.html

 

MySQL :: MySQL 8.0 Reference Manual :: 11.1.6 Numeric Type Attributes

11.1.6 Numeric Type Attributes MySQL supports an extension for optionally specifying the display width of integer data types in parentheses following the base keyword for the type. For example, INT(4) specifies an INT with a display width of four digits.

dev.mysql.com

 

반응형

+ Recent posts