Loading...
MySQL 9.5 Reference Manual 9.5의 13.1.6 Numeric Type Attributes의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL은 정수 데이터 타입에 대해, 타입의 기본 키워드 뒤에 괄호로 정수의 디스플레이 폭(display width)을 선택적으로 지정하는 확장을 지원합니다. 예를 들어, INT(4)는 디스플레이 폭이 네 자리인 INT를 지정합니다. 이 선택적 디스플레이 폭은, 컬럼에 대해 지정된 폭보다 폭이 작은 정수 값을 왼쪽에 공백을 채워 넣어 표시할 때 애플리케이션에서 사용할 수 있습니다. (즉, 이 폭은 결과 집합과 함께 반환되는 메타데이터에 존재합니다. 이를 사용할지는 애플리케이션에 달려 있습니다.)
디스플레이 폭은 컬럼에 저장할 수 있는 값의 범위를 제한하지 않습니다. 또한 컬럼 디스플레이 폭보다 더 넓은 값을 올바르게 표시하는 것을 막지도 않습니다. 예를 들어, SMALLINT(3)로 지정된 컬럼은 일반적인 SMALLINT 범위인 -32768부터 32767을 가지며, 세 자리로 표현 가능한 범위를 벗어나는 값은 세 자리보다 많은 자릿수를 사용하여 전체가 표시됩니다.
선택적(비표준) ZEROFILL 속성과 함께 사용하면, 기본 공백 패딩은 0으로 대체됩니다. 예를 들어, INT(4) ZEROFILL로 선언된 컬럼의 경우, 값 5는 0005로 조회됩니다.
참고
ZEROFILL 속성은 표현식에 참여하는 컬럼이나 UNION 쿼리에 사용되는 컬럼에 대해서는 무시됩니다.
ZEROFILL 속성을 가진 정수 컬럼에 디스플레이 폭보다 큰 값을 저장하면, MySQL이 복잡한 조인을 위해 임시 테이블을 생성할 때 문제가 발생할 수 있습니다. 이런 경우 MySQL은 데이터 값이 컬럼 디스플레이 폭에 맞는다고 가정합니다.
ZEROFILL 속성은 숫자 데이터 타입에 대해 사용 중단(deprecated)되며, 정수 데이터 타입에 대한 디스플레이 폭 속성도 마찬가지입니다. ZEROFILL 및 정수 데이터 타입에 대한 디스플레이 폭 지원은 향후 MySQL 버전에서 제거될 것으로 예상해야 합니다. 이러한 속성의 효과를 내기 위해 다른 방법을 사용하는 것을 고려하십시오. 예를 들어, 애플리케이션은 LPAD() 함수를 사용하여 원하는 폭까지 숫자를 0으로 패딩할 수 있으며, 또는 서식이 적용된 숫자를 CHAR 컬럼에 저장할 수도 있습니다.
모든 정수 타입은 선택적(비표준) UNSIGNED 속성을 가질 수 있습니다. unsigned 타입은 컬럼에 음수가 아닌 숫자만 허용하기 위해, 또는 컬럼에 대해 더 큰 상위 숫자 범위가 필요할 때 사용할 수 있습니다. 예를 들어, INT 컬럼이 UNSIGNED이면, 컬럼 범위의 크기는 동일하지만, 그 양 끝점은 -2147483648와 2147483647에서 0과 4294967295로 위쪽으로 이동합니다.
부동소수점 및 고정소수점 타입 또한 UNSIGNED가 될 수 있습니다. 정수 타입과 마찬가지로, 이 속성은 컬럼에 음수 값이 저장되는 것을 막습니다. 정수 타입과 달리, 컬럼 값의 상위 범위는 동일하게 유지됩니다. FLOAT, DOUBLE, DECIMAL (및 그 어떤 동의어)에 대한 UNSIGNED는 사용 중단되었으며, 향후 MySQL 버전에서 지원이 제거될 것으로 예상해야 합니다. 이러한 컬럼에는 대신 단순한 CHECK 제약을 사용하는 것을 고려하십시오.
숫자 컬럼에 대해 ZEROFILL을 지정하면, MySQL은 자동으로 UNSIGNED 속성을 추가합니다.
정수 또는 부동소수점 데이터 타입은 AUTO_INCREMENT 속성을 가질 수 있습니다. 인덱스된 AUTO_INCREMENT 컬럼에 NULL 값을 insert하면, 컬럼은 다음 시퀀스 값으로 설정됩니다. 일반적으로 이는, 컬럼에 대해 현재 테이블에서 가장 큰 값인 value 에 대해 value+1입니다. (AUTO_INCREMENT 시퀀스는 1부터 시작합니다.)
AUTO_INCREMENT 컬럼에 0을 저장하는 것은, NO_AUTO_VALUE_ON_ZERO SQL 모드가 활성화되지 않은 한, NULL을 저장하는 것과 동일한 효과를 가집니다.
AUTO_INCREMENT 값을 생성하기 위해 NULL을 insert하려면, 컬럼이 NOT NULL로 선언되어 있어야 합니다. 컬럼이 NULL로 선언되어 있으면, NULL을 insert할 경우 NULL이 저장됩니다. AUTO_INCREMENT 컬럼에 다른 값을 insert하면, 컬럼은 그 값으로 설정되고, 다음에 자동으로 생성되는 값이 insert한 값 바로 다음 값이 되도록 시퀀스가 재설정됩니다.
AUTO_INCREMENT 컬럼에 대해 음수 값은 지원되지 않습니다.
CHECK 제약은 AUTO_INCREMENT 속성을 가진 컬럼을 참조할 수 없으며, CHECK 제약에 사용 중인 기존 컬럼에 AUTO_INCREMENT 속성을 추가할 수도 없습니다.
FLOAT 및 DOUBLE 컬럼에 대해서는 AUTO_INCREMENT가 사용 중단되었으며, 향후 MySQL 버전에서 지원이 제거될 것으로 예상해야 합니다. 잠재적인 호환성 문제를 피하기 위해, 이러한 컬럼에서 AUTO_INCREMENT 속성을 제거하거나, 정수 타입으로 변환하는 것을 고려하십시오.
13.1.5 Bit-Value Type - BIT
13.1.7 Out-of-Range and Overflow Handling