讀《SQL必知必會》所得 TWO

第7章 創建計算字段

這章主要介紹字段的拼接,將多個字段組合或變換成你想要的形式。

1.一般而言,在DBMS中做這種變換和拼接遠比客戶機應用程序中做的要快。
2.拼接可以使用關聯符號,但是關聯符號各個DBMS全不一樣。Access,SqlServer,Sybase用+號;DB2,PostgreSql,Oracle,Sysbase用||,而Mysql使用concat方法.一般而言,||是首選語法。
3.使用別名也叫導出列,一般通過AS子句指定,Oracle有些不一樣。
4.執行算數運算,Sql中有通用的4則運算,即 +  -  *  /

第8章 使用數據處理函數

本章介紹Sql的函數,這應該不陌生。

1.每個DBMS的函數不盡相同,使用函數肯定會一定程度上造成SQL語句可移植性降低。
2.每個DBMS不一樣,用到那個查那個的使用手冊是最佳辦法。

第9章 數據彙總

這章介紹Sql中的聚集函數

1.聚集函數:運行在行組上,計算和返回單個值的函數.
2.常見有下面5個,AVG(),COUNT(),MAX(),MIN(),SUM(),意義不用多說了。要注意的有幾點:一般而言,聚焦函數是忽略列中的空行(Null值)的,但是Count(*)時不忽略空行。
3.通過ALL和DISTINCT來聚集不同值。ALL爲默認,對所有行執行計算;DISTINCT,對不同的值進行計算。所以DISTINCT就不能和Count(*)配合使用。
4.有些DBMS還提供了其他的聚集參數,如Top 和Top Percent。

第10章 分組計算

上一章內容的延續,找出彙總表內容子集的方法。主要是Group by子句和Having子句。

Group By子句

1.Group By子句限制超多,該子句一般在按組計算聚合時使用。
2.Group By子句可以包含任意數目的列,這些列進行使得分組進行嵌套,而數據將在最後確定的分組上面彙總。
3.Group By子句中的每個列必須是檢索列或是有效表達式,而且一般不能是長度可變的數據類型(如文本或備註型字段);如果使用有效表達式,則必須在Group By子句中採用相同的表達式,不能使用別名.
4.除聚集計算語句外,Select語句中的每一個列都必須包含在Select語句中。
5.如果分組列中具有Null值,則Null值將作爲一個分組返回.
6.Group By子句應該於Order By子句配合使用來控制最終的輸出順序.

Having子句

1.Having子句作用和Where子句類似,完成某種形式的過濾。Having子句可以支持所有的Where操作符。
2.Having子句與Where子句的不同:Having子句是針對分組聚集值來過濾的,而不是針對某個特定的行值過濾的。
3.Having子句與Where子句的不同:Having子句是在分組後過濾的,而Wher子句實在分組前過濾的.

第11章 子查詢

這章介紹子查詢,也算是老朋友了。

1.子查詢一般用在Where子句和In子句中充當過濾條件的一部分,另外子查詢還可以用來填充計算列(這個偶用的少)。
2.子查詢只能查詢一個列,如果查詢多列會出錯
3.子查詢用的不好對DBMS性能下降比較大,選擇子查詢要慎重。(這點偶是受害者,我的一個子查詢的Sql執行了15分鐘,幸好只是個測試,要是上了項目,那就成笑話了)

就到這裏了,下次繼續.

154278.html

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