실제로 VARCHAR 데이터 유형은 가변 길이 문자 데이터를 단일 바이트 및 다중 바이트 문자로 저장합니다. 이 데이터 유형의 구문은 VARCHAR(n)입니다. 여기서 n은 최대 문자 수이며 다음과 같아야 합니다. 테이블을 생성하는 동안 지정됩니다. MySQL 5.03 이전에는 n 값의 범위가 0에서 255 사이일 수 있지만 MySQL 5.03 및 이후에는 0에서 65,535 사이의 값이 될 수 있습니다.
VARCHAR에 저장되는 최대 문자 수는 최대 행 크기와 사용된 문자 집합에 따라 다릅니다. ASCII 문자 집합을 사용하는 경우 ASCII는 문자당 1바이트를 사용하기 때문에 65,535자를 저장할 수 있습니다. 반면에 utf8 문자 집합을 사용하는 경우 utf8은 문자당 3바이트를 사용하기 때문에 문자 제한은 21,844입니다. 최대 행 크기 제한은 65,535바이트로 모든 열을 포함하여 65,535바이트를 넘지 않아야 합니다.
예시
mysql> Create Table var_test(FName Varchar(32765) NOT NULL, LName Varchar(32766) NOT NULL); Query OK, 0 rows affected (0.25 sec)
위의 쿼리는 FName Varchar(32765) 및 LName Varchar(32766)의 두 열이 있는 테이블을 생성했습니다. 따라서 총 길이는 32765+2+32766+2=65535가 됩니다(길이 저장을 위해 각 열에 2바이트가 사용됨).
mysql> Create Table var_test1(FName varchar(32766) NOT NULL, LName Varchar(32766) NOT NULL); ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
이제 MySQL은 길이를 1바이트 늘리면 위의 쿼리와 같이 오류를 반환합니다.