DB 이야기

[DB이야기] DB 기본적인 자료형

개발로 먹고 살자 2021. 9. 14. 18:19

오늘은 DataBase의 자료형에 대해 작성하려 한다.

 

DataBase 자료형

1. 숫자형

INT : 부호 있는 수는 -2147483648 ~ 2147483647까지 표현

BIT : 비트 값 타입, 0과 1로 구성되는 binary 값을 저장 (기본 값은 1로 설정)

BOOL : 0은 false, 0이 아닌 값은 true로 간주하는 논리형 데이터

FLOAT : 정밀도가 작은 부동 소수점을 표현 UNSIGNED인 경우 음수 값을 허용하지 않음

DOUBLE : 보통 크기의 부동 소수점을 표현 UNSIGNED인 경우 음수 값을 허용하지 않음

 

2. 문자형

VARCHAR : 가변 길이를 가지는 문자열을 저장

CHAR : 고정 길이를 가지는 문자열을 저장

CHAR와 VARCHAR의 차이

char와 varchar 둘 다 문자형이지만 char는 고정형 문자열이고 varchar는 가변형 문자열이다.

문자열을 표현할 때 사용하는 자료형으로 사용할 때 길이를 명시해주어야 한다.

char(20)으로 했을 경우 20btye만큼만 공간이 할당된다.

예를 들어 char(20)일 때 2btye의 문자만 넣어도 20btye만큼 데이터를 잡게 된다.

varchar의 경우 varchar(20)일 때 2btye의 문자를 넣으면 2btye만큼의 데이터가 잡힌다.

 

char 타입은 추후에 연산할 필요가 없기 때문에 검색 속도 및 읽히는 속도가 varchar에 비해 빠르다.

그래서 보통 정해져 있는 길이를 담을 때 많이 사용한다. ex) 주민등록번호, 휴대폰 번호

잘못된 예시로 이름을 등록하는데 char(100)으로 잡혀 있다면, 홍길동(6btye)라는 이름을 등록할 때

94btye의 데이터가 낭비된다. 따라서 상황에 따라 맞는 타입을 고려하여 사용해야한다.

 

3. 날짜형

DATE : 날짜를 표현하는 타입 (1998-04-22)

DATETIME : 날짜와 시간을 같이 나타내는 타입 (1998-04-22 00:00:00)

TIMESTAMP : 날짜와 시간을 같이 나타내는 타입

YEAR : 연도를 나타내는 타입 (1998)

DATETIME과 TIMESTAMP의 차이

datatime은 time_zone에 의존하지 않지만 timestamp는 time_zone에 의존한다.

time_zone이 반영되지 않는다면,

서울 오전 12시에 작성한 글이 미국에서도 여전히 오전 12시로 반영되는 상황이 나타난다.

이러한 경우에는 UTC 지원이 가능한 timestamp를 사용하는 것이 더 좋아보인다.