MySQL 데이터 타입

DB/MySQL 2010. 4. 30. 13:00

MySQL 데이터베이스에는 크게 다음과 같은 세 가지 데이터 타입이 있다.
===========================================================
데이터타입 내용                  예제
-----------------------------------------------------------
숫자형     숫자를 저장하는 필드  TINYINT, INT, FLOAT
-----------------------------------------------------------
문자형     문자를 저장하는 필드  CHAR, VARCHAR, TEXT, ENUM
-----------------------------------------------------------
날짜형     날짜를 저장하는 필드  DATE, DATETIME, TIMESTAMP
===========================================================


MySQL 데이터 타입의 모든 종류를 외울 필요는 없다.
그러나, 다음의 네 가지 데이터 타입은 상당히 많이 사용되므로 꼭 익혀둘것

INT : 4bytes 정수를 저장할때 사용
CHAR(n) : 문자의 수가 n 개인 문자열을 저장할때 사용
VARCHAR(n) 문자의 수가 최대 n 개인 문자열을 저장할때 사용
TEXT : 문자의 수가 최대 65535 개인 문자열을 저장할때 사용

주의: char 타입은 무조건 n 길이만큼을 차지하고, 출력시에도 n 길이로 체크되지만, varchar 은 실제로 들어있는 문자길이만큼 인식된다.
또한, int 형의 경우, 앞에 0 을 붙여 저장해도 0 이 없어지고, 첫자리는 0 이 아닌 숫자가 나올때까지 0 이 없어진다.

다음은 숫자형, 날짜형, 그리고 문자형의 데이터 타입을 정리해둔 표이다.

숫자형 데이터 타입

=====================================================================================
데이터타입   설명
-------------------------------------------------------------------------------------
TINYINT   가장 작은 숫자형으로 부호가 있는 경우에는 -128 ~ 127,
          부호가 없는 경우에는 0 ~ 255 까지 데이터를 다룰 수 있다.
          저장할때 필요한 용량은 1바이트이다.
-------------------------------------------------------------------------------------
SMALLINT  부호가 있는 경우에는 -32768 ~ 32767,
          부호가 없는 경우에는 0 ~ 65535 까지 다룰 수 있으며,
          저장할때 필요한 용량은 2바이트이다.
-------------------------------------------------------------------------------------
MEDIUMINT 부호가 있는 경우에는 -8388608 ~ 8388607,
          부호가 없는 경우에는 0 ~ 16777215 까지 데이터를 다룰 수 있으며,
          저장할때 필요한 용량은 3바이트이다.
-------------------------------------------------------------------------------------
INT       일반적으로 사용하는 숫자형으로
          부호가 있는 경우에는 -2147483648 ~ 2144483647,
          부호가 없는 경우에는 0 ~ 4294967295 까지 데이터를 다룰 수 있으며,
          저장할때 필요한 용량은 4바이트이다.
-------------------------------------------------------------------------------------
INTEGER   int 와 같이 사용한다.
          (int 와 같은 뜻인듯하며, 이름만 달리 사용)
-------------------------------------------------------------------------------------
BIGINT    부호가 있는 경우에는 -922337036854775808 ~ 922337036854775807,
          부호가 없는 경우에는 0 ~ 18446744073709551615 까지 데이터를 다룰 수 있으며,
          저장할때 필요한 용량은 8바이트이다.
-------------------------------------------------------------------------------------
FLOAT     최소값 +_1.175494351E-38 ~ 최대값 +_3.402823466E_38 까지 지원,
          4바이트의 크기를 가진다.
-------------------------------------------------------------------------------------
DOUBLE    최소 ±1.7976931348623157E-308, 최대 ±2.2250738585072014E+308 이며,
          저장할때 필요한 용량은 8바이트이다.
-------------------------------------------------------------------------------------
DECIMAL   소수를 저장하지만 내부적으로는 문자 형태로 저장되는 타입이다.
          예를들어 3.141592 의 경우, 3 이 char 하나의 공간에 저장된다.
=====================================================================================

 


문자형 데이터 타입
=====================================================================================
데이터타입  설명
-------------------------------------------------------------------------------------
CHAR       char(0) 도 지원하며,
           실제값이 M보다 작을 때 남는 자릿수만큼 공백을 붙여서 저장한다.
           1부터 최대 255 의 자릿수를 지원하며, 지정한 용량만큼 바이트를 사용.
-------------------------------------------------------------------------------------
VARCHAR    지정할 수 있는 길이는 1부터 255까지이며,
           지정한 길이보다 작은 데이터를 저장할때 필요한 길이만큼 저장된다.
           char 형보다 기억장치를 효율적으로 사용할 수 있다. 지정한용량+1바이트 사용.
-------------------------------------------------------------------------------------
TINYBLOB   최대 255개의 문자를 저장. 지정한 용량+1바이트(L < 2^8 -1) 를 사용.
-------------------------------------------------------------------------------------
TINYTEXT   tinyblob 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
BLOB       최대 65535 개의 문자를 저장. 지정한 용량+2바이트(L < 2^16 -1)의 용량 사용.
-------------------------------------------------------------------------------------
TEXT       blob 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
MEDIUMBLOB 최대 16777215 개의 문자를 저장. 지정한 용량+3바이트(L < 2^24 -1) 를 사용.
-------------------------------------------------------------------------------------
MEDIUMTEXT mediumblob 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
LONGBLOB   최대 429496729 개의 문자를 저장. 지정한 용량+4바이트(L < 2^32 -1) 를 사용.
-------------------------------------------------------------------------------------
LONGTEXT   longbolb 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
ENUM       문자 형태인 value 를 숫자로 저장.
           value 중에 하나만 저장하며, value 가 255 이하인 경우에는 1바이트,
           65535 이하인 경우에는 2바이트를 사용.
=====================================================================================

 


날짜형 데이터 타입
PHP 의 날짜 및 시간 관련 함수와 비슷하다.
=====================================================================================
DATE      '1001-01-01' 부터 '9999-12-31' 까지의 값이 들어갈 수 있으며,
          저장할때 3바이트가 필요. 'YYYY-MM-DD' 와 같은 형식.
-------------------------------------------------------------------------------------
DATETIME  날자와 시간을 같이 저장하며,
          '1001-01-01 00:00:00' 부터 '9999-12-31 23:59:59' 까지의 값을 다루고,
          8바이트가 필요.
          'YYYY-MM-DD HH:MM:SS' 와 같은 형식.
-------------------------------------------------------------------------------------
TIMESTAMP '1970-01-01 00:00:00' 이후부터 초를 숫자로 저장하는 자료형으로,
          4바이트가 필요.
          약 40억초를 저장할 수 있으므로 2037년까지의 값을 다룰 수 있다.
-------------------------------------------------------------------------------------
TIME      '-838:59:59' 에서 '838:59:59' 의 값을 다루며,
          3바이트를 사용.
          HH:MM:SS 와 같은 형식
-------------------------------------------------------------------------------------
YEAR      연도만 저장하는 자료형이다.
          year(n)? 와 같은 형식.
          n 은 2와 4를 지정할 수 있으며, 2인 경우에 값의 범위는 70 에서 69,
          4인 경우에는 1970 에서 2069 이다.
          1바이트를 사용.
=====================================================================================

'DB > MySQL' 카테고리의 다른 글

php mysql 연동 함수  (0) 2010.05.10
mysql_affected_rows, mysql_num_rows 차이  (0) 2010.05.10
MySQL 날짜 / 시간 데이터 타입  (0) 2010.04.30
mysql_query  (0) 2010.04.27
mysql_result, mysql_fetch_row, _array  (0) 2010.04.27
: