[DB이야기] DB 기본적인 자료형
오늘은 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를 사용하는 것이 더 좋아보인다.