第9章 SQL数据查询.ppt
文本预览下载声明
9.7.3 DELETE语句中使用SELECT子句 在DELETE语句中可使用SELECT子句可将子查询的结果作为删除数据的条件,语法格式为: DELETE FROM 表名 [WHERE 条件] 其中条件中包含SELECT子句。 9.7 数据操作中使用SELECT子句 9.7.3 DELETE语句中使用SELECT子句 例:删除没被选修的课程。 DELETE FROM course WHERE cno not in (SELECT cno FROM score) 例:删除“95033”班全体学生的选课记录。 DELETE FROM score WHERE sno in (SELECT sno FROM student WHERE sclass=‘95033) 9.7 数据操作中使用SELECT子句 带ROLLUP参数会依据GROUP BY后面所列第一个字段做汇总运算。 【例】 给出以下程序的执行结果。 Select sclass 班号, cname 课程, avg(degree) as 平均分 from student, course, score where student.sno=score.sno and o=o group by student.sclass,ame with rollup 执行结果: 9.3.3 数据汇总 COMPUTE BY子句可以用同一SELECT语句既查看明细行,又查看汇总行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。COMPUTE 子句需要以下信息: 可选的BY关键字。该关键字可按对一列计算指定的行聚合。 行聚合函数名称。例如,SUM、AVG、MIN、MAX或COUNT。 要对其执行行聚合函数的列。 9.3 分组和汇总 9.3.3 数据汇总 1.COMPUTE生成的结果集 当COMPUTE不带可选的BY子句时,SELECT语句有两个结果集: 第一个结果集是包含选择列表信息的所有明细行。 第二个结果集有一行,其中包含COMPUTE子句中所指定的聚合函数的合计。 当COMPUTE带有可选的BY子句时,符合SELECT条件的每个组都有两个结果集: 每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。 每个组的第二个结果集有一行,其中包含该组的COMPUTE子句中所指定的聚合函数的小计。 9.3 分组和汇总 【例】 给出以下程序的执行结果。 SELECT sno 学号,cno 课程号,degree 分数 FROM score WHERE sno IN (103,105) ORDER BY sno COMPUTE SUM(degree) 解:该程序中SELECT语句使用简单COMPUTE子句生成score表中分数列的求和总计。执行结果如下图所示。 【例】 给出以下程序的执行结果。 SELECT sno,cno,degree FROM score WHERE sno IN (103,105) ORDER BY sno COMPUTE SUM(degree) BY sno 解: 该程序中的查询在COMPUTE子句中加入可选的BY关键字,以生成每个组的小计。执行结果如下图所示。 2.比较COMPUTE和GROUP BY的功能 COMPUTE和GROUP BY之间的区别汇总如下: GROUP BY生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。选择列表只能包含分组依据列和聚合函数。 COMPUTE生成多个结果集。一类结果集包含每个组的明细行,其中包含选择列表中的表达式。另一类结果集包含组的子聚合,或SELECT语句的总聚合。选择列表可包含除分组依据列或聚合函数之外的其他表达式。聚合函数在COMPUTE子句中指定,而不是在选择列表中。 9.3.3 数据汇总 9.3 分组和汇总 9.4 连接查询 进行多表查询时必须将多个表连接起来。通过连接,可以根据各个表之间的逻辑关系从两个或多个表中检索数据。 可在FROM或WHERE子句中指定连接。使用WHERE子句的连接为内连接,使用FROM子句的连接可以是内连接也可以是外连接。 在FROM子句中指定连接条件,有助于将连接条件与WHERE子句中指定的其他搜索条件分开,指定连接时建议使用这种方法。FORM子句连接语法如下: FROM 表名1 连接类型 表名2 [ON (连接条件)] 其中,连接类型有内连接、外连接或交叉连接,外连接又包括左连接、右连接和完全连接。 9.4 连接查
显示全部