11.1.1 수치 형의 개요
숫자 데이터 형식의 요약 설명합니다. 숫자의 특성과 스토리지 요구 사항에 대한 자세한 내용은 섹션 11.2 "숫자" 과 섹션 11.7 "데이터 유형의 스토리지 요구 사항" 을 참조하십시오.
M
은 정수의 최대 표시 폭을 보여줍니다. 최대 출력 폭은 255입니다. 섹션 11.2 "숫자" 에서 설명하고있는 바와 같이, 표시 폭은 그 형태에 포함 할 수있는 값의 범위는 관계 없습니다. 부동 소수점과 고정 소수점 형의 경우 M
은 저장 가능한 자리수의 합계입니다.
숫자 컬럼에 대해서 ZEROFILL
을 지정하면, MySQL은 자동으로 그 컬럼에 UNSIGNED
속성을 추가합니다.
UNSIGNED
속성을 허용하는 숫자 데이터 형식은 SIGNED
도 허용합니다. 그러나이 데이터 형식은 기본적으로 부호가 있기 때문에 SIGNED
속성을 지정해도 효과는 없습니다.
SERIAL
는 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
별칭입니다.
정수 컬럼 정의에서 SERIAL DEFAULT VALUE
는 NOT NULL AUTO_INCREMENT UNIQUE
별칭입니다.
한편이 UNSIGNED
형의 경우 2 개의 정수 값 사이에서 뺄셈을 할 때 NO_UNSIGNED_SUBTRACTION
SQL 모드를 사용하지 않으면 결과 값은 부호없이됩니다. 섹션 12.10 「캐스트 함수 및 연산자 " 를 참조하십시오.
BIT[(
M
)]비트 필드 형.
M
은 값 당 비트 수 (1-64)를 나타냅니다.M
을 생략하면 기본값은 1입니다.TINYINT[(
M
)] [UNSIGNED] [ZEROFILL]아주 작은 정수. 부호있는 범위는
-128
에서127
입니다. 서명되지 않은 범위는0
에서255
입니다.BOOL
,BOOLEAN
이러한 형태는
TINYINT(1)
의 동의어입니다. 0 값은 false로 간주됩니다. 0이 아닌 값은 true로 간주됩니다.mysql>
SELECT IF(0, 'true', 'false');
+------------------------+ | IF(0, 'true', 'false') | +------------------------+ | false | +------------------------+ mysql>SELECT IF(1, 'true', 'false');
+------------------------+ | IF(1, 'true', 'false') | +------------------------+ | true | +------------------------+ mysql>SELECT IF(2, 'true', 'false');
+------------------------+ | IF(2, 'true', 'false') | +------------------------+ | true | +------------------------+그러나 여기에 표시된대로
TRUE
값과FALSE
값은 각각1
과0
의 단순한 별칭입니다.mysql>
SELECT IF(0 = FALSE, 'true', 'false');
+--------------------------------+ | IF(0 = FALSE, 'true', 'false') | +--------------------------------+ | true | +--------------------------------+ mysql>SELECT IF(1 = TRUE, 'true', 'false');
+-------------------------------+ | IF(1 = TRUE, 'true', 'false') | +-------------------------------+ | true | +-------------------------------+ mysql>SELECT IF(2 = TRUE, 'true', 'false');
+-------------------------------+ | IF(2 = TRUE, 'true', 'false') | +-------------------------------+ | false | +-------------------------------+ mysql>SELECT IF(2 = FALSE, 'true', 'false');
+--------------------------------+ | IF(2 = FALSE, 'true', 'false') | +--------------------------------+ | false | +--------------------------------+마지막 두 문장은
2
가1
모두0
도 같지 위해 나타나는 결과를 표시합니다.SMALLINT[(
M
)] [UNSIGNED] [ZEROFILL]작은 정수. 부호있는 범위는
-32768
에서32767
입니다. 서명되지 않은 범위는0
에서65535
입니다.MEDIUMINT[(
M
)] [UNSIGNED] [ZEROFILL]중간 크기의 정수. 부호있는 범위는
-8388608
에서8388607
입니다. 서명되지 않은 범위는0
에서16777215
입니다.INT[(
M
)] [UNSIGNED] [ZEROFILL]보통 크기의 정수. 부호있는 범위는
-2147483648
에서2147483647
입니다. 서명되지 않은 범위는0
에서4294967295
입니다.INTEGER[(
M
)] [UNSIGNED] [ZEROFILL]이 형태는
INT
의 동의어입니다.BIGINT[(
M
)] [UNSIGNED] [ZEROFILL]큰 정수. 부호있는 범위는
-9223372036854775808
에서9223372036854775807
입니다. 서명되지 않은 범위는0
에서18446744073709551615
입니다.SERIAL
는BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
별칭입니다.BIGINT
컬럼에 대해주의를 요하는 사항은 다음과 같습니다.모든 연산은 부호가있는
BIGINT
값 또는DOUBLE
값을 사용하여 이루어지기 때문에 비트 함수를 사용하지 않는 한,9223372036854775807
(63 비트)보다 큰 부호없는 정수를 사용하지 마십시오. 그렇게하면BIGINT
값에서DOUBLE
값으로 변환시 반올림 오류에 대한 결과 지난 몇 자리에 오차가 발생할 수 있습니다.MySQL은 다음의 경우에
BIGINT
를 처리 할 수 있습니다.부호 없음의 큰 값을
BIGINT
컬럼에 저장하는 정수를 사용할 때.MIN(
또는col_name
)MAX(
에서. 여기에서col_name
)col_name
는BIGINT
컬럼을 말합니다.연산자 (
+
,-
,*
등)를 사용하는 경우. 여기에서 두 피연산자는 정수입니다.
문자열을 사용하여 저장하면 언제든지 정확한 정수 값을
BIGINT
컬럼에 저장할 수 있습니다. 이 경우, MySQL은 중간 배정도 표현을 포함하지 않는 문자열에서 숫자로 변환합니다.두 피연산자가 정수의 경우
-
,+
, 그리고*
연산자는BIGINT
연산을 사용합니다. 이것은 2 개의 큰 정수 (또는 정수를 반환하는 함수의 결과)를 곱하면 그 결과가9223372036854775807
보다 큰 경우에는 예기치 않은 결과가된다는 것을 의미합니다.
DECIMAL[(
M
[,D
])] [UNSIGNED] [ZEROFILL]포장 "정확한"고정 소수점 숫자입니다.
M
은 자리수의 합계 (정확도)에서D
는 소수점 이하 자릿수 (스케일)입니다. 소수점과 음수에 "-
"기호는M
에 포함되지 않습니다.D
가 0이면 소수점과 소수 부분은 없습니다.DECIMAL
의 최대 자리수 (M
)은 65입니다. 지원되는 소수부의 최대 자리수 (D
)는 30입니다.D
가 생략 된 경우 기본값은 0입니다.M
이 생략 된 경우 기본값은 10입니다.UNSIGNED
가 지정되어있는 경우, 음수 값은 허용되지 않습니다.DECIMAL
컬럼을 사용하는 모든 기본 계산 (+, -, *, /
)는 65 자리의 정밀도로 이루어집니다.DEC[(
,M
[,D
])] [UNSIGNED] [ZEROFILL]NUMERIC[(
,M
[,D
])] [UNSIGNED] [ZEROFILL]FIXED[(
M
[,D
])] [UNSIGNED] [ZEROFILL]이러한 형태는
DECIMAL
의 동의어입니다.FIXED
동의어는 다른 데이터베이스 시스템과의 호환성을 위해 사용할 수 있습니다.FLOAT[(
M
,D
)] [UNSIGNED] [ZEROFILL]작은 (단정) 부동 소수점 숫자입니다. 허용되는 값은
-3.402823466E+38
에서-1.175494351E-38
,0
및1.175494351E-38
에서3.402823466E+38
입니다. 이들은 IEEE 표준에 근거한 이론적 인 한계입니다. 사용하는 하드웨어 또는 운영 체제에 따라 실제 범위는 조금 적을 수 있습니다.M
은 자리수의 합계에서D
는 소수점 이하의 자리수입니다.M
과D
를 생략하면 값은 하드웨어에서 허용 된 한도까지 저장됩니다. 단 정밀도 소수점 숫자는 대략 소수점 7 자리까지 정확합니다.UNSIGNED
가 지정되어있는 경우, 음수 값은 허용되지 않습니다.MySQL에서는 모든 계산이 배정 밀도로 이루어지고 있기 때문에
FLOAT
를 사용하면 예기치 않은 문제가 발생할 수 있습니다. 섹션 B.5.5.7 "일치하는 행이없는 경우의 문제 해결" 을 참조하십시오.DOUBLE[(
M
,D
)] [UNSIGNED] [ZEROFILL]보통 크기 (배정 밀도)의 부동 소수점 숫자입니다. 허용되는 값은
-1.7976931348623157E+308
에서-2.2250738585072014E-308
,0
및2.2250738585072014E-308
에서1.7976931348623157E+308
입니다. 이들은 IEEE 표준에 근거한 이론적 인 한계입니다. 사용하는 하드웨어 또는 운영 체제에 따라 실제 범위는 조금 적을 수 있습니다.M
은 자리수의 합계에서D
는 소수점 이하의 자리수입니다.M
과D
를 생략하면 값은 하드웨어에서 허용 된 한도까지 저장됩니다. 배정도 부동 소수는 대략 소수점 이하 15 자리까지 정확합니다.UNSIGNED
가 지정되어있는 경우, 음수 값은 허용되지 않습니다.DOUBLE PRECISION[(
,M
,D
)] [UNSIGNED] [ZEROFILL]REAL[(
M
,D
)] [UNSIGNED] [ZEROFILL]이러한 유형은
DOUBLE
의 동의어입니다. 예외 :REAL_AS_FLOAT
SQL 모드가 유효한 경우는DOUBLE
대신REAL
이FLOAT
의 동의어입니다.FLOAT(
p
) [UNSIGNED] [ZEROFILL]부동 소수점 숫자입니다.
p
는 비트 정밀도를 가리 키지 만, MySQL은 결과 데이터 유형에 대해FLOAT
또는DOUBLE
중 어느 것을 사용할지 결정하기 위해서만이 값을 사용합니다.p
가 0에서 24의 때 해당 데이터 유형은M
값도D
값도없는FLOAT
됩니다.p
가 25에서 53을 해당 데이터 유형은M
값도D
값도없는DOUBLE
입니다. 결과가 컬럼의 범위는이 섹션 앞부분 단 정밀도FLOAT
또는 배정 밀도DOUBLE
데이터 형의 경우와 동일합니다.FLOAT(
구문은 ODBC과의 호환성을 확보하기 위해 준비되어 있습니다.p
)