But loops aren't evil.
All imperative languages I can think of "must" use loops. Please enlighten me otherwise.
The examples that use break? Again, as stated before, break is NOT GOTO. It doesn't just jump to some arbitrary point. It does exit it's current control structure in a consistent manner.
Hardly. That you even need a reason explicitly stated means the chasm of understanding is probably too great. Simply, a GOTO allows code execution to move to an arbitrary point. This type of behavior is unnecessary in procedural languages. If it's unclear why being able simply relocate execution in an inconsistent fashion is problematic, then we're probably done.
No, they are flow control statements. They leave a block in a consistent and understood way. While some dislike this, many take no issue with it. Unlike, say, GOTO.
Note, SQL does NOT have a GOTO. SQL is a declarative language with zero flow control. PL/SQL and T-SQL do have a GOTO. I do use the GOTO this context, mostly because of the primitive nature of the languages and the quirks of transactional processing.