Tech Log

[DataBase] 필드 타입 본문

Computer Science/DataBase

[DataBase] 필드 타입

yuhee kim 2023. 2. 13. 20:40

필드는 타입을 갖는다.

타입은 DBMS마다 다르다.

MySQL 타입으로 설명을 하면 다음과 같다.

 

숫자 타입

타입 용량(바이트) 최솟값(부호 있음) 최솟값(부호 없음) 최댓값(부호 없음) 최댓값(부호 있음)
TINYINT 1 -128 0 127 255
SMALLINT 2 -32768 0 32767 65535
MEDIUMINT 3 -8388608 0 8388607 16777215
INT 4 -2147483648 0 2147483647 4294967295
BIGINT 8 -263 0 263-1 264-1

TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 등이 있다.

숫자 타입은 용량에 따라 나뉜다.

 

날짜 타입

DATE

시간 없이 날짜만 나타낼 때 사용된다.

지원 범위는 1000-01-01~9999-12-31 

3바이트의 용량을 가진다.

 

DATETIME

날짜 및 시간을 모두 포함하는 값에 사용된다.

범위는 1000-01-01 00:00:00 ~ 9999:12-31 23:59:59 

8바이트의 용량을 가진다.

 

TIMESTAMP

날짜 및 시간을 모두 포함하는 값에 사용된다.

범위는 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07

4바이트의 용량을 가진다.

 

TIME

시간을 나타낼 때 사용된다.

범위는 -838:59:59 ~ 838:59:59

범위를 초과할 시 -838:59:59 이나 838:59:59로 자동 변환되어 저장된다.

유효하지 않은 시간은 00:00:00 으로 저장된다.

 

문자 타입

CHAR

그 안에 수를 입력해서 몇 자까지 입력할지 정한다.

테이블을 생성할 때 선언한 길이로 고정된다.

 

길이는 0~255 사이의 값을 가진다.

레코드를 저장할 때 무조건 선언한 길이로 고정해서 저장된다.

 

VARCHAR

CHAR과 마찬가지로 몇 자 입력할지 정한다.

다만 VARCHAR는 가변 길이 문자열이다.

 

길이는 0~65,535 사이의 값을 가진다.

입력된 데이터에 따라 용량을 가변시켜 저장한다.

10글자의 이메일을 저장할 경우, VARCHAR(10000)이라고 선언을 해도

10글자에 해당하는 바이트 + 길이 기록용 1바이트로 저장하게 된다.

 

CHAR은 유동적이지 않은 길이를 가진 데이터에 효율적이고

VARCHAR은 유동적인 길이를 가진 데이터를 저장할 때 사용한다.

 

TEXT

큰 데이터의 문자열을 저장할 때 사용한다.

주로 게시판의 본문을 저장할 때 사용한다.

 

BLOB(Binary Large Object)

이미지, 동영상 등 큰 데이터 저장에 사용한다.

 

ENUM

문자열을 열거한 타입이다.

열거한 요소 중 하나만 선택할 수 있다.

ENUM 리스트에 없는 잘못된 값을 삽입하면 빈 문자열이 대신 삽입된다.

최대 65,535개의 요소를 넣을 수 있다.

 

SET

ENUM과 마찬가지로 문자열을 열거한 타입이다.

SET은 ENUM과 다르게 여러 개의 데이터를 선택할 수 있다.

비트 단위의 연산을 할 수 있으며

최대 64개의 요소를 집어넣을 수 있다.

 

ENUM과 SET을 사용하면 공간적으로 이점(메모리를 적게 사용)을 볼 수 있으나

애플리케이션의 수정에 따라 데이터베이스의 ENUM이나 SET에서 정의한 목록을 수정해야 한다.

 

참조
  • 주홍철, 면접을 위한 CS 전공지식 노트, 길벗(2022)

 

 

Comments