MySQL data type

MySQL 데이터 타입

MySQL에는 여러가지 데이터 타입을 갖고있습니다. 하지만 boolean타입은 갖고있지 않습니다.

STRING

문자열에는 두가지 타입이 존재합니다.
CHAR는 고정형이고, VARCHAR는 가변형입니다.

TYPE 사용되는 바이트 예제
CHAR(n) 정확히 n (<=255) CHAR(5) ‘Hello’는 5바이트 사용
CHAR(50) ‘Hello’는 50바이트 사용
VARCHAR(n) 최대 n 까지(<=65535) VARCHAR(100) ‘Hello’는 5바이트 사용
VARCHAR(5) ‘Hello’는 5바이트 사용

데이터가 많아지면 CHAR타입과 VARCHAR타입의 속도 차이가 있습니다.
100만건이 넘는 데이터를 검색했을 때 CHAR를 사용했을 경우에는 0.54 sec가 걸렸으며 VARCHAR를 사용했을 경우에는 0.64 sec 가 걸렸습니다.
따라서 상황에 따라 CHARVARCHAR를 번갈아가며 선택하는 것도 좋을 것 같습니다.

  • CHAR
    CHAR(10)을 설정하게 되면 ‘test’를 입력하더라도 삽입된 데이터의 크기는 10byte입니다.
    CHAR 타입은 길이를 지정해주면 남은 공간은 빈칸으로 체우게 됩니다.

  • VARCHAR(variable length character string)
    짧은 문자열을 저장하기 위해 가장 널리 사용되는 타입입니다. 컬럼 타입으로 지정할 때는 아래와 같이 문자열의 길이(바이트)를 명시해야 합니다.
    VARCHAR(255) – 255는 가장 널리 사용되는 길이입니다. (utf8 인코딩 방식으로 한글은 1글자당 3바이트이다.)
    저장을 하기 위한 가장 효과적인 길이는 255입니다.

TEXT

긴 문자열을 저장하기 위해 사용되는 타입입니다. TEXT 타입의 컬럼에는 64MB까지 저장할 수 있습니다. 요구사항에 따라 크기가 다른 다양한 종류의 TEXT 타입(TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT)을 사용할 수 있습니다.

TYPE 사용되는 바이트 속성
TINYTEXT(n) 최대 n (<=255) 문자열로 취급
TEXT(n) 최대 n (<=65535) 문자열로 취급
MEDIUMTEXT(n) 최대 n (<=16777215) 문자열로 취급
LONGTEXT(n) 최대 n (<=4294967295) 문자열로 취급

NUMBER

정수, 고정 소수점, 부동 소수점을 위한 타입이 있습니다. 모든 수 타입은 양수만을 저장하기 위해 타입 뒤에 UNSIGNED 지시자를 사용할 수 있습니다.

  • 부동 소수점은 정확성보다 성능을 우선시한다.

  • 고정 소수점은 성능은 느려도 정확성을 우선시한다.(10진수의 정확성)

  • INTEGER (INT 타입)
    정수를 위한 타입입니다. INT로 줄여 쓸 수도 있습니다. 요구사항에 따라 크기가 다른 다양한 종류의 INT 타입(TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT)을 사용할 수 있습니다.

TYPE Storage Minimum Value Maximum Value
(Bytes) (Signed/Unsigned) (Signed/Unsigned)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -922337203685775808 922337203685775807
0 18446744073709551615

Unsigned를 사용하게 되면 표현 할 수 있는 수가 커진다.
MySQL에는 참, 거짓을 나타내는 boolean 관련 타입이 없습니다. 대신 TINYINT를 사용합니다. (boolean은 1비트/ TINYINT는 1바이트)

  • DECIMAL
    고정 소수점 수를 위한 타입입니다.
    십진수의 정확한 계산이 필요할 때 사용합니다.
    정수부(최대 65), 소수부(최대 30, 정수부보다 짧거나 같아야 함)의 최대 길이를 각각 지정할 수 있습니다.

    1
    DECIMAL(5, 2) -- 12345.67과 같은 수를 저장할 수 있습니다.
  • DOUBLE (FLOAT)
    부동 소수점 수를 위한 타입입니다. 소수의 빠른 계산과 효율적 저장이 필요할 때 사용합니다.
    DOUBLEFLOAT보다 긴 수를 저장 할 수 있습니다.

TIME

MySQL에는 시각의 저장을 위한 타입들이 준비되어 있습니다. 주로 사용되는 아래의 두 타입은 시간대 정보를 저장하지 않기 때문에, 사용에 주의를 요합니다.

  • DATE
    DATE 타입은 날짜를 위한 타입입니다.
    ‘1000-01-01’부터 ‘9999-12-31’까지를 나타낼 수 있습니다.
    크기는 3 바이트입니다.

  • DATETIME
    DATETIME 타입은 날짜와 시각을 같이 저장해야 할 때 사용합니다.
    ‘1000-01-01 00:00:00’부터 ‘9999-12-31 23:59:59’까지 나타낼 수 있습니다.
    크기는 8 바이트입니다.

공유하기