작성일자 기준 : 8.0 버전
MYSQL 공홈 : https://dev.mysql.com/doc/refman/8.0/en/data-types.html
MYSQL 데이터 타입 (자료형)
- 정수형 데이터
종류 | 동의어 / 별칭 | 범위 | |
비트 | BIT | ||
정수(1byte) | TINYINT | ||
정수(1byte) | BOOL, BOOLEAN | TINYINT(1) = 'true' = TRUE TINYINT(0) = 'false' = FALSE |
|
정수(2byte) | SMALLINT | -32768~ 32767 | |
정수(3byte) | MEDIUMINT | -8388608~ 8388607 | |
정수(4byte) | INT | INTEGER | -2147483648~ 2147483647 |
정수(8byte) | BIGINT |
8 버전부터는 UNSIGNED 혹은 ZEROFILL에 관한 속성은 추후에 사라질 예정이라고 사용을 지양하라고 적혀있다.
** 자료형의 범위를 벗어난 값이 입력될 경우, 자료형의 가장 큰 값 혹은 가장 작은 값이 입력된다.
- 실수형 데이터
종류 | 동의어 / 별칭 | 비고 | |
실수 | DEMICAL(숫자, 소수점) | DEC | DEMICAL(5,3) 5자리 숫자와 3자리 소수점 |
실수(4byte) | FLOAT | ||
실수(8byte) | DOUBLE |
- 날짜 및 시간형 데이터
종류 | 설명 | 비고 |
DATE | YYYY-MM-DD 형식 | |
DATETIME | YYYY-MM-DD hh:mm:ss 형식 | |
TIMESTAMP | YYYY-MM-DD hh:mm:ss 형식 | UTC 시간 기준 |
TIME | hh:mm:ss 형식 |
컬럼 설정 시 DEFAULT CURRENT_TIMESTAMP 혹은 ON UPDATE CURRENT_TIMESTAMP를 이용하여 칼럼 업데이트 시 현재 시간으로 시간이 자동으로 설정된다.
** DEFAULT CURRENT_TIMESTAMP 가 없을 경우 디폴트 0
** CURRENT_TIMESTAMP 동의어, NOW()
- 문자열 데이터
종류 | 길이 판단 기준 | 설명 | 비고 |
CHAR | 문자 | 0 ~ 255까지 가능하지만, 괄호 안 숫자 설정 생략 시 디폴트 1 |
고정 길이 |
VARCHAR | 문자 | 최대 21,844자 | 가변 길이 |
TEXT | 문자 | 최대 65,535자 | |
MEDIUMTEXT | 문자열 | 최대 16,777,215자 | |
LONGTEXT | 문자열 | 최대 4,294,967,295자 | |
향후 지원 안함 | |||
VARBINARY | 바이트 | ||
BLOB | 바이트 | 블롭 객체는 주로 첨부파일 객체를 저장할 때 쓰임 | |
ENUM | 최대 65,535개 | ||
SET | 최대 64개 |
** 자료형의 범위를 벗어난 값이 입력될 경우, 최대 입력될 수 있는 글자 수(바이트수) 기준으로 잘려 저장된다.
** VARCHAR와 TEXT 차이
이외에도 공간 데이터 타입, JSON 타입이 존재한다.
댓글