SQL Serve---查询

概要

1order by子句

       默认asc(升序)、desc(降序)

2distinct关键字

3group by子句

4、聚合函数

      —max()min()sum()avg()count()

5having子句

6compute子句

英文关键字

order by                排序

 asc                         升序

desc                       降序

 distinct                  去除重复值

 group by                分组

 max()                      最大值

min()                       最小值

sum()                      求和

avg()                       平均值

count()                   记录数量

with rollup             汇总

having                    分组条件

 compute                 统计

order by

--order by子句是select语句中的一个可选部分,功能为排序,它允许你指定返回行的显示顺序,可以指定多个列,也可以指定按照升序或降序返回行。
--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的一些规定:

nGROUP BY子句可以包含任意数据的列;
n GROUP B Y子句中列出的每个列都必须是检索列或有效的表达是(但不能是聚集函数)
n 除聚集函数外SELECT语句每个列都必须在GROUP BY子句中
n 分组 中具有NULL值,则NULL作为一个分组返回
n 如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组中进行汇总
n 注: Group by子句经常与聚合函数搭配作用

distinct关键字

distinct关键字,紧跟在select语句之后的distinct指导SQL Server消除结果集中的重复行,指导SQL Server仅返回唯一的行

聚合函数

group by子句通常与“聚合函数”一起使用。聚合函数针对一组值进行计算,并返回一个值。group by查询中使用的最常见的聚合函数有

v min() : 返回集合中的最小值。
v max() : 返回集合中的最大值。
v sum() : 返回集合的总和。
v avg() : 返回集合的平均值。
v count() : 返回满足 select 语句中指定条件的记录值。
v count(*) : 返回找到的行数(包括空值)。

例: 查看软件学院的 学生人数

    Select  count(*)  from tb_student

      where  dept=‘软件学院’

group by子句中使用having

       having子句限制由group by子句返回的行,其方式与where子句限制select子句返回的行相同。where和having子句可以同时包括在一个select语句中,也就是说,在进行分组操作之前应用where子句,在分组操作之后应用having子句。

having    列名  操作符  值

¯ 首先将 WHERE 子句应用于表中的个别行或关系图网格中的表结构化对象。只对符合 WHERE 子句条件的行进行分组
¯

然后将 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

  • 49
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值