模糊查詢和聚合函式
-- 萬用字元:
_一個字元
例:A like 'C_' 符合條件的A 如:CS、Cd
%任意長度的字串
例:B like 'CO%'符合條件的B如:CONST、COKE
[]括號中所指定範圍內的一個字元
例:C like '9W0[1-2]'符合條件的C如:9W01、9W02
[^]不在括號中所指定範圍內的任意一個字元
例:D like '9W0[^1-2]'符合條件的D如:9W03、9W07
** 使用 like 進行模糊查詢
查詢姓‘張’學生資訊:
語句:select * from Student where SName like '張%'
查詢住址包含‘湖南’字樣的學生:
語句:select * from Student where SAddress like '%湖南%'
** 使用 between 在某個範圍內進行查詢:
解釋:查詢兩個已知值之間的值或不是兩個值之間的值。已知值分為:初值、終值。初值<=終值。
初值和終值之間用 and 分開。
例:分數在60 到 80 之間的資訊:
select 列名,列名 from 表名 where 列名 between 60 and 80
例項:select StudentID,Score from Core where Score between 60 and 80
如果寫成下面的形式:《不會報錯,但也不會顯示任何資訊》
select StudentID,Score from Core where Score between 80 and 60 《數值應該是從小到大》
** 查詢日期範圍《這個使用的比較多》
例:查詢不在 2013-1-1 到 2013-10-1 之間訂購的圖書:
select * from 表名 where 列名 not between '2013-1-1' and '2013-10-1'
例項:select * from Sales where ord_date between '2013-1-1' and '2013-10-1'
注:使用 not 來對現在條件進行‘取反’操作
例項:select * from Sales where ord_date not between '2013-1-1' and '2013-10-1'
** 使用 in 在列舉值內進行查詢:
查詢的值是某些值裡面的某一個,這時就可以用列舉值 in 來進行查詢。《將列舉值放在圓括號裡,用逗號分開。》
例:查詢湖南、廣州、上海的學生姓名
select SName as 學生姓名,SAddress as 地址
from Student
where left(SAddress,2) in ('湖南','廣州','上海')
注:使用 not 可以得到所有不匹配的列舉值的行。《列舉值型別必須與匹配的列具有相同的資料型別》
*** T-SQL 中的聚合函式
** sum()函式:返回表示式中所有數值的和,空值將被忽略。《只用於數字型別的列。不能夠彙總字元、日期等其他資料型別。》
例:查詢學生編號為23的考試總分。
select sum(列名) as 學生編號為23的總分 from 表名 where StudentID=23
例項:select sum(Scores) as 學生編號為23的總分 from Score where StudentID=23
注意:這種查詢只返回一個數值,因此,不能直接與可能返回多行的列一起使用來進行查詢。
例:select sum(Scores) as 學生編號為23的總分 ,CourseID as 科目編號 from Score where StudentID=23
將會報錯!《但是在一個查詢中可以同時使用多個聚合函式》
** avg()函式:返回表示式中所有數值的平均值,空值將被忽略。《只用於數字型別的列》
例: 及格學生平均分成績
select avg(Scores) as 及格成績平均分 from Score wher Scores>=60
** max()函式 和 min()函式
max :返回表示式中的最大值《忽略任何空值》
min :返回表示式中的最小值《忽略任何空值》
可用於 數值型別、字元型別、日期型別、時間型別 的列。
對於字元的列:max()函式查詢排序序列的最大值、min()函式返回排序序列的最小值。
例:查詢平均成績、最高分、最低分。
select avg(Scores) as 平均分,max(Scores) as 最高分,min(Scores) as 最低分 from Score where Scores>=60
** count()函式:返回提供的組或記錄集中的計數。用於《除 text、image、ntext外的任何型別的列》
也可以用 * 來作為count()的表示式,使用*可以不必指定特定的列而計算所有行的數,當對所有行進行計數時,則包含空值的行。
例:查詢總記錄數的語句:
select count(*) as 總記錄數 from Score
例:查詢單列 Scores 記錄數的語句:
select count(Scores) as 總記錄數 from Score
例;驗證登入使用者密碼語法
select count(*) from 表名 where name="Jack" and pwd="123456"