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 가 걸렸습니다.
따라서 상황에 따라 CHAR
와 VARCHAR
를 번갈아가며 선택하는 것도 좋을 것 같습니다.
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)
부동 소수점 수를 위한 타입입니다. 소수의 빠른 계산과 효율적 저장이 필요할 때 사용합니다.DOUBLE
이FLOAT
보다 긴 수를 저장 할 수 있습니다.
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 바이트입니다.