본문 바로가기
DB

[MySQL] Data Type 데이터 타입

by person456 2024. 4. 13.

Data Type ( char, varchar, text ) 

1. CHAR

- 고정 길이를 갖는 문자열을 저장

- CHAR(20)에 10글자만 저장 하더라도 실제로 차지하는 길이는 20임.

- CHAR는 저장공간이 낭비될 순 있지만, 추가적인 연산이 필요하지 않아 검색 및 읽는 속도가 VARCHAR보다 빠름

 

2. VARCHAR

- 가변길이를 갖는 문자열을 저장

- VARCHAR(20)에 10글자만 저장하면 실제로의 길이만 차지

- 가변길이라 하더라도 VARCHAR(5)에 "123456"을 삽입하면 에러가 발생 (MySQL 기준)

 

3. TEXT

- 길이제약을 받지 않음.

- index의 일부로 사용 불가능

- max size limit가 불가, 오직 65535

 

  • VARCHAR: 짧은 문자열을 저장하는 데 적합,  이름, 이메일 주소, 짧은 설명 등
  • TEXT: 긴 문자열이나 대량의 텍스트를 저장하는 데 적합,   게시물 내용, 댓글, 긴 설명 등이 있습니다.

 

 

 

4. DATETIME

- 타임 존이 바뀌어도 바뀌지 않음 ( 자동 업데이트가 되지 않는다. )

- 기본값은 Null, 8바이트의 저장 공간을 차지

- 즉, DateTime은 시간대를 고려하지 않고 날짜와 시간을 저장할 때 사용하며, 어플리케이션 수준에서

시간대를 처리해야 한다는 특징을 갖고 있음.

5. TIMESTAMP

- 타임존을 바꾸면 값이 바뀜 ( 자동업데이트가 진행 된다. )

- 현재시간 - > UTC 시간으로 바뀌는 것

- 타임존은 동일한 로컬 시간을 갖는 지역을 의미하며, 이를 바꾼다면 TIMESTAMP 컬럼의 값도 바뀐다는 의미

- TimeStamp는 UTC시간으로 지정되며 데이터베이스 서버의 시간대 설정에 따라 자동으로 변환되기 때문에

글로벌 어플리케이션에서 유용함. 

  DATE DATETIME TIMESTAMP
포멧 YYYY-MM-DD YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss
설명 - 날짜만 표기 - 날짜 및 시간 표기 -날짜 및 시간 표기
- 기본적으로 Not Null
- TimeZone 기반
범위 1000-01-01 ~ 9999-12-31 1000-01-01 00:00:00
~ 9999:12:31 23:59:59
1970-01-01 00:00:01 UTC
~ 2038-01-19 03:14:07 UTC