MySQL 데이터 타입
MySQL에는 30여개의 데이터 타입이 존재합니다.
숫자 데이터 형식
숫자형 데이터 형식으로 정수와 실수 등의 숫자를 표현합니다.
데이터 타입 |
바이트 수 |
숫자 범위 |
설명 |
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])
NUMERIC(m, [d]) |
5 ~ 17 |
-1038+1 ~ +1038-1 |
전체 라릿수(m)와 소수점 이하 자릿수(d)를 가진 숫자형
예) decimal(5, 2)는 자릿수 5자리로 하되 소숫점 이하를 2자리로 합니다. |
DECIMAL은 정확한 수치를 저장하지만 FLOAT, REAL은 근사치 값을 저장합니다.
대신에 FLOAT, REAL은 더 큰 숫자를 저장할 수 있습니다.
부호없는 숫자를 저장할 때에는 UNSIGNED 예약어를 같이 사용합니다.
문자 데이터 형식
데이터 타입 |
바이트 수 |
설명 | |
CHAR(n) |
1 ~ 255 |
고정길이 문자형. n을 1부터 255까지 지정.
CHARACTER의 약자이며, CHAR 이라고만 하면 CHAR(1)과 동일
CHAR(100) 인 경우 세 자리만 사용해도 나머지 97 자리를 할당.
성능은 CHAR이 VARCHAR보다 더 좋음. | |
VARCHAR(n) |
1 ~ 65535 |
가변길이 문자형. n을 사용하면 1부터 65535까지 지정
Variable Character의 약자.
VARCHAR(100) 인 경우 3글자를 저장하는 경우 3자리의 데이터 공간만 사용 | |
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 데이터 값 |
TEXT |
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과 VARCHAR은 UTF-8의 형태를 지니므로 입력한 글자의 언어에 따라 내부적으로 크기가 달라집니다.
따라서 CHAR(100)은 한글 영어 상관 없이 100글자를 의미합니다.
mysql5.7의 경우 문자 인코딩 character set 설정은 my.ini 또는 my.cnf 파일에 설정되어 있습니다.
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
ProgramData 폴더는 숨김 폴더입니다.
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
BLOB(Binary Large Object)는 사진, 동영상, 문서 파일 등의 대용량 이진 데이터를 저장하는데 사용합니다.
날짜와 시간 데이터 형식
데이터 형식 |
바이트 수 |
설명 |
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' 형식으로 사용. |
날짜 형식별 차이점
SELECT CAST('2020-10-19 12:35:29.123' AS DATE) AS 'DATE';
SELECT CAST('2020-10-19 12:35:29.123' AS TIME) AS 'TIME';
SELECT CAST('2020-10-19 12:35:29.123' AS DATETIME) AS 'DATETIME';
기타 데이터 형식
데이터 형식 |
바이트 수 |
설명 |
GEOMETRY |
N/A |
공간 데이터 형식으로 선, 점 및 다각형 같은 공간 데이터 개체를 저장 |
JSON |
8 |
JSON 문서를 저장. MySQL 5.7.8 부터 지원 |
데이터 타입 관련 공식 문서
'데이터베이스[DB]' 카테고리의 다른 글
[MS-SQLServer] SQL Server 2016 이미지 다운로드 및 설치 전 준비 (1) | 2018.05.08 |
---|---|
[H2DB] H2 Database란? H2DB 설치 방법 (0) | 2018.04.11 |
[MySQL] MySQL JSON 관련 함수 (0) | 2018.03.24 |
[MySQL] MySQL 파입 입출력 경로 바꿔 주기. secure-file-priv 설정 (0) | 2018.03.22 |
[MySQL] MySQL Error Code: 1301 larger than max_allowed_packet 오류 해결법 (0) | 2018.03.22 |