DataBase/MySQL
[MySQL] 데이터 타입(data_type) 정리
정민교
2021. 11. 23. 14:52
개요
MySQL 데이터 타입을 기록용으로 저장하기 위한 포스팅
공통
데이터 형식(M) : M 부동소수점 및 고정소수점 타입의 경우 정수타입의 최대 출력 폭을 나타낸다. ( 자릿 수 )
문자형 타입의 경우 M은 최대 길이를 나타낸다.( M의 최대 사용 가능 값은 데이터 타입에 따라 다름 )
숫자 데이터 형식
데이터 형식 | 바이트 수 | 숫자 범위 | 설명 |
BIT(N) | N/8 | 1~64Bit 표현, b'0000'형식으로 표현 | |
TINYINT | 1 | -128 ~ 127 | 정수 |
SMALLINT | 2 | -32,768 ~ 32,767 | 정수 |
MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 정수 |
INT INTEGER |
4 | 약-21억 ~ +21억 | 정수 |
BIGINT | 8 | 약 -900경 ~ +900경 | 정수 |
FLOAT | 4 | -3.40E+38 ~ -1.17E-38 | 소수점 아래 7자리까지 표현 |
DOUBLE REAL |
8 | -1.22E-308 ~ 1.79E+308 | 소수점 아래 15자리까지 표현 |
DECIMAL(m,[d]) NUMBER(m,[d]) |
5~17 | -10^38+1 ~ 10^38-1 | 전체 자릿수(m)와 소수점 이하 자릿수(d)를 가진 숫자형 예) decimal(5,2)는 전체 자릿수를 5자리로 하되, 그 중 소수점 이하를 2자리로 하겠다. |
- DECIMAL과 FLOAT,DOUBLE의 차이
* DECIMAL은 정확한 수치를 저장(소수점이 들어간 실수를 저장하려면 DECIMAL 사용) 하지만 FLOAT와 DOUBLE은 근사치의 숫자를 저장한다. 대신 FLOAT와 DOUBLE은 상당히 큰 숫자를 저장할 수 있다.
* 부호없는 정수(양수)만 데이터 타입을 지정할 수 있는데 선언 시 UNSIGNED 예약어만 뒤에 붙여주면 된다.
문자 데이터 형식
데이터 형식 | 바이트 수 | 설명 | |
CHAR(n) | 1 ~ 255 | 고정길이 문자형 n을 1부터 255까지 지정 그냥 CHAR만 쓰면 CHAR(1)과 동일 |
|
VARCHAR(n) | 1 ~ 65535 | 가변길이 문자형 n을 사용하면 1부터 65535까지 지정 |
|
BINARY(n) | 1 ~ 255 | 고정길이의 이진 데이터 값 | |
VARBINARY(n) | 1 ~ 255 | 가변길이의 이진 데이터 값 | |
TEXT 형식 | TINYTEXT | 1 ~ 255 | 255 크기의 TEXT 데이터 값 |
TEXT | 1 ~ 65535 | N 크기의 TEXT 데이터 값 | |
MEDIUMTEXT | 1 ~ 16777215 | 16777215 크기의 TEXT 데이터 값 | |
LONGTEXT | 1 ~ 4294967295 | 최대 4GB 크기의 TEXT 데이터 값 | |
BLOB 형식 | TINYBLOB | 1 ~ 255 | 255 크기의 BLOB 데이터 값 |
BLOB | 1 ~ 65535 | N 크기의 BLOB 데이터 값 | |
MEDIUMBLOB | 1 ~ 16777215 | 16777215 크기의 BLOB 데이터 값 | |
LONGBLOB | 1 ~ 4294967295 | 최대 4GB 크기의 BLOB 데이터 값 | |
ENUM(값들...) | 1 또는 2 | 최대 65535개의 열거형 데이터 값 | |
SET(값들...) | 1, 2, 3, 4, 8 | 최대 64개의 서로 다른 데이터 값 |
* CHAR 형식은 고정길이 문자형으로 자릿수가 고정되어 있다. 예를 들어, CHAR(100)에 'ABC' 3글자만 저장해도 100자리를 모두 확보한 후에 앞에 3자리 사용하고 97자리는 낭비한다. 때문에 가변길이 문자형인 VARCHAR를 사용하는게 좋아보이지만 되도록 CHAR로 설정하는 것이 INSRET/UPDATE 시 일반적으로 더 좋은 성능을 발휘한다.
* TEXT는 대용량 글자를 저장하기 위한 형식
* BLOB은 사진파일, 동영상 파일 등의 대용량의 이진 데이터를 저장하는데 사용
날짜와 시간 데이터 형식
데이터 형식 | 바이트 수 | 설명 |
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' 형식으로 사용 |
* DATEIME과 TIMESTAMP에 관한 포스팅은 다음 포스팅을 참고하면 좋을 것 같다.
https://spiderwebcoding.tistory.com/3
기타 데이터 형식
데이터 형식 | 바이트 수 | 설명 |
GEOMETRY | N/A | 공간 데이터 형식으로 선, 점 및 다각형 같은 공간 데이터 개체를 저장하고 조작 |
JSON | 8 | JSON 문서를 저장 |