데이터 타입 이름 뒤에 괄호( )가 있으면 parameter를 필수로 입력해야 하는(대부분의 경우 크기 지정) 데이터 타입이고, 괄호가 없으면 크기를 지정하지 않아도 default value를 가지고 있는 데이터 타입이다.
TINYINT( )
SMALLINT( )
MEDIUMINT( )
INT
BIGINT( )
Type | Storage(Bytes) | Signed Range | Unsigned Range |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -263 ~ 263-1 | 0 ~ 264-1 |
DECIMAL
Type | Storage(Bytes) | Range |
---|---|---|
DECIMAL | parameter A에 따라 유동적 | 최대 65 자리(digits) |
FLOAT
DOUBLE
REAL
고정소수점과의 가장 큰 차이는, DECIMAL은 정확한 수치를 저장하지만, FLOAT과 DOUBLE은 근사치의 숫자를 저장할 뿐이다.
Type | Storage (Bytes) | Range |
---|---|---|
FLOAT | 4 | -3.402823466 x 1010 ~ 3.402823466 x 1038 |
DOUBLE | 8 | -1.7976931348623157 x 10308 ~ 1.7976931348623157 x 10308 |
REAL | " | " |
BIT( )
DATE
DATETIME( )
TIMESTAMP( )
Type | Range | Format |
---|---|---|
DATE | 1000-01-01 ~ 9999-12-31 | YYYY-MM-DD |
DATETIME | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | YYYY-MM-DD hh:mm:ss |
TIMESTAMP | 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07(UTC) | YYYY-MM-DD hh:mm:ss |
TIME
TIME 데이터 타입은
1. 현재 시간을 나타내기 위해서나(to represent a time of day)
2. 경과 시간을 나타내기 위해서나(elapsed time)
3. 두 사건 간의 시간차를 나타내기 위해서(time interval between two events)
Type | Range | Format |
---|---|---|
TIME | -838:59:59.000000 ~ 838:59:59.00000 | hhh:mm:ss.000000 |
YEAR
YEAR 데이터 타입은 연도만을 나타내기 위해서 사용
Type | Bytes | Range |
---|---|---|
YEAR(4) | 1 | 1901 ~ 2155 |
YEAR(2) | 1 | 0 ~ 99(1970~1999, 2000~2069) |
여기서 부터는 추후에 추가
이 글은 https://dev.mysql.com 의 공식 document를 참고하여 작성하였습니다.