mysql 데이터 타입
리눅스를 사용하시는 분들 중에 mysql 안 만져보신 분들은 없을텐데요. 저도 mysql을 다루어 보면서 데이터베이스를 공부하고 있습니다. 이번 포스트는 mysql의 데이터 타입에 대해서 적어보도록 하겠습니다.
▶ char 데이터 타입
char와 varchar의 공통점은 모두 텍스트 기반 데이터 타입이라는 것입니다. 두개로 나눈 것은 차이점이 있기 때문인데 차이점은 용량 할당방식에 있습니다. char는 욕심쟁이처럼 처음에 지정해주는 용량을 모두 사용(임의의 텍스트로 채움)하는 반면 varchar는 처음에 지정한 용량이 있다고 하더라고 필요한 만큼만 사용하고 나머지는 빈공간으로 남깁니다. varchar가 무조건 좋은 것은 아닌데 varchar는 오버헤드가 필요하기 때문에 한국사람 이름 같이 길이가 일정한 데이터가 많을 경우에는 char가 더 효율적이라고 할 수 있습니다.
타입명 | 사용되는 바이트 | 설명 |
char(n) | n ≤ 255 | char는 처음에 지정한 바이트 숫자가 용량으로 할당된다. 예) char(5) 'jun'은 5바이트, char(50) 'jun'은 50바이트 |
varchar(n) | n ≤ 65535 | varchar는 사용한 바이트만큼만 용량으로 할당된다. 예) varchar(5) 'jun'은 3바이트, varchar(50) 'jun'도 3바이트 |
▶ binary 데이터 타입
binary 데이터 타입은 관련된 문자 세트가 없는 문자의 전체 바이트를 저장하는데 사용됩니다.
타입명 | 사용되는 바이트 | 설명 |
binary(n) byte(n) | n ≤ 255 | char의 형태로 바이너리 데이터를 가진다. |
varbinary(n) | n ≤ 65535 | varchar의 형태로 바이너리 데이터를 가진다. |
▶ text와 varchar 데이터 타입
text와 varchar는 비슷하지만 작은 차이점이 있습니다.
눈에 띄는 차이점은 길이 차이입니다. varchar보다 text가 훨씬 깁니다.
다른 차이점은 varchar는 index가 가능하지만 text는 index가 불가능합니다.
그래서 검색에는 varchar가 더 용이합니다.
타입명 | 사용되는 바이트 | 설명 |
tinytext(n) | n ≤ 255 | 문자열로 취급한다. |
text(n) | n ≤ 65535 | 문자열로 취급한다. |
mediumtext(n) | n ≤ 16777215 | 문자열로 취급한다. |
longtext(n) | n ≤ 4294967295 | 문자열로 취급한다. |
▶ BLOB 데이터 타입
BLOB(Binary Large OBject)는 65535 바이트를 넘는 바이너리 데이터에 유용합니다. 하지만 기본값을 가질 수 없습니다.
타입명 | 사용되는 바이트 | 설명 |
tinyblob(n) | n ≤ 255 | 바이너리 데이터로 취급한다. |
blob(n) | n ≤ 65535 | 바이너리 데이터로 취급한다. |
mediumblob(n) | n ≤ 16777215 | 바이너리 데이터로 취급한다. |
longblob(n) | n ≤ 4294967295 | 바이너리 데이터로 취급한다. |
▶ 숫자형 데이터 타입
타입명 | 사용되는 바이트 | 최소값 | 최대값 |
tinyint | 1 | -128 0 | 127 255 |
smallint | 2 | -32768 0 | 32767 65535 |
mediumint | 3 | -8388608 0 | 8388607 16777215 |
int or integer | 4 | -2147483648 0 | 2147483647 4294967295 |
bigint | 8 | -9223372036854775808 0 | 9223372036854775807 18446744073709551615 |
float | 4 | -3.40E+45 (no unsigned) | 3.40E+45 (no unsigned) |
duble or real | 8 | -1.7976E+320 (no unsigned) | 1.7976E+320 (no unsigned) |
이상~!
댓글 없음:
댓글 쓰기