-
MySQL 자료형 - 숫자, 문자, 날짜, 시간데이터베이스/MySQL 2020. 9. 25. 02:34
MySQL의 자료형이란?
자바스크립트같은 동적인 언어는 변수를 선언할 때 별도의 자료형을 입력하지 않아도 된다.
하지만 'MySQL'은 자바처럼 테이블 내 필드값을 설정할 때 자료형을 꼭 기입해야 한다.
자료형은 크게 셋으로 나뉜다.
숫자타입 / 문자타입 / 날짜와 시간 타입이다.
숫자타입 (numeric types)
1. 정수 타입 (integer types)
MySQL에선 다양한 정수형을 지원하므로 선택하여 사용할 수 있다.
타입
저장공간
음수 범위
양수 범위
TINYINT
1바이트
-128
127
SMALLINT
2바이트
-32768
32767
MEDIUMINT
3바이트
-8388608
8388607
INT
4바이트
-2147483648
2147483647
BIGINT
8바이트
-9223372036854775808
9223372036854775807
2. 고정 소수점 타입 (fixed-point types)MySQL에선 고정 소수점 타입인 DECIMAL은 실수의 값을 정확하게 표현하기 위해 사용한다.
DECIMAL( 소수부를 포함한 실수의 총 자릿수(최대 65자리), 소수 부분의 자릿수 )
'DECIMAL'에는 두 개의 숫자가 파라미터로 입력된다.
앞의 파라미터 숫자는 소수 부분을 포함한 실수의 총 자릿수를 나타낸다. 최대 65자다.
뒤의 파라미터 숫자는 소수 부분의 자릿수를 나타내며, 0일 때는 소수 부분을 갖지 않는다.
3. 부동 소수점 타입 (floating-point types)
MySQL에서는 부동 소수점 타입인 'FLOAT'와 'DOUBLE'은 실수의 값을 대략적으로 나타내기 위해 사용한다.
자료형
문법
크기
범위
FLOAT
FLOAT( A, B )
4바이트
0~24까지의 범위
DOUBLE
DOUBLE( A, B )
8바이트
25~53까지의 범위
문법 부분에서 파라미터 A부분에 들어가는 숫자는 소수 부분을 포함한 실수의 총 자리수를 나타낸다.
파라미터 B부분에 들어가는 숫자는 소수 부분의 자리수를 나타낸다.
4. 비트값 타입(bit-value type)
BIT ( A )
BIT는 비트의 값 즉 0, 1로 구성된 바이너리(BINARY) 값을 저장할 수 있다.
그리고 A는 범위를 나타내는 파라미터인데 1~64까지 설정이 가능하다.
문자타입 (integer types)
1. 문자열 데이터 (CHAR & VARCHAR)
CHAR과 VARCHAR 모두 문자열 데이터를 저장할 수 있는 타입이다. 하지만 그외에 여러 차이가 있다.
CHAR는 문자열 길이가 한번 설정되면 고정되지만, VARCHAR는 문자열 길이가 고정되지 않는 가변 길이로 문자열을 다룬다.
타입
문법
최소
저장 가능 최대 길이
CHAR
CHAR( A )
0
255
VARCHAR
VARCHAR( A )
0
65,535
VARCHAR의 경우 CHAR과 같이 저장 가능 최대 길이를 4로 설정했다고 했을 때, CHAR는 4글자가 다 차지 않아도 4글자만큼의 메모리를 차지한다.
반면 VARCHAR의 경우 최대길이 4에 2글자만 썼을 경우 2글자에 대한 메모리만 차지한다.
2. BINARY & VARBINARY
BINARY와 VARBINARY도 CHAR와 VARCHAR의 관계와 비슷하다.
다만 BINARY & VARBINARY는 문자 집합이 아닌 바이너리 데이터 저장에 사용된다.
3. BLOB & TEXT
BLOB은 Binary Large Object를 의미하며 다양한 크기의 바이너리 데이터를 저장할 수 있다.
여기서 바이너리라하면 0,1이 맞다.
그런데 굳이 따로 만든 이유는 바로 대용량의 이미지, 영상 등을 저장하기 위해 만든 것이기 때문이다.
모든 컴퓨터상의 데이터는 바이너리로 이뤄져있고, 이들을 조합해 출력된다.
그래서 이러한 바이너리 형태의 데이터를 저장함으로써 데이터베이스 내에 영상, 사진 등도 저장할 수 있게 된 것이다.
우선 BLOB은 저장할 수 있는 데이터 크기에 따라 여러가지 종류로 나뉜다.
이름
크기
TINYBLOB
256 Bytes
BLOB
64KB
MEDIUMBLOB
8MB
LONGBLOB
4GM
이미지만 1메가가 쉽게 넘는 요즘에는 최소 미디엄블롭은 되어야 쓸만하다고 할 수 있다.
참고로 BLOB은 바이너리 형식이기때문에 정렬이나 인덱스 등은 불가능하다.
TEXT는 다양한 용량의 문자열을 가질 수 있는 타입이다.
VARCHAR와 비슷해보여도 VARCHAR와 달리 기본값을 가질 수 없다.
또한 TEXT도 크기에 따라 4 종류로 나뉜다.
- TINYTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
4. ENUM
저장은 숫자 형태로 되지만, 출력은 문자 형태로 되는 타입을 말한다.
또한 미리 어떤 형태의 자료를 받을지 입력하고 그 중에 하나만 골라서 받을 수 있다.
ENUM을 이용하면 가독성을 높이고 특정 숫자에 문자열로 의미를 부여할 수 있다.
최대 65,535개 데이터를 포함할 수 있다.
공간절약이 되고 검색 속도의 향상을 가져올 수 있다.
5. SET
SET은 0개 이상의 값을 가질 수 있는 문자열 개체로, 미리 정의한 집합 안의 요소 중 여러개를 동시에 저장이 가능하다.
SET이 가질 수 있는 목록 집합은 최대 64개 SET 데이터 포함이 가능하다.
날짜, 시간 타입 (date, datetime, timestamp)
1. DATE, DATETIME, TIMESTAMP
DATE는 날짜를, DATETIME은 날짜와 시간, TIMESTAMP는 날짜, 시간을 나타내는 타임스탬프를 저장할 수 있다.
표로 정리하면 다음과 같다.
타입형
입력형식
설명
DATE
'YYYY-MM-DD'
연도+날짜를 저장
DATETIME
'YYYY-MM-DD HH:MM:SS'
연도+날짜+시간을 저장
TIMESTAMP
CURRENT_TIMESTAMP 미입력시 데이터 마지막으로 입력되거나 변경된 시간이 나타남
옆에처럼 입력하면 현재 시간 출력2. TIME
TIME은 시간을 저장할 수 있는 타입이다.
기본 형식은 다음과 같다.
'HH:MM:SS'
'HHH:MM:SS'
3. YEAR
YEAR는 연도를 저장할 수 있는 타입으로 2자리, 4자리 모두 가능하다.
YEAR는 연도를 나타내는 숫자, 문자열을 모두 저장가능하나 그 저장 결과는 조금 다르다.
● 4자리로 숫자 저장시, 저장 범위는 1901~2155년
● 4자리 문자열로 저장시, 저장 범위는 1901~2155년
● 1자리 또는 2자리 숫자로 저장시, 1~69까진 2001~2069년이 되고, 70~99는 1970~1999년이 된다.
● 1자리 또는 2자리 문자열로 저장시, 위와 같다.
● 숫자 0을 저장하면 2000년이 아닌 0000년으로 저장된다.
보통 유효하지 않은 숫자 입력시 0000처리된다.
'데이터베이스 > MySQL' 카테고리의 다른 글
MySQL 기본 문법 - 데이터베이스 선택시 중복제거 (0) 2020.09.28 MySQL 제약 조건 (0) 2020.09.25 MySQL 기본 문법 - 레코드 선택하기 (0) 2020.09.25 MySQL 기본 문법 - 자료 갱신하기 (0) 2020.09.25 MySQL 기본 문법 - 데이터베이스, 테이블, 레코드 삭제하기 (0) 2020.09.25