SQL高级查询: 函数查询, 分组查询, 多表查询, 子查询
一、函数查询
1.1 聚合函数
对一组值进行计算,得到一个返回值
SUM(),求和
AVG(),求平均
MIN(),MAX(),求最小值、最大值
COUNT(),计数
--求所有学生的平均年龄
SELECT AVG(sage) FROM student
--为查询结果起别名
SELECT AVG(sage) AS 平均年龄 FROM student
--求所有学生年龄的最大值、最小值和平均值以及学生人数
SELECT MAX(sage) AS 最大年龄, MIN(sage) AS 最小年龄, AVG(sage) AS 平均年龄, COUNT(sage) AS 总人数
FROM student
--求航天班所有学生年龄的最大值、最小值和平均值以及学生人数
SELECT MAX(sage) AS 最大年龄, MIN(sage) AS 最小年龄, AVG(sage) AS 平均年龄, COUNT(*) AS 总人数
FROM student
WHERE sclass='航天'
1.2 类型转换函数
CONVERT(datatype,expression,[date_style])
datatype:目标类型
expression:被转换对象
[date_style]:datatype是日期型(date)时需要设定
--将整数120转换为字符串
SELECT CONVERT(varchar,120)
--将字符串转换为实数
SELECT CONVERT(decimal(7,5),'3.1415')
--字符串转日期
SELECT CONVERT(date,'2018-01-10')
--日期转换为字符串
SELECT CONVERT(char,GETDATE())
--日期转yy.mm.dd型字符串
SELECT CONVERT(char,GETDATE(),102)
--日期转yy/mm/dd型字符串
SELECT CONVERT(char,GETDATE(),111)
日期转yy.mm.dd型字符串,date_style:102
日期转yy/mm/dd型字符串,date_style:111
1.3 日期型函数
GETDATE():获取当前日期和时间
--获取当前日期
SELECT GETDATE()
DATEADD(part,number,date): 给日期增加年、月、日或时间
part:要增加日期的哪一部分(year,month,day,hour,minute,second)
number:增加的数量;date:初始日期和时间
--日期在年份上加5年
SELECT DATEADD(year,5,'2012-5-31 10:10:10')
--日期在月份上加5月
SELECT DATEADD(month,5,'2012-5-31 10:10:10')
--日期在时间上加5小时
SELECT DATEADD(hour,5,'2012-5-31 10:10:10')
--为学生的出生日期增加2年(不会改变原始表中的数据)
SELECT DATEADD(year,2,sbirthday)
FROM student
DATEDIFF(part,date1,date2):date2和date1在part上相减
part: year,month,day,hour,minute,second
--计算学生年龄