SQL Types

1. 숫자 타입(Numeric Types)

MySQL에서 제공하는 숫자 타입은 다음과 같다.

1.1. 정수 타입(integer types)

정수값을 저장할 수 있는 자료형이다.(소수점은 포함할 수 없다.)

타입 저장 공간 최소값(Signed) 최소값(Unsigned) 최대값(Signed) 최대값(Unsigned)
TINYINT 1byte -128 0 127 255
SMALLINT 2byte -32768 0 32767 65535
MEDIUMINT 3byte -8388608 0 8388607 16777215
INT(또는 INTEGER) 4byte -2147483648 0 2147483647 4294967295
BIGINT 8byte -9223372036854775808 0 9223372036854775807 18446744073709551615

1.2. 고정 소수점 타입(fixed-point types)

실수의 값을 정확하게 표현하기위해 사용된다.

DECIMAL(M,D) 함수를 사용한다.

M은 소수 부분을 포함한 실수의 총 자리수를 나타낸다. 최대값은 65 이다.

D는 소수 부분의 자릿수를 나타내며, D가 0이면 소수 부분을 가지지 않는다.

1.3. 부동 소수점 타입(floating-point types)

실수의 값을 대략적으로 표현하기 위해 사용한다.

  • FLOAT : 4바이트
  • DOUBLE : 8바이트

FLOAT(P) 함수를 사용한다.

P가 0~24사이의 값을 가질 때는 FLOAT 값으로 취급되며, 25~53 사이의 값을 가질 때는 DOUBLE 값으로 취급된다.

1.4. 비트값 타입(bit-value type)

비트의 값을 저장한다. 즉 바이너리(binary)값을 저장할 수 있다.

BIT(M) 함수를 사용한다.

M은 1~64 사이의 값을 사용할 수 있다. 만약 M 비트보다 짧은값을 사용할 경우 앞에 0을 추가하여 길이를 자동으로 맞춘다.

2. 문자열타입

2.1. CHAR

문자열형의 하나로 문자열을 저장할 수 있는 자료형이다.

CHAR(M) 형식으로 사용하며 M은 열의 최대 길이이다.

M을 설정한 후 M 보다 긴 문자열을 저장할 수 없다.

2.2. VARCHAR

CHAR는 고정길이 문자열이였다면 VARCHAR는 가변 길이 문자열 자료형이다.

VARCHAR(M) 형식으로 사용하며 M은 열의 최대 길이이다.

데이터의 크기에 맞춰 저장공간의 크기도 변경된다.

2.3. 그 외의 문자열

  • BINARY / VARBINARY
    • 각각 CHAR / VARCHAR와 비슷한데 문자집합이 아닌 바이너리(binary) 데이터를 저장할 때 사용된다.
  • BLOB
    • Binary Large Object.
    • 다양한 크기의 바이너리 데이터를 저장할 수 있는 타입.
    • 문자열의 대소문자 구분 안함.
    • 저장할 수 있는 데이터의 최대 크기에 따라 TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB로 구분
  • TEXT
    • VARCHAR와 비슷하지만 기본값을 가질 수 있고 문자열의 대소문자를 구분한다.
    • 저장할 수 있는 데이터의 최대 크기에 따라 TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT로 구분
  • ENUM
    • 미리 정의한 집합 안의 요소 중 하나만을 저장할 수 있는 타입
  • SET
    • 미리 정의한 집합 안의 요소 중 여러 개를 동시에 저장할 수 있는 타입

3. 날짜와 시간

3.1. DATE

날짜를 저장할 수 있는 타입이다.

기본 형식 : ‘YYYY-MM-DD’

저장할 수 있는 날짜의 범위는 ‘1000-01-01’부터 ‘9999-12-31’까지이다.

3.2. DATETIME

날짜와 시간을 저장할 수 있는 타입이다.

기본 형식 : ‘YYYY-MM-DD HH:MM:SS’

저장할 수 있는 범위는 ‘1000-01-01 00:00:00’부터 ‘9999-12-31 23:59:59’까지이다.

3.3. TIMESTAMP

날짜와 시간을 나타내는 타임스탬프를 저장할 수 있는 타입

데이터가 마지막으로 입력되거나 변경된 시간이 저장된다.(데이터의 최종 변경 시각을 저장하고 확인하는데 유용하다.)

3.2. TIME

시간을 저장할 수 있는 타압이다.

기본 형식 : ‘HH:MM:SS’ 혹은 ‘HHH:MM:SS’

저장할 수 있는 시간의 범위는 ‘-838:59:59’부터 ‘838:59:59’까지입니다.

범위를 초과한 시간은 ‘-838:59:59’이나 ‘838:59:59’로 자동 변환되어 저장된다.

또한, 유효하지 않은 시간은 ‘00:00:00’로 저장된다.

3.3. YEAR

YEAR는 연도를 저장할 수 있는 타입이다.

YEAR는 4자리의 연도를 숫자 혹은 문자열로 저장할 수 있다.

4. 그 외

4.1. JSON Type

다양한 JSON 조작함수를 제공한다.

4.2. Spatial Type

위도와 경도를 중심으로한 위치 관련 타입

ex) 배달앱쪽에서 많이 사용한다.


*. 참고자료

  • 아사이 아츠시 저 박준용 옮김, SQL첫걸음, 한빛미디어
  • http://tcpschool.com/mysql/DB

댓글 남기기