溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談 T-SQL高級查詢

發布時間:2020-07-21 15:30:04 來源:網絡 閱讀:674 作者:張九冫 欄目:關系型數據庫

之前我們簡單的了解了增、刪、改、查這幾類T-SQL語法來操縱數據表,但是為了更方便快捷地完成大量任務,SQL Server 提供了一些內部函數,可以和SQL Server 的SELECT語句來聯合使用,進行類型轉換、日期處理、數學計算、實現系統功能。
淺談 T-SQL高級查詢
淺談 T-SQL高級查詢
字符串在信息處理時有特殊的地位,幾乎所有信息都需要轉化成字符串才能正確顯示,尤其是不同數據拼接起來顯示的使用更加廣泛。
字符串之間使用“+”拼接

select '運維工程師' + '姓名'+'的基本工資是:'+ cast(基本工資 as varchar(10))+'元' 
from *表名*   #“基本工資 as varchar(10)”是將基本工資列的類型轉換為字符串
where 職務='運維工程師'

淺談 T-SQL高級查詢
淺談 T-SQL高級查詢
例:
顯示距離當前10天后的日期和時間:
select dateadd (DD,10,getdate())#“getdate()”取得當前系統日期,DD:單位為日
淺談 T-SQL高級查詢
顯示所有人的姓名和年齡:
select 姓名,datediff (yy,出生日期,getdate()) as 年齡 from ***表名***
淺談 T-SQL高級查詢
顯示表中所有90后的員工姓名和出生月份:

select 姓名,datename (year,出生日期) as 出生月份 # as 后可以配置別名(新生成的列名)
from *表名* 
where 出生日期 between '1990-01-01' and '1999-12-31' # and:和、到

淺談 T-SQL高級查詢
聚合函數:
用于對一組值執行計算,并返回單個值
如:求總和、平均值、最大或最小值等
SUN:求總和、AVG:求平均數、MAX和MIN:返回最大最小值
COUNT:返回非空值的計數

查詢表中所有員工基本工資的綜合:

select sum(基本工資) as 總工資 
from *表名* 

查詢表中所有員工的平均工資:

select avg(基本工資) as 平均工資 
from *表名*

查詢表中最高和最低的基本工資:

select max(基本工資) as 最高工資,min(基本工資) as 最低工資 
from *表名*

查詢表中90后員工的人數:

select count(基本工資) as '90后人數'
from *表名*
where 出生日期>='1990-01-01'

分組查詢:
將表中的數據通過 group by 子句分類組合,再根據需要得到的統計信息,只顯示限定條件的組,需要使用 HAVING 子句
查詢表中每個職務的平均工資:

select 職務,avg(基本工資) as 職務基本工資 
from *表名*
group by 職務

查詢表中平均工資小于10000的職務:

select 職務,avg(基本工資) as 職務平均工資 
from *表名* 
group by 職務
having avg(基本工資)<10000

淺談 T-SQL高級查詢
函數的綜合應用:
查詢未滿30歲的員工的生日和年齡,并且計算出距離30歲的天數,最后用字符串拼接顯示結果:
查詢正確的結果

select 姓名,出生日期,DATEDIFF(YY,出生日期,GETDATE()) 年齡,
  DATEDIFF(DD,GETDATE(),DATEADD(YY,30,出生日期)) 距離三十歲的天數
  from test
  where DATEDIFF(YY,出生日期,GETDATE())<=30
  order by 出生日期

將結果用字符串拼接:

select '員工'+姓名+'的生日是:'+CONVERT(varchar(10),出生日期,111)+
  ',現在年齡是'+CAST(DATEDIFF(YY,出生日期,GETDATE()) AS varchar(10))
  +'歲'+',距離三十歲還有'+
  CAST( DATEDIFF(DD,GETDATE(),DATEADD(YY,30,出生日期)) AS varchar(10))+'天'
  from employee
  where DATEDIFF(YY,出生日期,GETDATE())<=30
  order by 出生日期

淺談 T-SQL高級查詢
使用 T-SQL 實現多表查詢:
淺談 T-SQL高級查詢
使用內聯接在表A和表B中使用內聯接查詢學生姓名、學校和職業。(兩種查詢方式)

select a.name 姓名,a.school 學校,b.name,b.job 
from A,B
where a.name=b.name

或:

select a.name 姓名,a.school 學校,b.name,b.job 
from A inner join B on a.name=B.name 

淺談 T-SQL高級查詢
使用左外聯接查詢在表A和表B中使用內聯接查詢學生姓名、學校和職業

select a.name 姓名,a.school 學校,b.name,b.job 
from A left join B on a.name=B.name 

淺談 T-SQL高級查詢
使用右外聯接查詢在表A和表B中使用內聯接查詢學生姓名、學校和職業。

select a.name 姓名,a.school 學校,b.name,b.job 
from A right join B on a.name=B.name 

使用完整外聯接查詢在表A和表B中使用內聯接查詢學生姓名、學校和職業。

select a.name 姓名,a.school 學校,b.name,b.job 
from A full join B on a.name=B.name 

以上四個案例,看似復雜,實則只是 inner、left、reght、full 這四個切換了一下而已
以下是一個實際實例:
源數據表如圖所示:
淺談 T-SQL高級查詢
查詢出廠日期晚于2011年4月的水果信息:

select * from products
where 種類='水果'
and 出廠日期>'2011-04-01'

淺談 T-SQL高級查詢
分組查詢所有水果、蔬菜、堅果的總成本:

select 種類,SUM(成本) from products
group by 種類

淺談 T-SQL高級查詢
查詢所有水果的名稱和出廠日期,以特定格式拼接字符串,如:“西瓜的出廠日期是:2017/05/06”

select 種類+'的出廠日期是:'
+CONVERT(varchar(10),出廠日期,111)
from products

淺談 T-SQL高級查詢
查詢所有蔬菜的平均成本:

select 種類,AVG(成本)
from products
group by 種類
having 種類='蔬菜'

淺談 T-SQL高級查詢
多表查詢的實例:
源數據表如圖所示:
淺談 T-SQL高級查詢
淺談 T-SQL高級查詢
查詢產品的名稱、種類、成本、銷售地點和銷售價格:

select products.名稱,products.種類,
products.成本,sales.銷售地點,sales.銷售價格
from products inner join sales 
on products.名稱=sales.名稱

淺談 T-SQL高級查詢
查詢銷往海南的產品名稱、種類、成本和銷售價格:

select products.名稱,products.種類,
products.成本,sales.銷售價格
from products inner join sales 
on products.名稱=sales.名稱
and sales.銷售地點='海南'

淺談 T-SQL高級查詢
查詢銷往北京的蔬菜名稱、種類、成本和銷售價格:

select products.名稱,products.種類,
products.成本,sales.銷售價格
from products inner join sales 
on products.名稱=sales.名稱
and sales.銷售地點='北京'
where 種類='蔬菜'

淺談 T-SQL高級查詢

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女