Вижте https://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html
По принцип всички тези типове с изключение на CHAR са с променлива дължина.
Например, ако имате VARCHAR(72) и пишете abcd в него ще съхранявате 5 байта. 4 байта за всеки знак и 1 байтов префикс за съхраняване на дължината на низа (която е 4).
Ако дължината на низа е над 255 знака, тогава префиксът VARCHAR ще бъде 2 байта. Така че VARCHAR(300) с низ от 256 символа, съхранен в него, ще заеме 258 байта.
TINYTEXT винаги има префикс от 1 байт, защото можете да съхранявате само 255 знака в него, така че abcd ще отнеме 5 байта.
TEXT има префикс от 2 байта, така че abcd ще бъде 6 байта.
LONGTEXT има префикс от 4 байта, така че abcd ще бъде 8 байта.
И накрая, има почти безполезният CHAR Тип. A CHAR(72) винаги ще заема 72 байта, независимо какво съхранявате в него. Наистина е полезно само за супер къси полета, където винаги има точно същия брой знаци в полето. Като Y или N би било добър CHAR(1) кандидат.