2015년 2월 14일 토요일

mysql 데이터 타입

mysql 데이터 타입


리눅스를 사용하시는 분들 중에 mysql 안 만져보신 분들은 없을텐데요. 저도 mysql을 다루어 보면서 데이터베이스를 공부하고 있습니다.​ 이번 포스트는 mysql의 데이터 타입에 대해서 적어보도록 하겠습니다. 

▶ char 데이터 타입

char와 varchar의 공통점은 모두 텍스트 기반 데이터 타입이라는 것입니다. 두개로 나눈 것은 차이점이 있기 때문인데 차이점은 용량 할당방식에 있습니다. char는 욕심쟁이처럼 처음에 지정해주는 용량을 모두 사용(임의의 텍스트로 채움)하는 반면 varchar는 처음에 지정한 용량이 있다고 하더라고 필요한 만큼만 사용하고 나머지는 빈공간으로 남깁니다. varchar가 무조건 좋은 것은 아닌데 varchar는 오버헤드가 필요하기 때문에 한국사람 이름 같이 길이가 일정한 데이터가 많을 경우에는 char가 더 효율적이라고 할 수 있습니다.

타입명사용되는 바이트설명
char(n)n ≤ 255char는 처음에 지정한 바이트 숫자가 용량으로 할당된다.
예) char(5) 'jun'은 5바이트, char(50) 'jun'은 50바이트
varchar(n)n ≤ 65535varchar는 사용한 바이트만큼만 용량으로 할당된다.
예) varchar(5) 'jun'은 3바이트, varchar(50) 'jun'도 3바이트

▶ binary 데이터 타입

binary 데이터 타입은 관련된 문자 세트가 없는 문자의 전체 바이트를 저장하는데 사용됩니다.

타입명사용되는 바이트설명
binary(n) 
byte(n)
n ≤ 255char의 형태로 바이너리 데이터를 가진다.
varbinary(n)n ≤ 65535varchar의 형태로 바이너리 데이터를 가진다.


▶ 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바이너리 데이터로 취급한다.

▶ 
숫자형 데이터 타입

타입명사용되는 바이트최소값최대값
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)
duble or real8-1.7976E+320
(no unsigned)
1.7976E+320
(no unsigned)

이상~!

댓글 없음:

댓글 쓰기