SQL語言_3 模糊查詢和聚合函數

                               SQL語言_3 模糊查詢和聚合函數

                                                                                                                              作者:田超凡

版權所有,轉載請註明原作者,仿冒侵權必究法律責任

 

1.數據庫中查詢的機制

查詢是針對數據表中已存在的數據行而言的,可以將它簡單理解爲篩選,將符合條件的數據抽取出來,並通過T-SQL語句中的要求和限制對返回結果進行處理後實時反饋給用戶。

數據庫表在接收查詢請求時,可以將它理解爲“它將逐行判斷”,將符合條件的記錄抽取出來並結合在一起形成記錄集。在記錄集中依然可以進行再次查詢。

2.T-SQL基礎查詢語句是什麼?

查詢表中所有數據 SELECT * FROM 表名

查詢表中部分數據

SELECT 列名1,列名2

FROM 表名

WHERE 查詢條件

ORDER BY 排序(升序ASC/降序DESC,如不指定排序方式,則默認爲升序排序ASC)

3.T-SQL稍複雜的查詢語句有哪些?

注意:以下查詢語句產生的結果均只對結果集產生影響,或者可以理解爲是虛擬的,對原表中的數據不會造成任何影響。

在查詢結果中使用列的別名:

  •  SELECT 列名 AS 別名….

② SELECT 別名=列名…

③SELECT 列名 別名(空格分隔)

在查詢結果中合併多個列:

SELECT 列名1+列名2+列名3… AS 別名

使用“+”操作符在查詢結果中合併多個列,同樣可以指定列的別名。如果其中有一個列的數據類型是字符串型,則直接返回合併後的列,如果要合併的每一個列的數據類型都是數字數據類型,則只返回數值相加後的結果。

查詢空值:

WHERE 列名 IS NULL/IS NOT NULL

判斷某列是否爲空

在查詢結果中插入常量列:

SELECT 常量值 AS 列名

查詢結果中會多出一個列,這個列中的所有數值都是定義的常量值。

限制返回的行數:

SELECT TOP 行數(必須是整數型) 列名1,列名2…

滿足查詢條件的前提下,返回指定數量的數據行

限制返回的行數所佔的百分比:

SELECT TOP 百分數 PERCENT 列名1,列名2…

滿足查詢條件的前提下,返回查詢結果中指定比例的行數

4.T-SQL如何對查詢後的結果進行排序?

ORDER BY 列名1 ASC/DESC,列名2 ASC/DESC….

使用ORDER BY字句可以在查詢結果中對一個或多個列進行排序(升序ASC/降序DESC),如不指定排序方式,則默認升序排序ASC

不論查詢語句有多複雜,查詢條件有多少限制,ORDER BY子句只能用在查詢語句中的結尾。在對查詢結果按多個列進行排序時,只以指定的第一個排序的列爲基準,也就是說,當指定的第一個列中的數據相同時,纔會依據指定的後面的列指定的排序方式進行排序。如果第一個列(基準列)中的數據均不相同,那麼在後面指定的排序列不會有任何排序效果(也就是無效的)。

5.T-SQL使用查詢排序的一些實用案例和技巧有哪些?

通常將ORDER BY字句和TOP關鍵字配合使用,從而滿足某些只返回特定數量的數據行的特殊要求:比如最大值、最小值、前三名、後三名…..等等,使用ORDER BY字句指定按一個或多個列進行排序(升序ASC/降序DESC),使用TOP關鍵字限制返回的行數,以完成這些特殊要求。

6.SQL Server中有哪幾類常見的內部函數?它們的作用分別是什麼?

字符串函數(用於操作字符串)

日期函數(用來對日期時間類型的數據進行處理)

數學函數(用來操作數字,進行常用的數學計算)

系統函數(系統內置的函數,方便獲得一些系統信息,比如登錄名、用戶名、計算機名等等)

 

※通過本章的學習,你需要重點掌握的知識點:

1.什麼是模糊查詢?模糊查詢的作用是什麼?

2.什麼是通配符?通配符的作用是什麼?常用的通配符有哪些?

3.可以通過在查詢語句中使用哪些關鍵字對數據進行模糊查詢?這些關鍵字分別有什麼作用?

4.什麼是聚合函數?SQL Server中常用的聚合函數有哪些?分別有什麼作用?

5.使用T-SQL基礎查詢語句和模糊查詢關鍵字、內部函數(包括常見的內部函數和聚合函數)聯合查詢數據的一些注意事項?

 

※看看以下我的一些自我總結,看看有沒有掌握住知識點:

1.

模糊查詢是T-SQL中的一種查詢機制,在使用模糊查詢時,查詢者對查詢條件也是模糊的、大概的、不是非常明確的。

使用模糊查詢可以將字符數據類型的列和某些字符串或字符串中的一部分進行匹配、或者在某個範圍內進行查詢,也可以在某些列舉值內進行查詢,從而執行滿足用戶需要的,在某一特殊範圍內的查詢,往往使用於用戶對查詢的條件不是非常確切的情況下。此時可以通過模糊查詢縮小查詢的範圍,而不需要在一個很大的範圍內進行數據檢索,對於用戶來說可以減少工作量,對於數據庫來說可以提高檢索效率,改善數據庫的性能。

2.

