概要
1、order by子句
—默认asc(升序)、desc(降序)
2、distinct关键字
3、group by子句
4、聚合函数
—max()、min()、sum()、avg()、count()
5、having子句
6、compute子句
英文关键字
order by 排序
asc 升序
desc 降序
distinct 去除重复值
group by 分组
max() 最大值
min() 最小值
sum() 求和
avg() 平均值
count() 记录数量
with rollup 汇总
having 分组条件
compute 统计
order by
order by [字段1[asc/desc]],[字段2[asc/desc]],…
注意: asc 升序(默认值) desc 降序
例
--按出生日期先后显示tb_student表。
select * from tb_student order by birthday
--按年龄由大到小显示tb_student表中学号,姓名和年龄。
select sno as 学号, sn as 姓名,
year(getdate()) - year(birthday) as 年龄
from tb_student
order by 年龄 desc
可用列别名排序,但是不能用列别名筛选
NULL(空值)默认为最小值
group by
group by子句指导SQL Server将一些行(这些行在子句中指定的一列或多列中具有相同的值)组合到一行中,也就是分组。
注意:查询输入中包括的列, “必须” 在group by子句中出现。
使用GROUP BY的一些规定:
distinct关键字
distinct关键字,紧跟在select语句之后的distinct指导SQL Server消除结果集中的重复行,指导SQL Server仅返回唯一的行
聚合函数
group by子句通常与“聚合函数”一起使用。聚合函数针对一组值进行计算,并返回一个值。group by查询中使用的最常见的聚合函数有:
Select count(*) from tb_student
where dept=‘软件学院’
group by子句中使用having
having子句限制由group by子句返回的行,其方式与where子句限制select子句返回的行相同。where和having子句可以同时包括在一个select语句中,也就是说,在进行分组操作之前应用where子句,在分组操作之后应用having子句。
having 列名 操作符 值
然后将 HAVING 子句应用于由分组生成的结果集中的行。只有符合 HAVING 子句条件的组才出现在查询输出中。只能将 HAVING 子句应用于也出现在 GROUP BY 子句或聚合函数中的
compute子句
compute子句:统计结果,出现在查询结果最后
这个地方一定要改,要不查不到表
实验
--查询tb_BookInfo(书籍信息表)中的所有的书籍的书籍编号、书籍名称、是否借出字段的信息
--查询tb_ReaderInto(读者信息表)中所有读者的信息
--使用别名定义的三种方法查询每个读者的编号、姓名和联系电话
--(4)查询 tb_BookInfo(书籍信息表)中前5条记录的书籍编号、书籍名称。
--(5)查询tb_BookInfo(书籍信息表)表中已借出的书籍信息。
--(6)查询tb_BookInfo(书籍信息表)中 2017年4月份登记的图书名称和登记日期,
--(7)查询tb_BookInfo(书籍信息表)中人民邮电出版社书籍的信息。
--(8)查询tb_BookInfo(书籍信息表)中2017年4月1日前登记的书籍信息。
--(9)查询名为《数据库原理与应用》的书籍的基本信息。
--(10)查询tb_BookType(书籍类别表)中书籍类别为文学类的书籍信息
--(11)查询在2017-3-1到2017年4-1之间借出的书籍编号、读者编号。
--(12)查询人民邮电大学出版社、上海交通大学出版社的书籍信息。
--(13)查询不是清华大学出版社、大连理工大学出版社出版的书籍信息。
--(14)查询出版社是清华大学出版社并已借出的图书信息。
--(15)查询tb_ReaderInfo(读者信息表)表中姓“田”的读者。
--(16)在tbReaderInfo(读者信息表)中找到所有姓名中姓李并且带飞字的读者
--(17)查询tb_BookInfo(书籍信息表),按书籍名称升序显示书籍编号,书籍名称,是否借出字段。
--(18)查询书籍信息表,按书籍名称降序排序,书名相同按登记日期先后顺序排列
--(19)返回tb_BookInfo(书籍信息表)中的出版社信息(distinct)
--(20)按读者姓名降序显示tb_ReaderInfo(读者信息表)中的信息
--(21)查询tbBookInfo(书籍信息表),按书籍类别(LBBH)统计各类书籍的数量
--(22)统计 tb BookInfo(书籍信息表)中的书籍数量。
--(23)按书籍名称统计各种书籍的数量,并按书籍名称升序排序。
--(24)按出版社统计各个出版社的书籍数量,并显示数量超过100本的出版社名称
--(25)统计人民邮电出版社书籍的数量
--(26)统计2017年4月份借出书籍的数量,并按数量降序排列
--查询tb_BookInfo(书籍信息表)中的所有的书籍
--的书籍编号、书籍名称、是否借出字段的信息
SELECT SJBH,SJMC,SFJC
FROM tb_BookInfo
--查询tb_ReaderInto(读者信息表)中所有读者的信息
SELECT *
FROM tb_ReaderInfo
--使用别名定义的三种方法查询每个读者的编号、姓名和联系电话
SELECT DZBH '编号', DZMC'姓名', LXDH'联系电话'
FROM tb_ReaderInfo;
SELECT DZBH AS'编号', DZMC AS'姓名', LXDH AS'联系电话'
FROM tb_ReaderInfo;
SELECT '编号'=DZBH, '姓名'=DZMC , '联系电话'=LXDH
FROM tb_ReaderInfo;
--(4)查询 tb_BookInfo(书籍信息表)中前5条记录的书籍编号、书籍名称。
SELECT TOP 5 SJBH,SJMC
FROM tb_BookInfo
--(5)查询tb_BookInfo(书籍信息表)表中已借出的书籍信息。
SELECT SFJC=1
FROM tb_BookInfo
--(6)查询tb_BookInfo(书籍信息表)中 2017年4月份登记的图书名称和登记日期,
SELECT SJMC,DJRQ
FROM tb_BookInfo
--(7)查询tb_BookInfo(书籍信息表)中人民邮电出版社书籍的信息。
SELECT *
FROM tb_BookInfo
WHERE CBS='人民邮电出版社'
--(8)查询tb_BookInfo(书籍信息表)中2017年4月1日前登记的书籍信息。
SELECT *
FROM tb_BookInfo
WHERE DJRQ<'2017-4-1'
--(9)查询名为《数据库原理与应用》的书籍的基本信息。
SELECT *
FROM tb_BookInfo
WHERE SJMC='数据库原理与应用'
--(10)查询tb_BookType(书籍类别表)中书籍类别为文学类的书籍信息
SELECT *
FROM tb_BookType
WHERE LBMC='文学'
--(11)查询在2017-3-1到2017年4-1之间借出的书籍编号、读者编号。
SELECT SJBH,DZBH
FROM tb_BookInfo,tb_ReaderInfo
WHERE DJRQ BETWEEN '2017-3-1' AND' 2017-4-1'
--(12)查询人民邮电大学出版社、上海交通大学出版社的书籍信息。
SELECT *
FROM tb_BookInfo
WHERE CBS='人民邮电大学出版社'OR CBS='上海交通大学出版社'
--(13)查询不是清华大学出版社、大连理工大学出版社出版的书籍信息。
SELECT *
FROM tb_BookInfo
WHERE NOT CBS='清华大学出版社'OR CBS='大连理工大学出版社'
--(14)查询出版社是清华大学出版社并已借出的图书信息。
SELECT *
FROM tb_BookInfo
WHERE CBS='清华大学出版社' AND SFJC=1
--(15)查询tb_ReaderInfo(读者信息表)表中姓“田”的读者。
SELECT DZMC
FROM tb_ReaderInfo
WHERE DZMC LIKE '田%'
--(16)在tbReaderInfo(读者信息表)中找到所有姓名中姓李并且带飞字的读者
SELECT DZMC
FROM tb_ReaderInfo
WHERE DZMC LIKE '李%飞%'
--(17)查询tb_BookInfo(书籍信息表),按书籍名称升序显示书籍编号,书籍名称,是否借出字段。
SELECT SJBH,SJMC,SFJC
FROM tb_BookInfo
ORDER BY SJMC ASC;
--(18)查询书籍信息表,按书籍名称降序排序,书名相同按登记日期先后顺序排列
SELECT *
FROM tb_BookInfo
ORDER BY SJMC DESC,DJRQ ASC
--(19)返回tb_BookInfo(书籍信息表)中的出版社信息(distinct)
SELECT DISTINCT CBS
FROM tb_BookInfo;
--(20)按读者姓名降序显示tb_ReaderInfo(读者信息表)中的信息
SELECT *
FROM tb_ReaderInfo
ORDER BY DZMC DESC
--(21)查询tbBookInfo(书籍信息表),按书籍类别(LBBH)统计各类书籍的数量
SELECT LBBH '书籍类别',count(SFJC) '书籍的数量'
FROM tb_BookInfo
GROUP BY LBBH
ORDER BY LBBH
--(22)统计 tb BookInfo(书籍信息表)中的书籍数量。
SELECT count(SJBH) AS '书籍总数'
FROM tb_BookInfo
--(23)按书籍名称统计各种书籍的数量,并按书籍名称升序排序。
SELECT SJMC,count(SJMC) AS '数量'
FROM tb_BookInfo
GROUP BY SJMC
ORDER BY SJMC asc
--(24)按出版社统计各个出版社的书籍数量,并显示数量超过100本的出版社名称
SELECT CBS,COUNT(SJBH) '数量'
FROM tb_BookInfo
GROUP BY CBS HAVING COUNT(CBS) > 100
--(25)统计人民邮电出版社书籍的数量
SELECT CBS, COUNT (SJBH) '数量'
FROM tb_BookInfo
WHERE CBS='人民邮电出版社'
--分组,把数量放到一个组里面
GROUP BY CBS
--(26)统计2017年4月份借出书籍的数量,并按数量降序排列
SELECT JSRQ '借书日期',SJBH'借书编号',COUNT(*)AS '数量'
FROM tb_LentInfo
WHERE JSRQ BETWEEN '2017-04-01'AND '2017-04-30'
GROUP BY SJBH,JSRQ
ORDER BY '数量' DESC