SQL
[SQL] MYSQL 데이터 타입 종류와 특징
또로롱
2023. 1. 17. 02:15
MYSQL 데이터 타입 종류와 특징
1. 데이터 타입을 선택하는 방법
: 일반적으로 데이터를 저장하고 표현하는 데 문제가 없는 데이터 타입 중 가장 작은 Byte를 차지하는 데이터 타입을 골라야 한다. 보통 작은 데이터 타입일수록 디스크나 메모리, CPU 캐시에 더 적은 공간을 사용하기 때문에 더 빠른 처리가 가능하기 때문이다. 하지만 데이터 값을 너무 작게 추정해 데이터 타입의 범위를 벗어나는 데이터가 있는 경우 역시 주의해야 한다. 스키마 내 데이터 타입의 범위를 늘리는 작업은 매우 어렵고 시간도 많이 소요되기 때문이다.
기본적인 용량 외에도 데이터를 처리하는 데 소요되는 CPU 크기를 고려해 데이터 타입을 선정해야 한다. 문자 비교보다는 정수 비교가 소요가 더 적고, 날짜와 시간을 문자열로 지정하는 것보다 날짜 타입으로 적는 것이 더 효율적이듯 데이터 타입별 특성을 이해하고 쓰임에 맞게 설계해야 한다. 또한 저장 공간의 낭비를 줄이기 위해 NULL을 꼭 저장해야 되는 경우가 아니라면 컬럼은 되도록 NOT NULL로 정의한다.
2. 데이터 타입의 종류와 특징
1) 문자형 데이터 타입
| 데이터 유형 | 정의 |
| CHAR(n) | 고정 길이 데이터 타입(최대 255byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다. |
| VARCHAR(n) | 가변 길이 데이터 타입 (최대 65535byye) 지정된 길이보다 짧은 데이터 입력될 시 나머지 공간은 채우지 않는다. |
| TINYTEXT(n) | 문자열 데이터 타입 (최대 255byte) |
| TEXT(n) | 문자열 데이터 타입 (최대 65535byte) |
| MEDIUMTEXT(n) | 문자열 데이터 타입 (최대 16777215byte) |
| LONGTEXT(n) | 문자열 데이터 타입 (최대 4294967295byte) |
| JSON | JSON 문자열 데이터 타입 - JSON 형태의 포맷을 꼭 준수해야 한다. |
2) 숫자형 데이터 타입
|
데이터 유형
|
signed
|
unsinged
|
byte
|
정의
|
|
TINYINT(n)
|
0 ~ 255
|
1
|
정수형 데이터 타입
|
|
|
SMALLINT(n)
|
0 ~ 65535
|
2
|
정수형 데이터 타입
|
|
|
MEDIUMINT(n)
|
0 ~ 16777215
|
3
|
정수형 데이터 타입
|
|
|
INT(n)
|
0 ~ 4294967295
|
4
|
정수형 데이터 타입
|
|
|
BIGINT(n)
|
-9223372036854775808
~ 9223372036854775807
|
0 ~ 18446744073709551615
|
8
|
정수형 데이터 타입 - 무제한 수 표현할 수 있다.
|
|
DECIMAL
(길이, 소수)
|
전체자리수(precision)와 소수점자리수(scale)를 가짐
|
가변
|
고정 소수형 데이터 타입
|
|
|
FLOAT
(길이, 소수)
|
-3.402823466×1038 ~ 3.402823466×1038
|
4
|
부동 소수형 데이터 타입(4byte)
|
|
|
DOUBLE
(길이, 소수)
|
-1.7976931348623157×10308 ~ 1.7976931348623157×10308
|
8
|
부동 소수형 데이터 타입(8byte)
|
|
3) 날짜형 데이터 타입
|
데이터 유형
|
정의
|
|
DATE
|
날짜(년도, 월, 일) 형태의 기간 표현 데이터 타입(3byte)
|
|
TIME
|
시간(시, 분, 초) 형태의 기간 표현 데이터 타입(3byte)
|
|
DATETIME
|
날짜와 시간 형태의 기간 표현 데이터 타입(8byte)
|
|
TIMESTAMP
|
날짜와 시간 형태의 기간 표현 데이터 타입(4byte) -시스템 변경 시 자동으로 그 날짜와 시간이 저장된다.
|
|
YEAR
|
년도 표현 데이터 타입(1byte)
|
|
LONGTEXT(n)
|
문자열 데이터 타입(최대 4294967295byte)
|
|
JSON
|
JSON 문자열 데이터 타입 - JSON 형태의 포맷을 꼭 준수해야 한다.
|