Udemy - The Ultimate MySQL Bootcamp: Go from SQL Beginner to Expert를 수강하며 정리하는 글
VARCHAR and CHAR both store text but there's one relly key difference.CHAR has a fixed length.
The length of a CHAR column is fixed to the length that you declare when you create the table. The length can be any value from 0 to 255. When CHAR values ar stored, they are right-padded with spaces to the specified length. When CHAR values are retrieved, trailing spaces are removed unless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.
CHAR와 VARCHAR 둘다 text를 저장하지만 한가지 다른점이 있다. CHAR는 고정된 길이를 가지고 있다. 만약에 CHAR의 길이를 10으로 설정하고 15길이의 문자열을 넣는다면 10까지만 저장하고 자르고, 5길이의 문자열을 넣는다면 나머지 빈 공간을 space로 채워넣는다.
위에서 쓴 CHAR와 VARCHAR의 차이점 중 설정된 이상의 값을 집어넣었을 때 문자열을 자르는 것은 strict SQL mode가 아닐 때 발생한다. strict SQL mode라면 에러를 발생시키며 데이터를 넣지 않는다. 개인적인 생각으로는 strict SQL mode를 사용하는 편이 좋다고 생각한다. 규칙없이 막 넣다보면은 결국에는 개판이 될거같다.