通配符是一類字符,作用在於通配符可以用來替代一個或多個真正意義上的字符,在查詢信息時,可以使用通配符作爲替換字符出現,從而進行模糊匹配。

T-SQL中的常用通配符

_ 可以替代一個字符

比如:張_ ,則滿足條件的數據有:張三,張蘭…

% 可以替代任意長度的字符串

比如 %北京市%,則滿足條件的數據有:北京市西城區、中國北京市、中國北京市東城區….

[] 在指定範圍內的數據

比如 [3-8] 則滿足條件的數據有:3,4,5,6,7,8

[A-Z] 滿足條件的數據有:字母表中26個字母的大寫形式

[^] 不在指定範圍內的數據

比如[^3-5] 則滿足條件的數據有:1,2,6,7,8…

在T-SQL中,通配符必須和LIKE字句一起使用,從而完成特殊的約束或要求

3.

①使用LIKE字句進行模糊查詢

LIKE字句適用於匹配字符串或字符串中的一部分,LIKE字句僅適用於字符串,因此只能將LIKE子句和字符數據類型的數據聯合使用

語法: WHERE 列名 LIKE ‘字符串,可以使用通配符’

②使用BETWEEN可以在某個範圍內進行查詢

使用BETWEEN可以查詢兩個已知值之間的一組爲知值,必須指定初值和終值,初值必須小於等於終值(如果初值不小於等於終值,則不會報語法錯誤,但是也不會查詢出任何數據),初值和終值之間必須使用AND連接,使用BETWEEN進行模糊查詢時,將查詢匹配包括初值、終值在內的初值和終值範圍內的數據,一般只適用於數字和日期時間類型的數據

語法:WHERE 列名 BETWEEN 初值 AND 終值

③使用IN在列舉值內進行查詢

當需要查詢的數據在某些列舉值之一時,可以通過使用帶有列舉值的IN關鍵字進行模糊查詢。查詢時,將列舉值放在IN關鍵字後面的一對圓括號內,列舉值之間用逗號隔開。可以將NOT關鍵字和IN關鍵字合起來使用,將查詢返回不匹配列舉值的行。列舉值的數據類型必須和與它匹配的列的數據類型一致。使用IN關鍵字在列舉值內進行查詢時,將查詢匹配和列舉值中的某一個值相同的數據。

語法:WHERE 列名 IN (列舉值1,列舉值2…..)

④使用NOT關鍵字可以進行取反操作

可以將NOT關鍵字和BETWEEN或IN聯合使用,進行取反操作,即判斷條件爲不在某個範圍內的數據或不在某些列舉值內的數據

語法:

WHERE 列名 NOT BETWEEN 初值 AND 終值

WHERE 列名 NOT IN(列舉值1,列舉值2….)

 

4.

聚合函數是SQL Server中的一個內部函數,聚合函數給予某個列進行計算,並將返回的多個結果結合成一個結果(將多個值合併爲一個值),它的作用是對一組數值進行計算,並返回計算後的值。聚合函數只返回一個值,因此不能將聚合函數和可能返回多個值的列放在一起查詢,但是在一個查詢中可以使用多個聚合函數。

常用的聚合函數有以下幾種:

SUM()求和

作用:返回表達式中所有數值之和,忽略任何空值,只適用於數字數據類型的列。

AVG()平均數

作用:返回表達式中所有數值的平均數,忽略任何空值,只適用於數字數據類型的列。

MAX()最大值和MIN()最小值

MAX()返回表達式中的最大值,MIN()返回表達式中的最小值,MAX()和MIN()同樣忽略任何空值,但是可以適用於數字類型、字符類型、日期時間類型的列。在字符序列中,MAX()返回排序序列的最大值,MIN()返回排序序列的最小值

COUNT()計數

返回提供的組或記錄集中的計數,COUNT()函數可以使用於除text/image/ntext類型以外的任意數據類型,在COUNT()函數中可以使用替代符*,當使用替代符*時(COUNT(*)),將返回表中所有行的計數,包括包含空值的行。當使用COUNT()函數對某個列中的數據進行計數時,將忽略空值。

 

5.靈活運用T-SQL中的基礎查詢語句和模糊查詢關鍵字、內部函數(包括聚合函數),可以通過使用WHERE字句限定條件和ORDER BY子句定義排序方式方便、快捷、高效地對數據進行檢索,當然使用過程中也有一些注意事項:

  • 查詢語句中的規範化問題

SELECT 後面指定的列必須是要查詢的數據表中實際存在的列,當查詢需要返回一個具體的計算後的值的時候,應該考慮使用聚合函數對某列進行計算,聚合函數只返回一個值,因此不能將聚合函數和可能返回多個值的列放在一起查詢,不然會報錯。

FROM後面接的是要查詢的表的名稱,是查詢語句的重要組成部分,不能省略。

WHERE用來限定條件,其後緊接條件表達式,但是不能使用聚合函數作爲WHERE後面的條件表達式,如果需要使用聚合函數作爲判斷條件,只能在分組後的數據篩選時使用HAVING子句判斷聚合函數的值

ORDER BY字句必須放在一個查詢語句的結尾,ORDER BY一般只能依據具體的某個實際存在的列進行排序,不能在ORDER BY子句中使用任何的比較運算符等返回布爾類型的表達式。

 

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