MySQL 자료형 정리

양시준·2022년 2월 4일
0

TIL

목록 보기
2/21

개요

5.0 이상 버전을 기준으로 정리하였습니다.
5.0 미만 버전에는 아래와 다른 내용이 있을 수도 있습니다.

숫자

정수

TINYINT

  • 1 바이트의 크기를 가진다.
  • signed 기준 -128 ~ 127의 범위를 가진다.

SMALLINT

  • 2 바이트의 크기를 가진다.
  • signed 기준 -32768 ~ 32767의 범위를 가진다.

MEDIUMINT

  • 3 바이트의 크기를 가진다.
  • signed 기준 약 ±8백만의 범위를 가진다.

INT

  • 4 바이트의 크기를 가진다.
  • signed 기준 ±20억의 범위를 가진다.
  • INT(N) [ZEROFILL]
    • ZEROFILL 입력 시 N 자리 수 만큼 0이 나온다.
    • N이 5일때 -> 00004, 00234, 231441

    BIGINT

  • 8 바이트의 크기를 가진다.
  • signed 기준 ±900경의 범위를 가진다.

실수

DECIMAL

  • 가변성을 가진다. (바이트가 고정되어있지 않음)
  • 고정소수점 수이다.
    • 소수점 위치가 고정되어 있기 때문에 유동소수점에 비해 표현할 수 있는 범위가 작다.
    • 어떤 소수를 정확히 표현하는데 사용된다.
  • 전체자리수(precision)와 소수점자리수(scale)를 가진다.
    • DECIMAL(M,D) M은 실수(최대 65) D는 소수의 자릿수이다.
    • DECIMAL(6)의 경우: -999999 ~ 999999
    • DECIMAL(6, 3)의 경우: -999.999 ~ 999.999

FLOAT

  • 4 바이트의 크기를 가진다.
  • 유동소수점 수이다.
  • 3.402823466×1038 ~ 3.402823466×1038의 범위를 가진다.

DOUBLE

  • 8 바이트의 크기를 가진다.
  • 유동소수점 수이다.
  • 1.7976931348623157×10308 ~ 1.7976931348623157×10308의 범위를 가진다.

기타

BIT

  • 가변성을 가지며 최대 64비트까지 사용할 수 있다.
  • 비트값 타입을 가진다.
  • 0과 1로 구성되는 바이너리(binary) 값을 저장할 수 있다.
  • BIT(M) M (1~64)

BOOLEAN

  • TINYINT(1)이 적용된다.

날짜와 시간

DATETIME

  • 8 바이트의 값을 가진다.
  • 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59의 범위를 가진다.

TIMESTAMP

  • 4 바이트의 값을 가진다.
  • 1970-01-01 00:00:00 이후로 지난 초가 저장된다.
  • 1970-01-01 00:00:00 ~ 2038-01-19 03:14:07의 범위를 가진다.
  • TIMESTAMP는 상대적인 값을 가진다. 즉, 국가나 시차에 따라 다른 값이 보인다.

DATE

  • 3 바이트의 값을 가진다.
  • 1000-01-01 ~ 9999-12-31의 범위를 가진다.

TIME

  • 3 바이트의 값을 가진다.
  • -838:59:59 ~ 838:59:59의 범위를 가진다.

YEAR

  • 1 바이트의 값을 가진다.
  • 1901 ~ 2155의 범위를 가진다.

문자열

CHAR/VARCHAR 와 TEXT의 차이점

CHAR/VARCHAR는 각 행에 저장이 되지만 TEXT는 따로 저장이 된다.
MySQL에서는 각 행이 최대 65,535 바이트까지 값을 저장할 수 있기 떄문에 VARCHAR(65,535)를 사용한다면 그 행에 다른 타입을 추가 할 수 없지만, TEXT를 사용한다면 각 행에 저장되는 것이 아닌 따로 저장되기 때문에 큰 값을 저장할 수 있다.
그러므로 각 행 값이 65,535 바이트가 넘어가지 않는 값을 다룬다면 VARCHAR를, 65,535 바이트가 넘어가는 값을 다룬다면 TEXT를 사용하는게 좋다.

CHAR

  • 길이가 고정된 고정 길이의 문자열을 다룬다.
  • CHAR(M) M(0~225)
  • 설정한 크기보다 작은 길이의 문자열이 입력되면, 나머지 공간을 공백으로 채워 길이를 M과 같게 만든다.
  • M이 동일 할때, 용량 대비 VARCHAR에 비해 더 많은 범위를 표현할 수 있다.
  • M 은 입력 가능한 글자 수를 가리킨다.
  • VARCHAR에 비해 연산속도가 더 효율적이다.

VARCHAR

  • 길이가 고정되지 않는 가변 길이의 문자열을 다룬다.
  • VARCHAR(M) M(0~65,535)
  • 실제 입력된 문자열의 길이만큼만 저장하고 사용한다.
  • M 은 입력 가능한 글자 수를 가리킨다.
    • 한글과 영어 모두 1 씩 차지한다.

TINYTEXT

  • 255 바이트의 크기를 가진다.

TEXT

  • 65,535 바이트의 크기를 가진다.

MEDIUMTEXT

  • 16,777,215 (약 160만) 바이트의 크기를 가진다.

LONGTEXT

  • 4,294,967,295(약 42억) 바이트의 크기를 가진다.

BLOB

  • 바이너리 값을 저장할 때 사용한다.
  • 이미지, 파일 등을 바이너리 데이터로 저장할때 사용한다.
  • 65,535 바이트의 크기를 가진다.
profile
야크 털 깎기와 러버덕 디버깅을 좋아하는 개발자

0개의 댓글