| 데이터 타입 | 설명 (저장 공간, 범위/특징, 사용 참고 사항) |
|---|---|
| TINYINT | 1 byte. 범위: -128 ~ 127. ⚠️ 낮은 빈도. 0 또는 1과 같은 매우 작은 플래그 값에 제한적으로 사용됩니다. |
| SMALLINT | 2 bytes. 범위: $-32,768$ ~ $32,767$. ⚠️ 낮은 빈도. 이 범위의 정수는 보통 INT를 선호하기 때문에 잘 쓰이지 않습니다. |
| MEDIUMINT | 3 bytes. 범위: $-8,388,608$ ~ $8,388,607$. ⚠️ 낮은 빈도. $4$ 바이트인 INT에 비해 장점이 적습니다. |
| INT / INTEGER | 4 bytes. 범위: 약 $-21$억 ~ $21$억. ✅ 가장 일반적. 대부분의 표준 정수 데이터에 권장되는 주력 형식입니다. |
| BIGINT | 8 bytes. 특징: 매우 큰 정수. ✅ 높은 빈도. $21$억을 초과하는 대규모 ID 값이나 카운터에 필수적으로 사용됩니다. |
| FLOAT | 4 bytes. 특징: 넓은 범위의 소수점 (근사값, 단정밀도). 오차가 허용되는 과학/통계 데이터에 사용됩니다. |
| DOUBLE | 8 bytes. 특징: 더 넓은 범위의 소수점 (근사값, 배정밀도). FLOAT보다 높은 정밀도를 갖습니다. |
| DECIMAL (M, D) | 가변 byte. 특징: 정확한 값 저장. $M$(총 자릿수), $D$(소수점 이하) 지정. ✅ 필수 사용처: 돈(금액), 환율 등 정밀 계산에 사용됩니다. |
| ENUM ('val1', '...') | 1 또는 2 bytes. 특징: 컬럼이 가질 값들을 미리 정의하고 제한. 데이터 일관성 유지에 용이합니다. |
| 데이터 타입 | 설명 (저장 공간, 특징, 용도 및 참고 사항) | 사용빈도 |
|---|---|---|
| CHAR (M) | 고정 길이 문자열 (M 바이트). 특징: 지정된 길이 $M$이 $1$ 바이트에서 최대 $255$ 바이트까지 고정되어 저장되며, 짧더라도 남은 공간은 공백(Padding)으로 채워집니다. 용도: 데이터 길이가 항상 일정한 경우 (예: 전화번호, 우편번호, 2자리 국가 코드)에 성능이 빠릅니다. | 중 |
| VARCHAR (M) | 가변 길이 문자열 (길이에 따라 다름 + $1$ 또는 $2$ 바이트). 특징: 실제로 저장된 데이터의 길이만큼만 공간을 사용하며, 길이를 저장하는 추가 바이트가 필요합니다. 최대 길이는 $65,535$ 바이트입니다. 용도: 대부분의 일반적인 텍스트 데이터(예: 이름, 주소, 제목)에 사용되는 가장 일반적인 문자열 형식입니다. | 최상 ✅ |
| TEXT | 최대 $65,535$ 문자 (+$2$ 바이트). 특징: 긴 텍스트 블록을 저장하는 가변 길이 형식입니다. 용도: 웹 페이지 내용, 긴 기사, 대량의 본문 등 길이가 $255$자를 초과하는 일반적인 텍스트 데이터에 사용됩니다. | 상 |
| LONGTEXT | 최대 $4,294,967,295$ 문자 (+$4$ 바이트). 특징: MySQL에서 저장할 수 있는 가장 긴 텍스트 형식입니다. 용도: 서버 로그 파일, 초대형 문서 등 최대 용량이 필요한 경우에 사용됩니다. | 하 |
| BLOB | 최대 $65,535$ 바이트 (+$2$ 바이트). 특징: 일반적인 바이너리 데이터 저장에 사용됩니다. | 하 ⚠️ |
| LONGBLOB | 최대 $4,294,967,295$ 바이트 (+$4$ 바이트). 특징: MySQL에서 저장할 수 있는 가장 큰 바이너리 형식입니다. | 최하 ⚠️ |
| TINYTEXT | 최대 $255$ 문자 (+$1$ 바이트). 특징: 짧은 텍스트 블록을 저장하는 가변 길이 형식입니다. 용도: 짧은 메모나 코멘트 등, 최대 길이가 VARCHAR(255)를 초과하지 않는 경우에 사용됩니다. |
하 |
| MEDIUMTEXT | 최대 $16,777,215$ 문자 (+$3$ 바이트). 특징: 매우 긴 텍스트를 저장합니다. 용도: 방대한 분량의 문서, 책 내용 등 대용량 텍스트 저장에 사용됩니다. | 하 |
| ENUM | 1 또는 2 bytes. 특징: 컬럼이 가질 값들을 미리 정의하고 그중 하나만 허용합니다. (앞서 설명됨) 용도: 데이터 일관성 유지 및 제한적인 선택지에 사용됩니다. | 상 |
| SET | 1 ~ 8 bytes. 특징: 미리 정의된 값들 중에서 여러 개를 동시에 선택하여 저장할 수 있는 형식입니다. 용도: 여러 개의 옵션을 동시에 선택해야 할 때 (예: 취미 목록) 사용됩니다. | 하 |
| 데이터 타입 | 설명 (저장 공간, 형식, 범위, 특징 및 용도) | 사용빈도 |
|---|---|---|
| DATE | 3 bytes. 형식: YYYY-MM-DD. 범위: '1000-01-01' ~ '9999-12-31'. 특징: 날짜만 저장합니다. (예: 생일) |
상 |
| DATETIME | 8 bytes. 형식: YYYY-MM-DD HH:MM:SS. 범위: '1000-01-01' ~ '9999-12-31'. 특징: 날짜와 시간을 저장하며, 시간대(Time Zone)의 영향을 받지 않고 저장됩니다. |
최상 ✅ |
| TIMESTAMP | 4 bytes. 형식: YYYY-MM-DD HH:MM:SS. 범위: '1970-01-01' ~ 약 '2038-01-19' (UTC). 특징: 시간대에 따라 자동 변환되어 저장되며, 레코드의 생성/수정 시간 기록에 유용합니다. |
|
| 서버 시간에 따라 유동적으로 변하는 데이트 타입 | ||
Y2K38 문제가 있으므로 사용에는 주의 할 것 |
상 ✅ | |
| TIME | 3 bytes. 형식: HH:MM:SS. 범위: '-838:59:59' ~ '838:59:59'. 특징: 시간이나 시간 간격을 저장하며, 범위가 넓습니다. |
중 |
| YEAR | 1 byte. 형식: YYYY. 범위: 1901 ~ 2155. 특징: 연도만 저장하며, 4자리로 표시됩니다. |
하 |
| 데이터 타입 | 특징 및 용도 |
|---|---|
| BOOLEAN 또는 BOOL | 1 byte ✅ 논리 데이터 타입의 별칭입니다. MySQL은 이를 **TINYINT(1)**로 처리합니다. |
| 데이터 타입 | LOB 유형 | 최대 저장 용량 | 설명 (특징 및 용도) |
|---|---|---|---|
| TINYTEXT | Character LOB | $255$ 문자 | 짧은 텍스트 블록 (최대 $255$자) 저장. |
| TEXT | Character LOB | $65,535$ 문자 | 일반적인 길이의 긴 텍스트 (기사 본문 등) 저장. |
| MEDIUMTEXT | Character LOB | $16,777,215$ 문자 | 매우 긴 텍스트 (방대한 문서) 저장. |
| LONGTEXT | Character LOB | ($4,294,967,295$ 문자) | MySQL에서 저장 가능한 가장 긴 텍스트 형식. |
| TINYBLOB | Binary LOB | $255$ 바이트 | 짧은 바이너리 데이터 저장. |
| BLOB | Binary LOB | $65,535$ 바이트 | 일반적인 바이너리 데이터 저장. |
| MEDIUMBLOB | Binary LOB | $16,777,215$ 바이트 | 대용량 바이너리 데이터 저장. |
| LONGBLOB | Binary LOB | ($4,294,967,295$ 바이트) | MySQL에서 저장 가능한 가장 큰 바이너리 형식. |