Use a single plain text field!
Unless you're constructing a database for delivery optimization or other highly-local use, you should just go ahead and store the complete address as a text field with standard line breaks.
If there is additional information that you need, such as a zip code or street for sorting and grouping so you get a bulk mail discount, you can either store that in an additional field, or just determine it at mail-time by way of some fairly simple logic. (Or you could give each address a permanent key, and have for-discount information provided by way of other tables.)
Now, I'm not saying that you shouldn't provide some multi-part address form with city and state lists and perhaps an automatic reference to a country's postal service address API, but you didn't ask about how to construct a form for user input, you asked how to store the address in a database.
Of course, if you do that form you might want to store a JSON or XML blob so the fields can be re-populated, but that's not data that your database itself necessarily needs to care about...