SQL小結(一)

一.數據庫中having用法

having經常與group by和聚合函數(COUNT, SUM, AVG, MIN, or MAX)一起使用,用來過濾由GROUP BY語句返回的記錄集。聚合函數通過作用於一組數據而只返回一個單個值,因此,在SELECT語句中出現的元素要麼爲一個聚合函數的輸入值,要麼爲GROUP BY語句的參數,否則會出錯。

HAVING語句的存在彌補了WHERE關鍵字不能與聚合函數聯合使用的不足。

語法:

SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;

同樣使用本文中的學生表格,如果想查詢平均分高於80分的學生記錄可以這樣寫:

SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore

FROM student

GROUP BY id

HAVING AVG(score)>=80;

在這裏,如果用WHERE代替HAVING就會出錯//where 的地方用到的數據是一組數據,不能是一個數

二.where、having之間的區別和用法

聚合函數是比較where、having 的關鍵。 
開門見山。where、聚合函數、having 在from後面的執行順序:

where>聚合函數(sum,min,max,avg,count)>having

列出group by來比較二者。()因where和having 在使用group by時問的最多) 
若須引入聚合函數來對group by 結果進行過濾 則只能用having。(此處不多說,自己想 是先執行聚合函數還是先過濾 然後比對我上面列出的執行順序 一看便知)

樣例:select sum(score) from student  where sex='man' group by name having sum(score)>210
注意事項 : 
1、where 後不能跟聚合函數,因爲where執行順序大於聚合函數。 
2、where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,條件中不能包含聚組函數,使用where條件顯示特定的行。 
3、having 子句的作用是篩選滿足條件的組,即在分組之後過濾數據,條件中經常包含聚組函數,使用having 條件顯示特定的組,也可以使用多個分組標準進行分組。

三.ALTER、MODIFY和UPDATE的區別?

1、modify是修改字段類型和長度的(即修改字段的屬性)。
2、alter是修改表的數據結構(modify是alter的一種用法/屬性)。
sql:alter table tablename modify (name varchar2(20));
解釋:修改tablename表中name字段的長度爲20個字符

modidy是修改字段的屬性 ,只是alter的一個功能 ,alter還能做add,set等操作 。
修改數據表的名稱用rename ,字段名以及屬性用modify ,字段值用set ,這些全是alter 。

3、update是修改數據內容的。
sql:update table tablename set name =’張三‘ where name =’李四‘。
解釋:更新tablename表中‘李四’的name爲’張三‘。
備註:modify和alter執行命令完成即生效,update語句要“commit”之後纔會生效。

參考資料:https://zhidao.baidu.com/question/98325731.html

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章