數據庫6之單表查詢

當用戶登錄到SQL Server後,就被指定一個缺省數據庫,該缺省數據庫就是Master數據庫。

此時我們新建一個數據庫,用來存放我們自己的數據。

單擊右鍵,選擇新建數據庫

再點擊右下角的確定,一個你自己的數據庫就創建完成啦。當然你也可以選擇初始大小和自動增長的值,我這裏設置爲默認。

我們需要調用自己的數據庫來存放自己的數據,有兩種方法:

-->可視化操作

選擇你需要用的數據庫就可以了

-->用use切換到需要使用的數據庫

輸入語句(此時還未執行該語句,顯示的是master數據庫)


點擊執行之後


成功切換到我的test數據庫。

*****************************************************************************************************************************go語句:作爲一個批處理執行,有一些語句不能在同一個批處理中執行,例如create和alter,當create一個表之後,用go結束當前批處理,才能繼續用alter


****************************************************************************************************************************

查詢

又稱爲檢索,就是從數據庫表或者視圖當中快速搜索並提取我們需要的數據。

查詢是對數據庫其它操作(如統計、插入、刪除、修改等)的基礎。查詢得到的數據稱爲查詢結果數據集,簡稱查詢數據集。

查詢得到的數據集,其中的數據可以進一步進行計算、統計、彙總以及分析,最終可以按照用戶的需求輸出。

以下是查詢命令運行的原理。


客戶端請求查詢,服務器處理,從數據庫中查詢並提取數據,再通過服務器返回到一個查詢數據集,再顯示給客戶端,最終給用戶呈現。


單表查詢(只涉及一個表)

-->選擇列

(1)全部列

輸入語句,然後執行,會以表格的形式展示你所需要的數據,*是通配符,代表所有的。本例展示了c表中所有的數據

(2)指定列

由於有些重複,所以就和取別名放在一起了

(3)取別名

如果只需要展示某一個列並且給該列取別名:

別名就是你要展現給用戶看的名字,或者說取的標題,取別名並不修改數據庫表中的列名,只是給用戶看的時候會呈現這個名字

取別名的時候可以用as或者等於號,當你取的別名中有空格的時候,這個別名應該用單引號''括起來

(4)查詢經過計算的值

執行之後,效果如圖所示


當我們給其取了一個別名之後,更加清晰明瞭,此時別名的作用更加體現出來了


(5)替換查詢結果中的數據

利用update…set…語句對查詢結果進行替換,還用到了case…when…語句

update語法:update+表名set+字段(列名)+新的值

case…when…語法:(當case語句中不包含else語句的時候,如果所有的比較失敗,就會返回null)



-->選擇行

(6)限制結果集的返回行數

選擇顯示前三或者前幾

(7)消除結果集中的重複行

表:


由於上表中有重複值,所以查詢出來的結果有重複值

如果我們不需要顯示重複值,可以列前加distinct



注意:當distinct缺省的時候默認爲all

predicate爲判定運算:可以是比較運算、指定範圍、判斷爲空等,判定結果爲true、false、unknown(null)

---1.比較運算---比較運算符有-、<、<=、>、>=、<>、!=、!<、!>

---2.指定範圍---在某個範圍between…and…、不在某個範圍not between…and…。and之後接高值

---3.確定集合---使用in,當表達式和集合中的任意一個匹配的時候,就返回true否則返回false

---4.模糊查詢---使用like

---5.通配符---%表示任意長度的字符串,包括0,_表示任意一個字符,[]表示字符列中的任何單一字符。


---6.---空值比較---判斷一個表達式是否是空值,使用is null關鍵字


-->排序

---1.---order by子句,可以對查詢結果按照一個或者多個字段進行升序或者降序的排列,如果沒指明,默認爲升序。

語法:

order_by_expression是排序表達式,expression可以是列名,表達式或者一個正整數,當其爲正整數的時候,表示按照表中該位置上的列進行升序或者降序排序。


-->聚合函數



-->分組

如果要統計各個專業的平均借書量和總借書量,這就需要用到分組了。

先把數據進行分組,再通過where子句篩選得到有效的數據行,然後利用聚合函數計算統計

需要用到group by子句。

注意:select後面的字段要麼是group by後面的字段,要麼是通過聚合函數得到的虛擬列。



-->分組篩選

如果分組之後還需要按照一定的條件對這些數據進行篩選,就要使用having子句來指定篩選條件。

注意區別where和having:

---1.---where子句是用來指定“行”的條件,而having子句是用來指定“組”的條件

---2.---where子句中不可以使用聚合函數,而having子句可以

****************************************************************************************************************************group by,having,where,order by幾個語句的執行順序:

1.首先,where將最原始的記錄中不滿足條件的記錄刪除,可以減少分組的次數

2.然後通過group by來對其後的字段進行分組

3.接着根據having關鍵字篩選滿足條件的記錄

4.然後按照order by語句對視圖進行排序,產生最終結果

(格式可以參考本文上述select語法格式)

****************************************************************************************************************************

查詢數據集只是一個虛擬的表,只是以一個表的形式顯示出來方便觀看,實際中並不會被存儲,也不會被放在緩衝區當中,所以,每次對數據庫進行查詢的時候都會重新從數據庫表中提取數據。




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