Oracle(零)--> 偽列和分組彙總(Oracle 開篇,比較初級啦~),oracle開篇
寫在開篇~ 不知不覺已然到了開學的時候(等會。。跟我有什麼關係。。),畢竟這個大三連暑假還不知道是什麼就上崗了,看著周圍同學秀的簡直飛起 =。= 扯淡扯多了,再扯一句。。大三的時候學的 Oracle ,但是現在一想竟然不覺得有何內容,而且觸發器,預存程序老師也沒有教過,自己也沒有看過,實在。。。畢竟華為工程師說的那句話還是依稀在眼前。。不管怎麼樣,先搞明白是何物,以後才在項目中知道該如何去使用。本流程基本按學習過程中 PPT 來走的,而再往前的東西概念太多,大家又不是很喜歡字,都愛看圖嘛~視頻就算了,太刺激了都受不了~哈哈。從偽列和sql函數開始談起~1、在討論偽列及分組彙總之前,先說一下 select 語句和 dinstinct 的使用和注意事項。1)select 語句中的運算使用列別名如果顯示資料庫中儲存的所有圖書的列表時,需要將欄位標題顯示為"Titil of books",可以在 select 子句中列名稱的後面列出列別名。sql:SELECT title AS "Title of books",category FROM books;注意可選關鍵字 AS,以便區分列別名和列名稱。準則:如果列名稱包含空格、特舒符號或者不希望全部以大寫字母顯示它,那麼必須將它包含在 " " 中。如果只包含一個單詞,則不需要 " " 。2)使用 distinct 和 unique 重複資料刪除的列。
2、偽列1)Oracle 中偽列就像一個表列,但是它並沒有儲存在表中;2)偽列可以從表中查詢,但不能插入、更新和刪除它的值;3)常用的偽列有 ROWID 和 ROWNUM
ROWID:是表中行的儲存地址,該地址可以唯一的標識資料庫中的一行,可以使用 ROWID 偽列快速的定位表中的一行。
ROWNUM:是查詢返回的結果集中行的序號,可以使用它來限制查詢返回的行數。
3、常用的彙總函式(組函數)也稱為多行函數,他們能處理每一行並返回一個結果,常用組函數:SUM、AVG、COUNT、MIN、MAX。
彙總函式是對於所有記錄進行彙總的,有時候我們需要先對記錄分組再進行彙總。對記錄的分組是通過關鍵字 GROUP BY 實現的,如:group by f1,f2,f3,若且唯若兩條記錄在所有屬性在 f1、f2、f3 上達成一致,它們才是同一組的。例:每一類圖書的平均利潤sql:SELECT category,TO_CHAR(AVG(retail - cost),'999.99')as profit FROM books GROUP BY category.
GROUP BY 字句注意事項1、如果在 select 子句中使用一個組函數,那麼在 select 子句中列出的單獨的列必須在 GROUP BY 子句中列出;2、用來在 group by 子句中分組資料的列不必在 select 子句中列出,在 select 子句中包括它們只是為了在輸出中指定組;3、不能在 group by 子句中使用列別名;4、從包括 group by 子句的 select 語句返回的結果將以在 group by 子句中列出的列的升序顯示結果,要想以不同的順序顯示結果,可以使用 order by 子句。
HAVING 子句1、用來限制一個查詢返回的組;2、如果需要使用組函數來限制組,那麼必須使用 having 子句,因為 where 子句不能包含組函數。Having 子句指定了那些將顯示在結果中。即: having 子句充當了組的 where 子句。例:顯示平均利潤超過 15 美元的圖書的種類sql:SELECT category,TO_CHAR(AVG(retail - cost),'999.99')as profit FROM books GROUP BY category Having AVG(retail-cost)>15.
ORDER BY子句1、用於末尾,預設升序
次排序1、ORDER BY 子句只指定一列時,稱為"主排序",如果住排序中的兩行或更多行完全相同,那麼次排序提供了另一個進行排序的手段。例:查詢按州降序排列的客戶,有多個居住在某個特定州的客戶時,將按城市的升序對客戶排序。sql:SELECT lastname,firstname,city,state FROM customers ORDER BY state desc,city;
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。