. 길이는 0에서 255 사이의 값 (MySQL 5.0.3 이전)과 0에서 65,535 사이의 값이 될 수 있습니다 (MySQL 5.0.3 이상).
varchar의 저장소는 문자열의 길이를 선언하기 위해 1 바이트 또는 2 바이트가 추가 된 데이터 바이트입니다. 최대 길이가 255 이하이면 길이의 1 바이트 만 추가됩니다.
alter table을 사용하고 최대 길이를 변경하면 정의 된 최대 길이가 255 미만인 경우 데이터 저장 크기가 영향을받지 않습니다. 255보다 큰 최대 길이를 늘리면 저장 엔진에 따라 달라집니다 255 이하의 값에 대해 2 바이트를 강제하거나 그렇지 않으면이 경우 각 행에 대해 1 바이트 씩 증가합니다.
char 유형은 char가 항상 필요한 공간을 사용하므로 varchar와 다르므로 char (10) 및 varchar (10)가 있지만 "hello"만 저장되어 있으면 char는 모두 10 바이트를 사용하고 vharchar는 6 바이트 (hello의 경우 5 개, 길이의 경우 1 개)를 보유하므로 varchar 열의 크기를 변경하면 char 유형 인 것처럼 더 많은 저장 공간을 할당하지 않습니다.
진짜 질문은 왜 PHP가 varchar 크기를 조작하게하려는 것입니까? 텍스트 길이가 65,535 바이트 이상인 가변 길이 필드가 필요하고 동적 인 경우에도 필요한 최소한의 공간 만 사용하기 때문에 이유에 따라 크기를 지정해야합니다. TEXT 유형이 상황에 더 나을 수도 있습니다. ?
아니요. 'varchar()'는 가변 길이 문자열 형식입니다. 길이 바이트가 1에서 2 바이트로 변경되는 경우를 제외하고는 형식을 변경할 필요가 없습니다. 'char()'을 사용했다면 데이터가 실제로 변경 될 것입니다. –
의미 ?? ... 포맷이 저장되는 방식을 이해하지 못했습니다. 2 바이트가 필요하지 않으면 크기가 작더라도 항상 1로 저장됩니다. 그러나 최대 길이가 1 바이트에서 2 바이트로 변경되면 이전 데이터에 어떤 일이 발생할지 재 할당되고 따라서 뚱뚱한 데이터베이스에 큰 영향을 미칩니 까? – zardilior
나는 Golez Trol이 맞을지도 모른다고 생각한다 – zardilior