10使用多表连接查询数据.ppt
文本预览下载声明
网络数据库应用SQL Sever 2008 姓名:李锋 授课说明 授课班级 P15软件技术2班 P15软件技术1班 授课时间 第05周 2016年09月26日 星期一3-4节 2016年09月27日 星期二3-4节 教学方法 情境教学任务驱动(李锋) 教 具 多媒体机房A703 多媒体机房A707 复习:5分钟 新课导入:3分钟 介绍重点难点:2分钟 内容讲解:45分钟 实训指导:30分钟 小结:5分钟 课程安排: 课程导入:使用Transact-SQL语言 情境目标: 了解Transact-SQL的用法和作用 学会并能根据需要灵活使用SELECT语句查询用户表的信息 使用INSERT向用户表输入数据 使用UPDATE修改用户表的数据 使用DELETE语句删除用户表的数据。 重点与难点: 根据需要灵活使用SELECT语句查询用户表的信息 学习情境2:使用Transact-SQL语言 任务1:概述 任务2:插入数据 任务3:更新数据 任务4:删除数据 任务5:检索数据概述 任务6:使用SELECT子句检索数据 任务7:排序 任务8:使用WHERE子句选择数据 任务9:使用聚合函数查询 任务10:使用分组查询 任务11:使用子查询 任务12:排序查询结果 任务13:使用多表连接查询数据 任务12 子查询技术 SELECT语句可以嵌套在其他许多语句中,这些语句包括SELECT、INSERT、UPDATE及DELETE等,这些嵌套的SELECT语句被称为子查询。 当一个查询依赖于另外一个查询结果时,那么可以使用子查询。在某些查询中,查询语句比较复杂不容易理解,因此为了把这些复杂的查询语句分解成多个比较简单的查询语句形式时常使用子查询方式。 使用子查询方式完成查询操作的技术是子查询技术。 【例2-37】使用了子查询技术外连接检索 USE AdventureWorks SELECT SalesOrderID, OrderDate, DueDate, ProductAmount = (SELECT COUNT(*) FROM Sales.SalesOrderDetail SSOD WHERE SSOD.SalesOrderID = SSOH.SalesOrderID) FROM Sales.SalesOrderHeader SSOH WHERE SalesOrderID IN (SELECT TOP (3) SalesOrderID FROM Sales.SalesOrderDetail GROUP BY SalesOrderID ORDER BY COUNT(SalesOrderID) DESC) 任务13 集合运算技术 查询语句的结果集往往是一个包含了多行数据集合。集合之间可以进行并、差、交等运算。 在Microsoft SQL Server 2005系统中,两个查询语句之间也可以进行集合运算。 其中,UNION运算符表示并集运算,EXCEPT运算符从左查询中返回右查询中没有找到的重复值,INTERSECT运算符则返回左右两个查询语句都包含的所有非重复值。 需要注意的是,在集合运算时,所有查询语句中的列的数量和顺序必须相同,且数据类型必须兼容。 【例2-38】执行集合运算 USE ElecTravelCom SELECT * FROM T1 SELECT * FROM T2 【例2-38】执行集合运算 USE ElecTravelCom SELECT col1 FROM T1 EXCEPT SELECT col1 FROM T2 任务14 公用表表达式 在Microsoft SQL Server 2005系统中,可以使用公用表表达式(common table expression,CTE)。CTE是定义在SELECT、INSERT、UPDATE或DELETE语句中的临时命名的结果集,CTE也可以用在视图的定义中。在CTE中可以包括对自身的引用,因此这种表达式也被称为递归CTE。 在SELECT语句中,可以使用WITH子句定义CTE。CTE的基本语法形式如下: WITH expression_name (column_name, …) AS (CTE_query_definition) 【例2-39】定义和使用CTE USE AdventureWorks; WITH AmountOrder(SalesPersonID, AmountOrderOfPerson, MaxDate
显示全部