DataBase

[MySQL] char, varchar, text의 차이

yoongeon 2024. 7. 4. 22:39

데이터베이스에 문자열 자료형을 저장할 수 있는 데이터 타입인 char, varchar 그리고 text의 차이에 대해 정리해보려고 한다.

타입 가변유무 길이 예시
char 고정형 n <= 255 (byte) 국가코드, 핸드폰번호, 사번 등...
varchar 가변형 n <= 65535 (byte) 이름, 아이디, 주소 등...
text 가변형 n <= 65535 (byte) 게시글 내용 등...

 

📌  고정형(char) vs 가변형(varchar, text)

char와 varchar의 가장 큰 차이는 char는 고정형의 데이터 길이를 가지고 varchar는 고정되지 않는 가변형의 길이를 가지고 있다. 예를들어 char(5)로 설정을 하면 최대 5바이트의 크기의 문자열 저장이 가능하지만 3바이트로만 저장해도 5바이트의 공간을 항상 사용한다.

 

하지만 varchar(255)로 설정을 한다면 사용한 크기만큼 용량을 사용한다.

  • char(255) → 얼마나 데이터를 저장하든 255바이트의 크기만큼 공간을 무조건 사용
  • varchar(255) → 사용한 데이터의 크기만큼만 공간을 사용

 

📌  max size limit 설정 (varchar vs text)

char(255), char(10), varchar(255) 등 char나 varchar는 max size를 제한할 수 있다. 하지만 text는 무조건 고정적으로 65535바이트를 사용한다.

 

📌  각 타입의 예시

char같은 경우는 데이터의 길이가 일정하고 고정적이기 때문에 항상 고정된 길이를 가지고 있는 데이터의 경우에 적합하다. 하지만 varchar는 저장한 크기 만큼만 용량을 사용하기 때문에 길이가 고정적이지 않은 데이터에 대해서 적합하다.

  • char : 국가코드, 핸드폰 번호, 사번 등 ...
  • varchar : 이름, 아이디, 주소 등 ...
  • text : 블로그 내용, 게시글 내용 등 ...