Depends on how you specify the column.
If you do
Code:
CREATE TABLE yourTableName (
medtext CHAR(16),
...
);
Then MySQL indeed reserves space for exactly 16 characters in every record. And you will get an error (or warning, depending on how you set up MySQL) when you try to put more than 16 characters into the field.
However, if you use
Code:
medtext VARCHAR(16),
Then MySQL will store only as many characters as you actually put into the field. Again, though, 16 will be the maximum allowed. You could do
Code:
medtext VARCHAR(255),
and still MySQL will only need as much space as you actually use.
NOTE: This is not quite true. VARCHAR, because it does use a variable amount of space, incurs OVERHEAD in the form of a hidden length value that remembers how much data is stored. So if you only need to store, say, up to 4 characters, it will be more efficient to use CHAR(4). But a caution: CHAR() of any size *PADS* your text with SPACES up to the given size.
In general, CHAR() is much much less often used than VARCHAR().
N.B.: The above applies pretty much unchanged to all relational databases: MySQL, SQL Server, Oracle, etc.