文档介绍:
第二章 T-SQL高级查询
——理论部分
课程回顾
SQL Server2005身份验证模式分为几种?
在服务器角色中sysadmin的作用是什么?
请说出固定服务器角色和自定义数据库角色的区别?并指出db_owner的作用.
什么是数据库审核功能?主要分为哪几类?
如果希望禁用xp_cmdshell,该如何做?
简述SQL Server 2005利用证书加密和解密数据的过程.
技能展示
会使用函数处理查询结果
会使用聚合函数查询统计数值
会使用Group By进行分组查询
掌握多表联接查询
本章结构
T-SQL高级查询
SQL Server中的聚合函数
分组查询
SQL Server常用函数
多表联接查询
字符串函数
Group by分组查询
多表查询分类
日期函数
数学函数
系统函数
Having子句分组筛选
内联接查询
外联接查询
SQL Server2005常用函数
函数的作用
常用函数的分类
字符串函数
日期函数
数学函数
系统函数
字符串函数
字符串函数用于控制返回给用户的字符串,这些功能仅用于字符型数据。
函数名
描述
举例
CharIndex
用来寻找一个指定的字符串在另一个字符串中的起始位置
SELECT CHARINDEX(‘',‘My Course',1 )
返回:4
Len
返回传递给它的字符串长
度
SELECT LEN('SQL Server课程')
返回:12
Ltrim
清除字符左边的空格
SELECT LTRIM (' 周智宇')
返回:周智宇(后面的空格保留)
Rtrim
清除字符右边的空格
SELECT RTRIM (' 周智宇')
返回: 周智宇(前面的空格保留)
Right
从字符串右边返回指定数目的字符
SELECT RIGHT('',3)
返回:吐尔松
Replace
替换一个字符串中的字符
SELECT REPLACE('','可','兰')
返回:
部分常用的字符串函数
字符串函数
案例需求:查询用户**********在未缴费的市话账单信息。
Select '用户'+phonenumber+'市话费用'+cast(charge as varchar(10))+'元' AS 市话费用
From accountbill
Where phonenumber='**********' AND
IsPaid = 0 AND calltype=0
实施说明:
字符串拼接时,需要在两个字符串之间使用“+”
ountbill,查询未缴费ispaid=0的账单信息
使用字符串拼接,将电话号码字段+’市话费用’+费用字段转换字符串
实现语句:
日期函数
函数名
描述
举例
GetDate
取得当前的系统日期
SELECT GETDATE()
返回:今天的日期
DateAdd
将指定的数值添加到指定的日期部分后的日期
SELECT DATEADD(mm,4,'01/01/1999')
返回:以当前的日期格式返回05/01/1999
DateDiff
两个日期之间的指定日期部分的区别
SELECT DATEDIFF(mm,'01/01/1999', '05/01/1999')
返回:4
DateName
日期中指定日期部分的字符串形式
SELECT DATENAME(dw, '01/01/2000')
返回:Saturday
DatePart
日期中指定日期部分的整数形式
SELECT DATEPART(day, '01/15/2000')
返回:15
不能直接对日期运用数学函数,需要使用日
期函数用于操作日期值
部分常用日期函数
日期函数
案例需求:显示用户**********的2008年6月份的通话记录的通话时长
实施说明:
使用Datediff函数求开始时间与结束时间之间差值,精确到分钟。
实现语句
Select '用户'+phonenumber+'通话时长'+cast(datediff(mi,starttime,endtime) as varchar(10))+'分钟' as 通话时长
From "history-call"
Where phonenumber='**********'
计算开始与结束时间的差(精确到分钟)
数学函数
函数名
描述
举例
Abs
取数值表达式的绝对值
SELECT ABS(-43)
返回:43
Ceiling
取大于或等于指定数值、表达式的最小整数
SELECT CEILING()
返回:44
Floor
取