오픈 소스 RDBMS이다.
→ 누구에게나 무료
![]() |
|---|
양수만 사용될 경우 UNSIGNED
음수도 사용될 경우 SIGNED
→ UNSIGNED 옵션을 사용하면 음수 없이 양수만 저장해서 용량을 절약할 수 있다.
(예) INT UNSIGNED : 0 ~ 4,294,967,295
![]() |
|---|
신기한 점은 TIMESTAMP 는 밀리세컨드 단위로 저장해주기에, 내가 생각했을 때는 DATEIME 보다 더 세세한 시간까지 나타내주니까 용량을 더 차지할 줄 알았는데 아니었다.
그 이유는 TIMESTAMP 는 DATETIME 보다 공간을 덜 차지하지만, UTC(세계 표준시) 기준으로 저장되기 때문이다.
TIMESTAMP vs DATETIME 차이점둘 다 날짜와 시간(YYYY-MM-DD HH:MI:SS)을 저장하는 타입이지만, 저장 방식과 범위가 다르다

➡️ TIMESTAMP : 시간대에 영향을 받는 상대적인 시간
➡️ DATETIME : 날짜와 시간의 절대적인 값. 어느 누가 데이터를 읽어도 항상 같은 값(국가별 시차 상관 없이)으로 조회된다.

✔ TIMESTAMP → 저장 크기가 작고 UTC 변환 기능이 있어 로그 데이터에 적합
✔ DATETIME → 입력한 값 그대로 저장되고 2038년 이후 날짜까지 보장되므로 미래 데이터 저장에 적합
➡️ 로그나 최근 시간은 TIMESTAMP, 넓은 범위 날짜는 DATETIME 이 좋다!
![]() |
|---|
➡️ 항상 지정한 길이만큼 공간을 차지하기 때문에, ❗속도가 빠르지만 공간 낭비 가능성이 있다❗
➡️ ❓언제 쓸까?❓ 주민번호, 우편번호 등 길이가 일정한 데이터에 사용.
![]() |
|---|
➡️ 입력된 데이터 길이만큼만 공간을 사용하기 때문에, ❗공간을 절약할 수 있지만, 속도는 CHAR 보다 느릴 수 있다❗
➡️ ❓언제 쓸까?❓ 사용자 이름, 이메일, 주소 등 길이가 일정하지 않은 데이터에 사용.
![]() |
|---|
➡️ ❗VARCHAR 보다 큰 데이터 저장 가능❗ 하지만, 인덱싱(Index) 제한이 있어서 ❗검색 속도가 느릴 수 있다❗
➡️ ❓언제 쓸까?❓ 블로그 글, 제품 설명, 댓글, 장문 텍스트 데이터에 사용.
![]() |
|---|
➡️ 텍스트가 아닌 이미지, 동영상, 오디오 파일 등을 저장할 때 사용.
➡️ ❗하지만 보통 파일 경로(URL)만 DB에 저장하고, 실제 파일은 서버에 저장하는 방식이 더 효율적❗
![]() |
|---|
BOOLEAN : 참 / 거짓
ENUM : 카테고리 선택 (한 개만 가능)
SET : 카테고리 선택 (여러 개 가능)
JSON : 동적 데이터 저장
➡️ 데이터 특성에 맞게 적절한 타입을 선택하면 성능과 저장 공간을 최적화할 수 있다.
저도 1차 과제 할 때 DB는 Timestamp로, Spring은 LocalDateTime으로 했는데 Postman으로 시간 기준으로 조회하니까 안되더라구요. 밀리세컨이지만 소수점 이하는 버리는 것 같습니다. (틀린 말일 수도 있습니다)