Someone’s going to post a much better answer than this, but just wanted to make the point that personally I would never store a phone number in any kind of integer field, mainly because:
- You don’t need to do any kind of arithmetic with it, and
- Sooner or later someone’s going to try to (do something like) put brackets around their area code.
In general though, I seem to almost exclusively use:
- INT(11) for anything that is either an ID or references another ID
- DATETIME for time stamps
- VARCHAR(255) for anything guaranteed to be under 255 characters (page titles, names, etc)
- TEXT for pretty much everything else.
Of course there are exceptions, but I find that covers most eventualities.