사이드 프로젝트를 하며 DB설계를 하던중 데이터 형식(Data Types)이 궁금해져서 공부하면서 기록해보겠습니다.
데이터 형식 | 바이트 수 | 숫자 범위 | 설명 |
---|---|---|---|
SMALLINT | 1 | -32,768 ~32,768 | 정수 |
INT,INTEGER | 4 | 약 -21억~+21억 | 정수 |
BIGINT | 8 | 약 -900경~ +900경 | 정수 |
FLOAT | 4 | -3.40E+38 ~ -1.17E -38 | 소수점 아래 7자리까지 표현 |
DECIMAL(m,[d]) | 5~17 | -10의 38승+1 ~ +10의38승-1 | 전체 자릿수(m)와 소숫점 이하 자릿수(d)를 가진 숫자형 |
데이터 형식 | 바이트수 | 설명 |
---|---|---|
CHAR(n) | 1~255 | 고정 길이 문자형. n을 1부터 255까지 지정.character의 약자,그냥 CHAR만 쓰면 CHAR(1)과 동일 |
VARCHAR(n) | 1~65535 | 가변길이 문자형. n을 사용하면 1부터 65535까지 지정, Variable character의 약자 |
BINARY(n) | 1~255 | 고정길이의 이진 데이터 값 |
BLOB | 1~65535 | N크기의 BLOB데이터 값 |
LONGTEXT | 1~4294967295 | 최대 4GB 크기의 TEXT 데이터 값 |
ChAR 형식은 고정길이 문자형으로 자릿수가 고정되어 있습니다.
-예를 들어, CHAR(100)에 "ABC"3글자만 저장해도 100자리를 모두 확보한 후에 앞에 3자리를 사용하고 뒤의 97자리는 낭비하게 되는 결과가 나옵니다.
VARCHAR 형식은 가변길이 문자형으로 VARCHAR(100)에 "ABC" 3글자를 저장할 경우에 3자리만 사용하게 됩니다.
-그래서 공간을 효율적으로 운영할 수 있습니다.
하지만, CHAR형식으로 설정하는 것이 INSERT/ UPDATE 시에 일반적으로 더 좋은 성능을 발휘합니다.
BINARY와 VARBINARY는 바이트 단위의 이진 데이터 값을 저장하는데 사용됩니다.
TEXT형식은 대용량의 글자를 저장하기 위한 형식으로 필요에 따라서 TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT 등의 형식을 사용할 수 있습니다.
BLOB도 필요한 크기에 따라서 TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB 등의 형식을 사용할 수 있습니다.
데이터 형식 | 바이트 수 | 설명 |
---|---|---|
DATE | 3 | 날짜는 1001-01-01 ~ 9999-12-31 까지 저장되며 날짜 형식만 사용 'YYYY-MM-DD'형식으로 사용됨. |
TIME | 3 | -838:59:59.000000 ~ 838:59:59.000000 까지 저장 되며 , 'HH:MM:SS'형식으로 사용합니다. |
DATETIME | 8 | 날짜는 1001-01-01 00:00:00 ~ 9999-12-31 23:59:59 까지 저장되며 형식은 'YYYY-MM-DD HH:MM:SS' 형식으로 사용합니다. |
TIMESTAMP | 4 | 날짜는 1001-01-01 00:00:00 ~ 9999-12-31 23:59:59 까지 저장되며 형식은 'YYYY-MM-DD HH:MM:SS' 형식으로 사용합니다. time_zone 시스템 변수와 관련이 있으며 UTC시간대 변환하여 저장합니다. |
YEAR | 1 | 1901~ 2155까지 저장. 'YYYY'형식으로 사용합니다. |