網(wǎng)站開(kāi)發(fā)及維護(hù)合同網(wǎng)站免費(fèi)制作
列表名
列表名之后 order by 可以用別名 也可以用原名,
where 中不能用別名的
SQL語(yǔ)句執(zhí)行順序:
from–>where–>group by -->having — >select --> order
第一步:from語(yǔ)句,選擇要操作的表。
第二步:where語(yǔ)句,在from后的表中設(shè)置篩選條件,篩選出符合條件的記錄。
第三步:group by語(yǔ)句,把篩選出的記錄進(jìn)行分組。
第四步:having語(yǔ)句,設(shè)置條件篩選分組后的數(shù)據(jù)。
第五步:select語(yǔ)句,選取經(jīng)過(guò)上述流程后的結(jié)果集。
第六步:order by語(yǔ)句:將select后的結(jié)果集按照順序展示出來(lái)。
注意:
掌握SQL語(yǔ)句執(zhí)行流程非常重要,是理解并寫(xiě)好SQL語(yǔ)句的前提,根據(jù)實(shí)際業(yè)務(wù)邏輯要執(zhí)行的數(shù)據(jù)庫(kù)操作對(duì)應(yīng)到SQL語(yǔ)句的執(zhí)行流程能夠幫助我們快速寫(xiě)出相應(yīng)功能的標(biāo)準(zhǔn)SQL語(yǔ)句。
where和having區(qū)別:
where在group by前, having在group by 之后。
where 用于 過(guò)濾數(shù)據(jù)行 , having 用去過(guò)濾分組,是結(jié)果集過(guò)濾
where 針對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行過(guò)濾,having 針對(duì)查詢結(jié)果進(jìn)行過(guò)濾,也就是說(shuō) where 根據(jù)數(shù)據(jù)表中的字段直接進(jìn)行過(guò)濾的 having是根據(jù)前面已經(jīng)查詢出的字段(結(jié)果集)進(jìn)行過(guò)濾 ,where 先過(guò)濾 having 后過(guò)濾
where中不能使用聚合函數(shù),having中可以使用聚合函數(shù)。原因:因?yàn)榫酆虾瘮?shù)是針對(duì)結(jié)果集進(jìn)行的,但where是在查詢結(jié)果集之前進(jìn)行,故where中不能使用聚合函數(shù);having是針對(duì)結(jié)果集做篩選的,故一般把聚合函數(shù)放在having中。
HAVING 關(guān)鍵字和 WHERE 關(guān)鍵字都可以用來(lái)過(guò)濾數(shù)據(jù),且 HAVING 支持 WHERE 關(guān)鍵字中所有的操作符和語(yǔ)法。
表別名
只要表使用別名,且 sql中所涉及的 原名 必須 使用表別名,否報(bào)錯(cuò) xxx 過(guò)長(zhǎng)的樣子 錯(cuò)誤