Bekijk https://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html
In principe zijn al deze typen behalve de CHAR zijn van variabele lengte.
Als u bijvoorbeeld VARCHAR(72) . heeft en je schrijft abcd erin, bewaart u 5 bytes. 4 bytes voor elk teken, en een prefix van 1 byte om de lengte van de string op te slaan (dat is 4).
Als de string langer is dan 255 tekens, is het VARCHAR-voorvoegsel 2 bytes. Dus een VARCHAR(300) met een string van 256 karakters erin opgeslagen, zal 258 bytes in beslag nemen.
TINYTEXT heeft altijd een prefix van 1 byte, omdat je er maar 255 tekens in kunt opslaan, dus abcd zou 5 bytes in beslag nemen.
TEXT heeft een prefix van 2 bytes, dus abcd zou 6 bytes zijn.
LONGTEXT heeft een prefix van 4 bytes, dus abcd zou 8 bytes zijn.
Ten slotte is er de bijna nutteloze CHAR type. Een CHAR(72) zal altijd 72 bytes in beslag nemen, ongeacht wat je erin opslaat. Het is eigenlijk alleen handig voor superkorte velden waar er altijd exact hetzelfde aantal tekens in het veld staat. Like Y of N zou een goede CHAR(1) . zijn kandidaat.