How and when do I use an alias in my SQL statement
Structured Query Language is a declarative language.  Declarative languages don't tell the computer how to run, they simply describe the desired result.  The implication here is the alias is only important for the results, not the execution of the query.

Since MySQL (and most other RDBMSs) only apply aliases after the query has completed, MySQL will complain if you attempt to use an alias in another column since it doesn't actually understand what the alias represents until the query completes.