第2章 节 Transact-SQL语言.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 节 Transact-SQL语言.ppt

2.1.2 条件查询 3、空值查询 某个字段没有值称之为具有空值(NULL)。通常没有为一个列输入值时,该列的值就是空值。空值不同于零和空格,它不占任何存储空间。例如,某些学生选课后没有参加考试,有选课记录,但没有考试成绩,考试成绩为空值,这与参加考试,成绩为零分的不同。 例2-40 查询没有考试成绩的学生的学号和相应的课程号。 程序清单如下: SELECT SNO, CNO FROM SC WHERE SCORE IS NULL 注意:这里的空值条件为IS NULL,不能写成SCORE=NULL。 2.1.2 条件查询 4.查询的排序 当需要对查询结果排序时,应该在SELECT语句中使用ORDER BY子句。ORDER BY 子句包括了一个或多个用于指定排序顺序的列名,排序方式可以指定,DESC为降序,ASC为升序,缺省时为升序。ORDER BY子句必须出现在其他子句之后。 ORDER BY 子句支持使用多列。可以使用以逗号分隔的多个列作为排序依据:查询结果将先按指定的第一列进行排序,然后再按指定的下一列进行排序。 例2-41 查询选修C1 的学生学号和成绩,并按成绩降序排列。 程序清单如下: SELECT SNO, SCORE FROM SC WHERE CNO=C1 ORDER BY SCORE DESC 2.3.1.3 分组查询 (1) 聚合函数和GROUP BY子句 (2)GROUP BY 和 WHERE 子句、HAVING 子句 2.3.1.3 聚合函数和GROUP BY子句 GROUP BY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的聚合值。如果聚合函数没有使用 GROUP BY 子句,则只为 SELECT 语句报告一个聚合值。常用的聚合函数,如表2-3所示。 函数名称 MIN MAX SUM AVG COUNT COUNT(*) 功能 求一列中的最小值 求一列中的最大值 按列计算值的总和 按列计算平均值 按列值计个数 返回表中的所用行数 表2-3常用的聚合函数 2.3.1.3 聚合函数和GROUP BY子句 例2-42 通过查询求学号为S1学生的总分和平均分。 程序清单如下: SELECT SUM(SCORE) AS TotalScore, AVG(SCORE) AS AveScore FROM SC WHERE SNO = S1 注意:函数SUM和AVG只能对数值型字段进行计算。 例2-43 通过查询求选修C1号课程的最高分、最低分及之间相差的分数 程序清单如下: SELECT MAX(SCORE) AS MaxScore, MIN(SCORE) AS MinScore, MAX(SCORE)- MIN(SCORE) AS Diff FROM SC WHERE (CNO = C1) 2.3.1.3 聚合函数和GROUP BY子句 例2-44 通过查询求管理系学生的总数。 程序清单如下: SELECT COUNT(SNO) FROM S WHERE DEPT=管理 例2-45 通过查询求学校中共有多少个系。 程序清单如下: SELECT COUNT(DISTINCT DEPT) AS DeptNum FROM S 注意:加入关键字DISTINCT后表示消去重复行,可计算字段“DEPT“不同值的数目。COUNT函数对空值不计算,但对零进行计算。 例2-46 统计有成绩的学生的人数。 程序清单如下: SELECT COUNT (SCORE) FROM SC 注意:上例中成绩为零的同学计算在内,没有成绩(即为空值)的不计算。 2.3.1.3 聚合函数和GROUP BY子句 例2-47 利用特殊函数COUNT(*)求计算机系学生的总数 程序清单如下: SELECT COUNT(*) FROM S WHERE DEPT=‘计算机’ 注意:上例中,COUNT(*)用来统计元组的个数。此函数不消除重复行,也不允许使用DISTINCT关键字。 在分组查询中,只要表达式中不包括聚合函数,就可以按该表达式分组。如下例所示。 例2-48 查询每位学生的学号及其选课的门数。 程序清单如下: SELECT CNO,COUNT(*) AS C_NUM FROM SC GROUP BY CNO GROUP BY子句按CNO的值分组,所有具有相同CNO的元组为一组,对每一组使用函数COUNT进行计算,统计出各位学生选课的门数。 例2-49统计各年度出生的雇员人数 程序清单如下。 Use adventureworks SELE

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档