VeriCras
11/7/2017 - 1:47 AM

[MySQL] 데이터 타입

[MySQL] 데이터 타입

CHAR 데이터 타입

CHAR와 VARCHAR(VARiable length CHARacter string)은 모두 텍스트 문자열을 허용하고, 필드의 크기를 제한한다. 두 타입의 차이점은 CHAR 필드의 모든 문자열은 크기가 정해진다는 것. 즉 더 작은 문자열을 입력하면 공백으로 채워진다. 반면 VARCHAR의 경우, 텍스트를 채우지 않으며, 입력한 텍스트 크기에 맞게 가변적으로 크기를 가진다. 그러나, VARCHAR는 각 값의 크기를 추적할 수 있는 약간의 오버헤드가 필요하기 때문에 모든 데이터의 크기가 비슷하다면, CHAR가 더 효율적이다.

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바이트 사용


BINARY 데이터 타입

BINARY 데이터 타입은 관련된 문자 세트가 없는 문자의 전체 바이트를 저장하는데 사용된다. 예를 들면 GIF 이미지를 저장하는데 사용할 수 있다.

TYPE사용되는 바이트속성
BINARY(n) 혹은 BYTE(n)정확히 n (<=255)CHAR이지만 바이너리 데이터를 가짐
VARBINARY(n)최대 n 까지(<=65535)VARCHAR이지만 바이너리 데이터를 가짐


TEXT와 VARCHAR 데이터 타입

TEXT와 VARCHAR에는 작은 차이점이 있다.

TEXT 필드는 기본 값을 가질 수 없다. MySQL은 TEXT 열의 처음 n개의 문자만 인덱싱 할 수 있다.

이것은, 만약 전체 내용을 검색할 때는 VARCHAR이 더 알맞고, 빠르다는 것이다.

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


BLOB 데이터 타입

BLOB(Binary Large OBject)는 65535 바이트를 넘는 바이너리 데이터에 유용하며, 기본 값을 가질 수 없다.

TYPE사용되는 바이트속성
TINYBLOB(n)최대 n (<=255)바이너리 데이터로 취급
BLOB(n)최대 n (<=65535)바이너리 데이터로 취급
MEDIUMBLOB(n)최대 n (<=16777215)바이너리 데이터로 취급
LONGBLOB(n)최대 n (<=4294967295)바이너리 데이터로 취급


숫자형 데이터 타입

TYPE사용되는 바이트최소 값
(signed/unsigned)
최대 값
(signed/unsigned)
TINYINT1-128
0
127
255
SMALLINT2-32768
0
32767
65535
MEDIUMINT3-8388608
0
8388607
16777215
INT or INTEGER4-2147483648
0
2147483647
4294967295
BIGINT8-9223372036854775808
0
9223372036854775807
18446744073709551615
FLOAT4-3.40E+45
(no unsigned)
3.40E+45
(no unsigned)
DOUBLE or REAL8-1.7976E+320
(no unsigned)
1.7976E+320
(no unsigned)