1. 程式人生 > >T-SQL 高級查詢

T-SQL 高級查詢

一段 周歲 pow upper 綜合 長度 per use 運維

T-SQL高級查詢
函數:是一個可反復使用的程序段
從其他的程序段中使用調用語句來執行這段程序
提前寫好一段語句,取一個名字,使用時調用這個名字
系統函數:轉換數據類型,以及查看系統參數
Convert():數據類型轉換為字符串
select converet(varchar(5),12345)
12345 數字 ‘12345‘字符串
CAST():轉換數據類型(簡單)
select cast(‘2019-01-18‘ as datetime) //將字符串轉換成時間類
2019-01-18 00:00:00
Current_user():查看當前登入數據庫用戶名
select current_user
SYSTEM_USER():查看系統的登入用戶
select system_user

select ‘運維工程師‘+ 姓名 + ‘的工資是:‘+cast(基本工資 as varchar(50))+‘元‘ from employee where 職務=‘運維工程師‘

字符串函數
CharIndex( )
用來尋找一個指定的字符串在另一個字符串中的起始位置
SELECT CHARINDEX(‘BDQN‘,‘www.bdqn.cn‘,1)
返回:5
Len( )
返回傳遞給它的字符串長度
SELECT LEN(‘SQL Server課程‘)
返回:12
Upper( )
把傳遞給它的字符串轉換為大寫
SELECT UPPER(‘SQL Server課程‘)
返回:SQL SERVER課程

Ltrim( )
清除字符左邊的空格
SELECT LTRIM (‘ BDQN ‘)
返回:BDQN (後面的空格保留)
Rtrim( )
清除字符右邊的空格
SELECT RTRIM(‘ BDQN ‘)
返回: BDQN前面的空格保留)
Right( )
從字符串右邊返回指定數目的字符
SELECT RIGHT(‘ABCDEFG‘,3)
返回:EFG
Replace( )
替換一個字符串中的字符
SELECT REPLACE(‘ABABAB‘,‘B‘,‘A‘)
返回:AAAAAA
Stuff( )
在一個字符串中,刪除指定位置指定長度的字符串,並在該位置插入一個新的字符串
SELECT STUFF(‘ABCDEFG‘,2,3,‘我的音樂我的世界‘)
返回:A我的音樂我的世界EFG
日期函數:
select dateadd(dd,3000,GETDATE()) 當前天數增加3000天 ‘dd天 mm月 yy年’
select datediff(dd,‘1998-11-2‘,getdate()) 求兩個日期某段的差
select datename(DW,‘2001-05-01‘) 求日期的星期數
select 姓名,datediff(yy,出生日期,getdate()) AS 年齡 from employee //查看員工年齡(周歲)

聚合函數:
SUM():求和
AVG():求平均值
MAX():求最大值
MIN():最小值
COUNT():非空值的行數
select SUM(基本工資) AS 總工資 from employee
select AVG(基本工資) AS 平均工資,MAX(基本工資) AS 最大,MIN(基本工資) AS 最小 from employee
--統計公司90後有多少人--
select count(出生日期) AS 多少人 from employee where ‘2000-01-01‘>出生日期 and 出生日期>=‘1990-01-01‘

分組查詢
select 職務,SUM(基本工資) AS 部門工資 from employee group by 職務
數學函數
Abs( )取數值表達式的絕對值
Ceiling( )取大於或等於指定數值、表達式的最小整數
Floor( )取小於或等於指定表達式的最大整數
Power( )取數值表達式的冪值
Round( )將數值表達式四舍五入為指定 精度
Sign( )對於正數返回+1,對於負數返回-1,對於0則返回0
Sqrt( )取浮點表達式的平方根

綜合演練:求公司員工距離30歲還有多少天
select 姓名+‘今年‘+cast(datediff(yy,出生日期,getdate()) as varchar(10))+‘歲‘+‘距離30歲還有 ‘+ cast(datediff(dd,getdate(),dateadd(yy,30,出生日期)) as varchar(10))+‘天‘ from employee

內鏈接:
select A.姓名,A.學校,B.姓名,B.職業 from A INNER JOIN B ON A.姓名=B.姓名

外連接:
左外連接 左表全部顯示,右表只顯示滿足條件的
select A.姓名,A.學校,B.姓名,B.職業 from A LEFT JOIN B ON A.姓名=B.姓名

右外連接 右表全部顯示,左表只顯示滿足條件的
select A.姓名,A.學校,B.姓名,B.職業 from A RIGHT JOIN B ON A.姓名=B.姓名

完全外連接
SELECT A.姓名,A.學校,B.姓名,B.職業 from A FULL JOIN B on A.姓名=B.姓名

T-SQL 高級查詢