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 |