MySQL 데이타 타입

MySQL의 데이타 타입은 수치, 문자열, 날짜와 시간, 공간 데이터 타입으로 분류된다.
우선 종류를 살펴 보자

수치 데이터 타입
  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT         - 정수
  • BIGINT
  • DECIMAL - 고정 소수
  • FLOAT     - 단정도 부동 소수
  • DOUBLE  - 배정도 부동 소수
  • BIT         - 비트 필드
문자열 데이터 타입
  • CHAR
  • VARCHAR
  • BINARY        - 이진 문자열
  • VARBINARY
  • TINYBLOB
  • BLOB            - Binary Large OBject
  • MEDIUMBLOB
  • LONGBLOB
  • TINYTEXT
  • MEDIMUTEXT
  • LONGTEXT
  • ENUM          - 열거형
  • SET             - 집합형
날짜와 시간 데이터 타입
  • DATE          - 날짜           ( CCYY-MM-DD )
  • TIME           - 시간           ( hh:mm:ss )
  • DATETIME   - 날짜와 시간 ( CCYY-MM-DD hh:mm:ss )
  • TIMESTAMP - 타입스탬프 ( CCYY-MM-DD hh:mm:ss )
  • YEAR           - 연도          ( CCYY 또는 YY )
공간 데이터 타입
  • GEOMETRY     - 공간 값
  • POINT             - 포인트(한 쌍의 X,Y 좌표)
  • LINESTRING    - 커브 (하나 이상의 POPINT 값)
  • PLYGON          - 폴리곤
  • GEOMETRYCOLLECTION  - GEOMETRY 값의 집합
  • MULTILINESTRING   - LINESTRING의 집합
  • MUlTIPOINT             - POINT 값의 집합
  • MULTIPOLYGON       - POLYGON 값의 집합

기본값
  •  AUTO_INCREMENT 속성을 가지는 컬럼을 제외한 모든 컬럼 타입에 대해 기본값이 명시되지 않았다면 숫자 컬럼의 기본 값은 0 이다.
  • TIMESTAMP를 제외한 날짜와 시간 타입에 대해서 기본 값은 "제로" 이다 (예, 0000-00-00 ) 
  • TIMESTAMP의 기본값은 컬럼의 현재 날짜와 시간이다.
  • ENUM 이외의 다른 문자열 타입에서 기본 값은 비어 있다. 
  • ENUM 에 기본 값은 첫번째 열거 요소이다.

어떤 칼럼들이 DEFAULT 절을 가지는지, 그리고 칼럼이 어떤 기본 값을 가지는지 살펴보려면 다음 명령을 이용한다.
mysql> SHOW CREATE TABLE [테이블 이름];

수치 데이타의 범위
 타입 부호 있는 값 부호 없는 값 저장 공간 
TINYINT [ (M) ] -128 ~ 127 0 ~ 255 1 바이트 
SMALLINT [ (M) ] -32768 ~ 32767 0 ~ 65535 2 바이트 
MEDIUMINT [ (M) ] -8388608 ~8388607  0 ~ 16777215 (2^24-1) 3 바이트
INT [ (M) ] -2147683648 ~ 2147483647  0 ~ 4294967295 (2^32-1)  4 바이트
BIGINT [ (M) ] -9223372036854775808 ~ 92233720368547758087   0~18446744073709551615 (2^64-1) 8 바이트 
DECIMAL ( [M[,D]] )  -  - M과 D에 따라 다름 
FLOAT [ (M,D ]   -  - 4 바이트 
DOUBLE [ (M,D) ]   -  - 8 바이트 
BIT[ (M) ]    0 ~ 2^M-1  M에 따라 다름

  • 정수  컬럼을 선언 할 때, 선택적인 크기 M을 지정할 수 있다. M은 1에서 255까지 정수 이다. 이것은 컬럼 값을 표시하는 데 사용되는 문자들의 수에만 관련이 있지 저장공간의 바이트 수와는 아무런 관련이 없다.
  • DECIMAL에서 M은 유효자리수, D는 소숫점 자리수를 나타낸다. M은 1부터 65, D는 0부터 30까지 값을 가지고 M보다 클 수 없다. (예를 들어 DECIMAL(5,1) 이라면 값의 범위는 -9999.9 ~ 9999.9 까지 이다.)
  • DECIMAL, DECIMAL, FIXED 은 동의어이다.
  • REAL은 DOUBLE과 동의어이다. (SQL 모드 REAL_AS_DEFAULT가 활성화 되면 REAL은 FLOAT와 동의어가 됨)
  • DOUBLE, FLOAT에서 M은 유효 자릿수 (1~255), D는 십진 자릿수 (0~30) 이다. DECIMAL과 달리 M,D의 지정은 선택사항이다.
문자열 데이타의 범위
 타입 최대 크기 필요한 저장공간
VARBINARY [ (M)  ] M 바이트 L+1 또는 2 바이트 
CHAR [ (M) ] M 문자 M x w 바이트
VARCHAR (M) M 문자 L+1 또는 2 바이트 
TINYBLOB 2^8-1 바이트  L+1 바이트 
BLOB 2^16-1 바이트  L+2 바이트 
MEDIUMBLOB  2^24-1 바이트  L+3 바이트
LONGBLOB 2^32-1 바이트  L+4 바이트 
TINYTEXT 2^8-1 문자 L+1 바이트 
TEXT 2^16-1 문자  L+2 바이트 
MEDIUMTEXT 2^24-1 문자 L+3 바이트 
LONGTEXT 2^32-1 문자  L+4 바이트 
ENUM('value1','value2', ...) 65,535개의 요소  1또는 2 바이트
SET('value1','value2', ...) 64개의 요소  1,2,3,4, 또는 8 바이트 
  • M은 컬럼 값의 최대 길이, L은 바이트 단위로 주어진 값의 실제 길이를 나타낸다.
  • BINARY(20)은 20바이트를 가지며, CHAR(20)은 20개의 문자를 가진다.

Reference
  • MySQL의 사용, 관리, 프로그래밍을 위한 완벽 가이드, Paul Dubois 저 / 김형훈 역, 지&선

'개발지식창고 > DataBase' 카테고리의 다른 글

[SQLITE] 자료형  (0) 2013.06.28
MFC 환경에서 MySQL 연동하는 방법  (0) 2010.08.31
MFC MYSQL 연동  (0) 2010.08.31
[MySQL] 기본명령어  (0) 2010.08.31
[MySQL] 데이타베이스명령어  (0) 2010.08.31
Posted by 모과이IT
,