数据库第3章第三次课幻灯片.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SELECT cno as 课程号, cname as 课程名 FROM course where cname not like %数% * 3.3.2.6????空值查询 某个字段没有值称之为具有空值(NULL)。 通常没有为一个列输入值时,该列的值就是空值。 空值不同于零和空格,它不占任何存储空间。 例如,某些学生选课后没有参加考试,有选课记录,但没有考试成绩,考试成绩为空值,这与参加考试,成绩为零分的不同。 * 例3.34 查询没有考试成绩的学生的学号和相应的课程号。 SELECT SNO, CNO FROM SC WHERE SCORE IS NULL 注意:这里的空值条件为IS NULL,不能写成SCORE=NULL。 * 3.3.3???常用库函数及统计汇总查询 SQL提供了许多库函数,增强了基本检索能力。 常用的库函数 函数名 功能 AVG 按列计算平均值 SUM 按列计算值的总和 MAX 求一列中的最大值 MIN 求一列中的最小值 COUNT 按列值计个数 * 例3.35 求学号为2003103学生的总分和平均分。 SELECT SUM(SCORE) AS Totalscore, AVG(SCORE) AS Avescore From Sc Where (Sno = 2003103) 注意:函数sum和avg只能对数值型字段进行计算。 * 例3.37 求计算机系学生的总数 SELECT COUNT(SNO) FROM S WHERE DEPT=计算机 * 练习4: 求选修C1号课程学生的最高分、最低分以及之间相差的分数,结果如下: SELECT MAX(SCORE) AS MaxScore, MIN(SCORE) AS MinScore, MAX(SCORE) - MIN(SCORE) AS Diff FROM SC WHERE (CNO = C1) * 例3.38 求学校中共有多少个系 SELECT COUNT(DISTINCT DEPT) AS DeptNum FROM S 注意:加入关键字DISTINCT后表示消去重复行,可计算字段“DEPT“不同值的数目。 COUNT函数对空值不计算,但对零进行计算。 * 例3.39 统计有成绩同学的人数 SELECT COUNT (SCORE) FROM SC 上例中成绩为零的同学计算在内,没有成绩(即为空值)的不计算。 * 例3.40 利用特殊函数COUNT(*)求计算机系学生的总数 SELECT COUNT(*) FROM S WHERE DEPT=‘计算机’ COUNT(*)用来统计元组的个数 不消除重复行,不允许使用DISTINCT关键字。 * 3.3.4? 分组查询 GROUP BY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组, 每个分组在属性列或属性列组合上具有相同的值。 例3.42 查询各个同学的学号及其所选课程数。 * SELECT SNO, COUNT(*) AS C_NUM FROM SC GROUP BY SNO GROUP BY子句按SNO的值分组,所有具有相同SNO的元组为一组,对每一组使用函数COUNT进行计算,统计出各个学生选修的课程数。 * 若在分组后还要按照一定的条件进行筛选,则需使用HAVING子句。 练习5: 查询选修三门(或以上)课程的学生学号和选课门数,其结果如下: * SELECT SNO AS 学号, COUNT(*) AS 课程数 FROM SC GROUP BY SNO HAVING COUNT(*)=3 GROUP BY子句按SNO的值分组,所有具有相同SNO的元组为一组,对每一组使用函数COUNT进行计算,统计出每位学生选课的门数。 HAVING子句去掉不满足COUNT(*)=3的组。 * 当在一个SQL查询中同时使用WHERE子句,GROUP BY 子句和HAVING子句时,其顺序是WHERE-GROUP BY- HAVING。 WHERE与HAVING子句的根本区别在于作用对象不同。 WHERE子句作用于基本表或视图,从中选择满足条件的元组; HAVING子句作用于组,选择满足条件的组,必须用于GROUP BY子句之后,但GROUP BY子句可没有HAVING子句。 * 3.3.5 查询的排序 当需要对查询结果排序时,应该使用ORDER BY子句 ORDER B

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档