[Database] char / varchar

dbswlekq·2023년 3월 31일
0

char

  • CHAR는 고정 사이즈이다.
  • 남는 공간은 공백으로 채우게 된다.
  • CHAR(10) 인데 ‘test’라는 4자짜리 문자열을 insert하게 되면 남는 공간은 6개의 공백으로 채우게 된다. 따라서 무조건 처음 선언된 10byte가 소요된다.
  • 물론 값을 받아 올 때 이 공백은 자동으로 제거된다.공백까지 읽고 싶다면 PAD_CHAR_TO_FULL_LENGTH 모드를 활성화하면 공백까지 다 읽어온다.

varchar

  • VARCHAR는 이름이 의미하듯 가변길이이다.
  • 데이터를 삽입하면 데이터값외에 삽입된 문자열의 길이를 저장하는데, 255글자 이하에는 1바이트, 그 이상은 2바이트의 추가 공간을 필요로 한다. 즉, 실질적인 데이터와 길이 정보도 같이 저장된다.
  • VARCHAR(10)에 ‘test’라는 4자짜리 문자열을 삽입하면4byte + 1byte(길이를 저장하기 위한 메모리) = 5byte가 소모된다.
  • 저정할 수 있는 길이는 0부터 255까지이며MySQL 5.0.3 이후에는 0부터 65,535까지 지정할 수 있다.
  • VARCHAR 값은 저장될 때에 공백이 추가되지 않는다.
  • 공백에 대한 처리는 버전에 따라 다르다.

이름, 주소 등의 길이가 변할 수 있는 값은 VARCHAR를 사용하고, 사번, 주민등록번호 같은 길이가 일정한 데이터는 CHAR를 사용하는게 좋다.


참고
https://ninearies.tistory.com/166
https://goodgid.github.io/JS-char-vs-varchar/

0개의 댓글