Podívejte se na https://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html
V podstatě všechny tyto typy kromě CHAR mají proměnlivou délku.
Například, pokud máte VARCHAR(72) a napíšete abcd do něj uložíte 5 bajtů. 4 bajty pro každý znak a 1 bajtový prefix pro uložení délky řetězce (což je 4).
Pokud je délka řetězce větší než 255 znaků, pak bude mít předpona VARCHAR 2 bajty. Tedy VARCHAR(300) s 256 znakovým řetězcem uloženým v něm zabere 258 bajtů.
TINYTEXT má vždy 1 byte prefix, protože do něj můžete uložit pouze 255 znaků, takže abcd zabere 5 bajtů.
TEXT má 2bajtovou předponu, takže abcd by bylo 6 bajtů.
LONGTEXT má 4bajtovou předponu, takže abcd by bylo 8 bajtů.
Nakonec je tu téměř zbytečný CHAR typ. A CHAR(72) bude vždy zabírat 72 bajtů bez ohledu na to, co do něj uložíte. Je to užitečné opravdu jen pro super krátká pole, kde je v poli vždy přesně stejný počet znaků. Jako Y nebo N by bylo dobré CHAR(1) kandidát.