MySQL 필드의 데이터 타입 정리 (대부분 MS-SQL,Access 와 비슷하지만 몇가지가 틀림, 또한 Access 의 경우, 이제 더이상 업그레이드가 되지 않지만, MS-SQL 의 경우, 계속 업그레이드 되면서 필드 타입도 추가되는 추세임 대표적예: MS-SQL2005 버전에서는 smallint,bigint 등 새로운 타입이 추가되었음?) ----------------------------------------------------------------------- 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바이트를 사용. =====================================================================================