Do I lose data if I change from INT to TINYINT I have a database (Engine InnoDB) that was setup by someone else. I noticed that one column contains data between 1 and 107 at this moment, and it is highly unlikely to further increase much.

As it is currently set up as INT my idea was to change type to TINYINT unsigned.

Can I just do that without losing data? What would be the most efficient way to go about it?

I am still rather new to databases, getting my hands dirty at the moment and learning all about data types and performance, etc. Looks like my precursor hasn't done such a good job... :(
A tiny int will save you space. Here are their storage:

tinyint: 1 byte
smallint: 2 bytes
int: 4 bytes

From MySQL official website: http://dev.mysql.com/doc/refman/5.1/en/integer-types.html

Keep in mind a tinyint has a range up to 255. If there is a chance you may go over, I would use smallint or int

You can alter the column in sql and not lose data:

    alter table MyTable alter column MyColumn tinyint --(null|not null)