新SQL Server 2008数据库开发经典案例教程 电子教案习题解答等 吕玉桂 电子教案 第7章高级查询.pptVIP

  • 4
  • 0
  • 约3.92千字
  • 约 24页
  • 2016-10-26 发布于广东
  • 举报

新SQL Server 2008数据库开发经典案例教程 电子教案习题解答等 吕玉桂 电子教案 第7章高级查询.ppt

第7章 高级查询 本章目标 掌握聚合函数 Max Min Sum Avg count 掌握分组查询Group by和Having的使用 连接 内联接 外部联接 自联接 聚合函数 在查询时,除了显示记录的详细信息外,经常需要对数据进行汇总和统计,T-SQL提供聚合函数来实现这个功能 聚合函数 AVG 可计算一组值的平均值,是用一组值的总和除以非空值的计数,只能用于数字列。 SUM 返回表达式中所有值的和,SUM只能用于数字列。 COUNT 计算所有行并返回表中所有行的总数,返回数字类型值。 COUNT(列名) 对组中每一行都计算并返回非空值的数量,返回数字类型值。 MAX 返回表达式的最大值,表达式通常是列名,返回与表达式相同的数据类型。 MIN 返回表达式的最小值,表达式通常是列名,返回与表达式相同的数据类型。 聚合函数 聚合函数对一组值执行计算,并返回单个值,除COUNT之外,聚合函数都会忽略空值 聚合函数 聚合函数 聚合函数 聚合函数 【例7-4】统计用户表UserInfo的用户数和用户的最大年龄和最小年龄。 分组统计 在SQLServer中,按一个或多个列或表达式的值将一组选定行组合成一个摘要行集,针对每一组返回一行 语法: 分组统计 分组统计 使用having 【例7-8】统计用户表UserInfo 2004年出生的人数 分析:在上例的基础上,使用Having对结果集进行筛选 分组查询小结 Where用来筛选From子句中指定的操作所产生的行 Group by用来分组Where子句的输出 Having子句用来从分组的结果中筛选行。 Having子句后可以跟统计函数,而Where子句后则不可以。 多表连接查询 提问:用户需要查看图书的有关信息以及出版社信息?所需要的数据分别在两个表中存储,如何同时访问这两个表的数据? 多表关联分类 内联接(INNER JOIN) 外联接 ——左外联接(LEFT JOIN) ——右外联接(RIGHT JOIN) 自联接(Self JOIN) 内联接 一.传统语法 二.SQL联接 内连接-多表连接 内连接-多表连接 外部联接 左外部联接 左向外部联接以左边的表为主,它的结果集包括 LEFT子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,来自右表的所有选择列表列均为空值 右外连接 右外部联接以右边的表为主,它的结果集包括 RIGHT 子句中指定的右表的所有行,而不 仅仅是联接列所匹配的行。如果右表的某一行在左表中没有匹配行,则在关联的结果集行中,来自左表的所有选择列表列均为空值 多表连接 外连接只能用于两个表,内连接可实现三个以上表的连接 【例7-12】查询住在”广州”的用户销售的图书的书号、书名、销售日期和销售数量以及用户的名字和地址 自联接 自连接把表通过自联接与自身联接。 表自联接其实是把一个表逻辑上看成两个表,然后根据两个逻辑表之间的关系来检索数据,为避免使用相同表名而导致错误,必须为表命名别名,以示区别 总结 对数据进行统计使用SQL内置的聚合函数 Max Min Sum Avg Count 对数据进行分组用GROUP BY,分组条件筛选用Having 查询的数据来自于多个表用关联查询 关联查询—连接 内联接 内联接筛选多表中完全匹配的行 外部联接 左外联接以左表为主筛选数据 右外联接以右表为主筛选数据 自联接 自联接将表自身通过别名关联 * * * * 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 【例7-1】求所有图书的平均价格 SELECT AVG(Price) as 平均价格 FROM BookInfo 【例7-2】在BookInfo表中,统计2006年出版的图书数量、图书的总价值及按供 应商提供的8折批发优惠价购买的图书总金额 SELECT COUNT(bookid) 图书数量, SUM(price) 图书总价值, SUM(Price*0.8) 购书总金额 FROM BookInfo WHERE YEAR(PublishDate)=2006 SELECT COUNT(DISTINCT(BookID)) FROM SalesDetails 【例7-3】统计销售细表SalesDetails中销售人员销售了多少不同书号的图书。 GROUP BY 分组表达式 【例7-5】在BookInfo中,查询每类图书的总价 SELECT CategoryID 类别,SUM(price) 总价 FROM BookInfo GROUP BY Category

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档