제임스딘딘의
Tech & Life

개발자의 기록 노트/데이터베이스

[mysql] Data Type

제임스-딘딘 2014. 5. 4. 02:22

MySQL Column Type

 

컬럼(Column)은 데이타 베이스를 이루는 가장 작은 단위이다. 컬럼들이 모여서 레코드(Record)를 이루고, 레코들들이 모여서 테이블(Table)이 된다. 테이블이 모여서 데이타 베이스를 이루게 된다. 즉, 데이타 베이스를 데이타들의 계층적 구조라고 말한다. 

TINYINT

부호있는 수는 -128에서 127까지, 부호 없는 수는 0에서 255까지 표현할 수 있다. 1 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


SMALLINT

부호있는 수는 -32768에서 32767까지, 부호 없는 수는 0에서 65535까지 표현할 수 있다. 2 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


MEDIUMINT

부호있는 수는 -8388608부터 8388607까지, 부호없는 수는 0에서 16777215까지의 수를 표현할 수 있다. 3 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


INT [unsigned]

부호있는 수는 -2147483648부터 2147483647까지, 부호없는 수는 0에서 4294967295까지의 수를 표현할 수 있다[unsigned]. 4 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~

 

※ zerofill를 이용하면 남는 공간 0으로 채우기가 가능하다.

※ int형 선언시 (숫자)를 안써주면 int(11)가 디폴트로 되며 int(숫자)는 자릿수 제한이

아닙니다.

int(5)와 int(11)는 데이타크기가 같으며 입력하는 가격 범위도 같습니다.다른점은

int데이타형 뒤에 zerofill 을 붙여주면 int형뒤에 숫자보다 자릿수가 작으면 0으로 자동으로

채워진다.같거나 크면 당연히 안채워진다. zerofill을 사용했을때 최대 자릿수는 10이다.

 

※ int 키워드 뒤에 괄호안 숫자는 제한이 없습니다. 테이블 생성시 zerofill 키워드를 사용하게

되면 해당 괄호안에 숫자만큼의 선행제로 처리가 되어 출력됩니다.

 

INTEGER

INT와 같다.

 

BIGINT

부호있는 수는 -9223372036854775808부터 9223372036854775807까지의 수를 표현할 수 있고, 부호없는 수는 0부터 18446744073709551615까지 표현할 수 있다. 8바이트


FLOAT

단일 정밀도를 가진 부동 소수점을 나타낸다. 언제나 부호 있는 수이고, -3.402823466E+38부터 3.402823466E+38까지의 수를 표현할 수 있다.

 

※ mysql,에서의 float는 실수를 저장하는 데이타형입니다.

하지만 1.11이나 1.23은 잘들어가지는데 1.00이나 1.10 같은 마지막 0은 들어가지지 않습니다.

왜냐하면 자동으로 0은 절삭됩니다. 하지만 table생성시 float가 아닌 float(5,2)로 주면 소수점2자리까지만 입력이 되며 빈공간은 0으로 채워집니다.

앞에것은 잘 모르겠지만 뒤에꺼는 필수 소수점자리입니다. 빈공간은 0으로 자동으로 채워집니다.

 

DOUBLE

2배 정밀도를 가진 부동 소수점 수이다. 언제나 부호있는 수이고, -1.79769313486231517E+308부터 1.7976931348623157E+308까지의
수를 표현할 수 있다.


DATE

날짜를 표현하는 타입으로 '1000-01-01'부터 '9999-12-31'까지를 나타낼 수 있다. 3 바이트


DATETIME

날짜와 시간을 같이 나타내는 타입이다. '1000-01-01 00:00:00'부터 '9999-12-31 23:59:59'까지 나타낼 수 있다. 8 바이트


TIMESTAMP

'1970-01-01 00:00:00'부터 2037년까지 나타낼 수 있다. 4 바이트


TIME

시간을 나타낸다. '-839:59:59'부터 '838:59:59'까지 나타낼 수 있다.


YEAR

년도를 나타낸다. 1901년부터 2155년, 0000년을 나타낼 수 있다.


CHAR(M)

고정 길이를 갖는 문자열을 저장할 수 있다. M은 1부터255까지이다.M이 20이면 20개의

문자를 저장할 수 있다.

※ binary옵션을 붙일시 대소문자를 구분합니다.

 

VARCHAR(M)

CHAR는 고정길이인 반면 VARCHAR는 가변 길이이다. 예를 들어 VARCHAR(20)인 컬럼에

10자만 저장을 하면, 실제로도 10자 만큼을 기억장소를 차지한다. 하지만, CHAR는 나머지

10자를 공백으로 매꾼다.최대 255자까지 저장가능

※ binary옵션을 붙일시 대소문자를 구분합니다.

 

TINYTEXT

255개의 문자를 저장할 수 있다.

 

ENUM('value1','value2')

65,535개의 문자를 선택하여 대입할수있다. value에서 지정하지 않은 값은 에러는 안나나 공백으로 들어가진다.

※ binary옵션을 붙일시 대소문자를 구분합니다.

※ 데이타 크기 : 2 바이트

 

TEXT (텍스트 파일)

65,535개의 문자를 저장할 수 있다.

※ binary 옵션을 기재하면 검색시 소문자를 구분합니다.

※ TEXT데이타형은 default 예약어 사용 못함


MEDIUMTEXT (텍스트 파일)

16,777,215개의 문자를 저장할수 있다.

데이타크기 : 3바이트


LONGTEXT (텍스트파일)

4,294,967,295개의 문자를 저장할수 있다.

데이타크기 : 4바이트

 

BLOB(이진 파일)

65535개의 문자를 저장할 수 있다. BLOB은 BINARY LARGE OBJECT의 약자이다.

일반문자열이 아닌 멀티미디어파일(이미지,영상등)을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

(TEXT : blob의 차이) blob : binary large object

0.text나 blob는 둘다 default를 사용못한다.

1.TEXT는 대소문자 안가린다. BLOB는 대소문자 가린다.

2.제한크기보다 작은 크기를 입력해도 둘다 공백이 제거되지 않고 공백도 다같이 저장된다. varchar개념이 아닌 char개념이다.

3.테이블이아닌 다른 영역에 저장된다. 적당히 사용하자

4.INDEX생성이 불가능하다.괜히 모르고 했다가는 용량만 커지고 index는 절대 안탄다. FULLTEXT를 이용한다.

 

MEDIUMBLOB

16777215개의 문자를 저장할 수 있다.

일반text가 아닌 멀티미디어파일을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

MEDIUMTEXT

TEXT형에 저장되지 않는 큰문자열은 MEDIUMTEXT형을 사용한다.

16,777,215개의 문자를 저장할 수 있다.

ex : alter table zet_blog_data modify content MEDIUMTEXT;

 

LONGBLOB

4294967295(4기가)개의 문자를 저장할 수 있다.

일반text가 아닌 멀티미디어파일을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

LONGTEXT

4,294,967,295(4기가)개의 문자를 저장할 수 있다.


출처 : http://zetswing.com/bbs/board.php?bo_table=MySQL_LEC&wr_id=1&page=2

'개발자의 기록 노트 > 데이터베이스' 카테고리의 다른 글

[mysql] 암/복호화  (0) 2011.04.16