MySql学習——whereとhavingの違い


whereはテーブルにすでに存在するフィールドのみをフィルタリングし、havingはテーブル内のフィールド以外のフィールドと集計関数(max,min,avg,sum)をフィルタリングできます.
//sumgarde       english     

select (sumgarde-english) as a from stu having a > 500;

//                500    

ここでhavingをwhereに変えてはいけません.の
PS:havingもテーブルのフィールドをクエリーできることに気づきました.それはwhereクエリーテーブルのフィールドと何か違いがありますか.効率的な問題はありますか?ブロガーの皆さんにヒントを与えてほしいです.そして、whereとhavingに何か違いがあれば、コメントエリアに伝言を歓迎します.