char는 고정 '문자' 길이다
varchar는 가변 '문자' 길이다
예를 들어 name char(4) 라고 선언하면 무조건 네 개의 문자 공간을 확보해서 저장한다.
그래서 name에 '코드'라는 문자열을 저장하게 되면 '코드 ' <-- 이렇게 나머지 두 개의 문자는 스페이스로 채워서 저장한다,
반면 name varchar(4) 라고 선언하면 문자열의 문자 수에 맞춰서 공간을 확보해서 저장한다.
그래서 name에 '코드'라는 문자열을 저장하면 '코드' <-- 이렇게 두 개의 문자만 저장한다.
char, varchar 모두 파라미터로 받는 수는 문자 수이다. (바이트(byte) 수가 아니다!)
* 참고로 'varchar 문자열이 차지하는 바이트 = 문자 수 * 사용한 문자 인코딩에 따른 바이트 수'이다
varchar는 가변 길이기 때문에 MySQL에서는 문자열을 저장할 때 문자열의 길이 정보도 포함해서 같이 저장한다.
그래서 'varchar로 저장되는 문자열의 바이트 = 문자열 자체의 바이트 + 문자열 길이 정보를 담은 바이트'가 된다.
길이가 가변적인 값을 가지는 문자열의 경우에는 varchar를
길이가 고정인 값을 가지는 문자열의 경우에는 char를 쓰는 것이 좋겠다.
쉬운코드 유튭 !
https://www.youtube.com/watch?v=c8WNbcxkRhY