자주 사용하는 데이터타입들을 정리해봤습니다. 깊은 내용은 담지 않았습니다. 또 사용되는 데이터타입이 있을 때마다 추가해서 정리할게요.
VARCHAR(M)
가변 길이의 STRING. M은 character의 최대 길이를 나타내며 최대 65,536 까지 사용 가능합니다. 하지만 하나의 레코드에서 TEXT, BLOB을 제외한 칼럼의 전체 크기가 64KB를 넘을 수 없으므로 만약 다른 칼럼에서 40KB를 사용한다면 VARCHAR 타입은 최대 24KB만 쓸 수 있습니다. 한글은 한 글자당 2Byte를 사용하고 UTF-8의 문자는 최대 3 Byte를 사용하므로 실제 저장 가능한 글자 수를 잘 계산해야합니다.
CHAR(M)
고정 길이의 STRING. 최대 255 byte까지 가능합니다. VARCHAR를 쓸지 CHAR를 쓸지 결정할때는 아래 두가지를 고려하는 것이 좋습니다.
BLOB
커다란 바이너리 데이터를 저장할 때 사용. 최대 크기에 따라 TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB로 나누어집니다. 문자셋을 가지고 있지 않아서 정렬시 바이트 숫자 기반으로 정렬합니다.
TEXT
커다란 텍스트 데이터를 저장할 때 사용. 최대 크기에 따라 TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT가 있습니다. 문제 셋을 가지고 있어서 문자 셋의 Collation 기반으로 값을 저장하고 비교합니다. Collation이란 문자열 칼럼의 값에 대한 비교나 정렬 순서를 위한 규칙을 의미합니다.
DECIMAL(M, N)
정확한 소수를 표현할 필요가 있을 때 사용합니다. FLOAT, DOUBLE 과 같은 부동 소수점에서 유효 범위 이외의 값은 보장이 안됩니다. 따라서 고정된 소수점까지 정확하게 관리해야 할 때는 DECIMAL을 사용합니다. M이 총 자릿수를 나타내며 N은 그중 소수부의 최대 자릿수를 나타냅니다. 즉, 정수부는 M - N 자릿수를 가질 수 있습니다.
INT
정수를 저장할 때 사용합니다. 크기에 따라 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT를 사용할 수 있습니다. 성능면에서 정수만을 사용할때는 DECIMAL이 아니라 INT를 사용하는 것이 좋습니다.
DATE
날짜를 표시할때 사용합니다. YYYY-MM-DD 형식입니다.
DATETIME
날짜와 시간을 표시할때 사용합니다. YYYY-MM-DD HH:MM:SS 형식입니다.
TIMESTAMP
DATETIME과 같은 형식을 가지지만 1970년 ~ 2038년 1월 19일 까지 사용가능합니다.