SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章 数据查询

上传人:E**** 文档编号:89180998 上传时间:2019-05-20 格式:PPT 页数:31 大小:195KB
返回 下载 相关 举报
SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章  数据查询_第1页
第1页 / 共31页
SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章  数据查询_第2页
第2页 / 共31页
SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章  数据查询_第3页
第3页 / 共31页
SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章  数据查询_第4页
第4页 / 共31页
SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章  数据查询_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章 数据查询》由会员分享,可在线阅读,更多相关《SQL Server 2005数据库应用技术 教学课件 ppt 作者 王亚楠 第7章 数据查询(31页珍藏版)》请在金锄头文库上搜索。

1、2010年6月,课件制作人:王亚楠,1,第7章 数据查询,教学课件,2010年6月,课件制作人:王亚楠,2,目录,本章目标 熟练应用:SELECT语句进行简单查询 掌握:SELECT语句进行汇总查询的方法 能够:应用SELECT语句对多表进行联接、联合和嵌套查询,本章内容 7.1 SELECT语句 7.2 简单查询 7.3 汇总查询 7.4 联接查询 7.5 联合查询 7.6 子查询,2010年6月,课件制作人:王亚楠,3,7.1 SELECT语句,SELECT select_list INTO new_table_name FROM table_list WHERE search_condi

2、tions GROUP BY group_by_list HAVING search_conditions ORDER BY order_listASC|DESC COMPUTE compute_condition BY column,指定查询结果集的列,指定要查询的表或视图,选取数据源的行信息,对结果集进行分组汇总,对结果集进行明细汇总,对结果集进行排序,2010年6月,课件制作人:王亚楠,4,7.1 SELECT语句(续),简单查询(单表): 投影查询:选择列 水平查询:选择行 排序: 汇总查询: 汇总:全部记录、分组记录 明细汇总:全部记录、分组记录 多表查询: 连接查询 联合查询 子查

3、询,2010年6月,课件制作人:王亚楠,5,7.2 简单查询,7.2.1 使用SELECT子句选择列 7.2.2 使用WHERE子句选择行 7.2.3 使用ORDER BY子句排序,2010年6月,课件制作人:王亚楠,6,7.2.1 使用SELECT子句选择列,列表达式:= 特定列:列名, 列名 所有列:* 指定返回列的名称 (1)列名 AS 别名 (2)列名 别名 (3)别名 = 列名 派生列:表达式 消除重复行: DISTINCT 6. 限制返回行的数量: TOP PERCENT ,【例7-1】检索学生表student,查询所有学生的学号和姓名。,【例7-3】检索学生表student,查询

4、所有学生的详细信息。,【例7-4】检索学生表student,查询所有学生的学号、姓名和年龄,并指定别名。,【例7-5】检索学生表student,查询全体学生所属的系号。,【例7-6】检索学生表student,查询前2名学生的详细信息。,SELECT 列表达式 FROM 表,2010年6月,课件制作人:王亚楠,7,7.2.2 使用WHERE子句选择行,条件表达式:= 比较表达式:列名 = 值(=、=、) 范围表达式:列名 BETWEEN 值1 AND 值2 列表表达式:列名 IN(值1 ,值2) 模式匹配表达式:列名 LIKE ESCAPE 空值判断表达式:列名 IS NOT NULL 逻辑表达

5、式:比较表达式1 AND 比较表达式2 (AND/OR/NOT),【例7-8】检索学生表student,查询男生的详细信息。,【例7-9】检索学生表student,查询1989年出生的学生的详细信息。,【例7-10】检索学生表student,查询01、02、03班的学生的详细信息。,【例7-11】检索学生表student,查询出姓王的学生的详细信息。,【例7-14】检索学生表student,查询出家庭地址为空的学生的详细信息。,SELECT 列表达式 FROM 表 WHERE 条件表达式,2010年6月,课件制作人:王亚楠,8,7.2.3 使用ORDER BY子句排序,ORDER BY子句用于

6、对输出的结果集排序。,SELECT 列表达式 FROM 表 WHERE 条件表达式 ORDER BY 列表达式 ASC|DESC,【例7-15】检索成绩表score,查询选修了课程号为“c01001”的学生的学号及成绩,并且按照成绩降序排序显示前3行记录。,2010年6月,课件制作人:王亚楠,9,7.3 汇总查询,7.3.1 使用集合函数进行全部数据汇总 7.3.2 使用GROUP BY子句进行分组数据汇总 7.3.3 使用COMPUTE子句进行明细汇总,2010年6月,课件制作人:王亚楠,10,7.3.1 使用集合函数进行全部数据汇总,集合函数列:=,SELECT 集合函数列 FROM 表

7、WHERE 条件表达式 ORDER BY 列表达式 ASC|DESC,【例7-16】检索学生表student,查询记录数。,【例7-17】检索成绩表score,查询选修了课程号“c01001”的学生人数、总成绩、平均成绩、最高成绩、最低成绩。,2010年6月,课件制作人:王亚楠,11,7.3.2 使用GROUP BY子句进行分组数据汇总,GROUP BY子句用于对结果集中的行按照指定列进行分组,并且按组进行统计汇总。 注意: SELECT子句中的列表达式必须满足下列两个条件之一: 应用了集合函数; 未应用集合函数的列必须应用于GROUP BY子句中。,SELECT 列表达式(统计汇总) FRO

8、M 表 WHERE 条件表达式 GROUP BY 指定列(分组列) HAVING 条件表达式 ORDER BY 列表达式 ASC|DESC,【例7-18】检索成绩表score,按课程号进行分组,查询各门课程的课程号、上课人数及平均成绩。,【例7-19】检索成绩表score,按课程号进行分组,查询上课人数多于2人的各门课程的课程号、上课人数及平均成绩。,2010年6月,课件制作人:王亚楠,12,7.3.3 使用COMPUTE子句进行明细汇总,注意: 集合函数中不能使用DISTINCT关键字。 COMPUTE子句中指定的属性列必须存在于SELECT子句中。 COMPUTEBY子句必须与ORDER

9、BY子句一起使用,并且BY关键字后指定的列必须与ORDER BY子句中指定的列相同,或为其子集,且列的顺序也必须一致。,SELECT 列表达式 FROM 表 WHERE 条件表达式 ORDER BY 列表达式 ASC|DESC COMPUTE 集合函数表达式 BY 分组列表达式,【例7-20】检索成绩表score,查询课程号、学号、成绩的明细行并汇总上课人数、平均成绩。,【例7-21】检索成绩表score,按照课程号分组,查询各组的课程号、学号、成绩的明细行并汇总上课人数、平均成绩。,2010年6月,课件制作人:王亚楠,13,7.4 联接查询,7.4.1 联接查询概述 7.4.2 交叉联接查询

10、 7.4.3 内连接查询 7.4.4 外连接查询 7.4.5 单表和多表联接查询,2010年6月,课件制作人:王亚楠,14,7.4.1 联接查询概述,表R 表S 表R CROSS JOIN 表S 表R INNER JOIN 表S(等值) 表R RIGHT OUTER JOIN 表S,2010年6月,课件制作人:王亚楠,15,7.4.1 联接查询概述(续),类型: 交叉连接:CROSS JOIN 内连接:INNER JOIN 外连接:OUTER JOIN 连接条件:表1.外键表2.主键 指定每个表中要用于联接的列。典型的联接条件是:一个表中指定一个外键,而另一个表中指定与其关联的主键。 逻辑运算

11、符(如 = 或 )。,SELECT select_list FROM table1 JOIN_TYPE table2 ON join_condition,SELECT select_list FROM table1 , table2 WHERE join_condition AND search_condition,2010年6月,课件制作人:王亚楠,16,7.4.2 交叉联接查询,交叉连接:笛卡尔积 笛卡尔积运算过程? 笛卡尔积运算结果? 运算符:CROSS JOIN 注意: 没有WHERE子句的交叉联接将产生联接所涉及的表的笛卡尔积。 如果添加一个WHERE子句,则交叉联接的作用将等同内联

12、接。,【例7-22】对系表dept和班级表class进行交叉联接,查询两个表的所有列。,列数相加,行数相乘,2010年6月,课件制作人:王亚楠,17,7.4.3 内连接查询,内连接:是指用比较运算符设置联接条件,返回:符合联接条件的数据行。 运算符:INNER JOIN或JOIN 分类: 等值连接 自然连接 不等值连接,【例7-23】对班级表class和学生表student进行等值联接,查询包含学生的班级及其学生信息,即返回两个表的所有列。,2010年6月,课件制作人:王亚楠,18,7.4.4 外连接查询,外联接:是指返回的结果集:除了包括符合联接条件的行以外,还返回至少一个联接表的其他行。

13、运算符是:OUTER JOIN 分类: 左外连接:LEFT JOIN 右外连接:RIGHT JOIN 全外连接 :FULL JOIN,2010年6月,课件制作人:王亚楠,19,Step1:交叉连接查询 Step2:设置连接条件 Step3:外连接查询 Step4:设置查询条件,SELECT * FROM class cross join student,SELECT * FROM class join student on class.cl_id = student.st_clid,SELECT * FROM class left join student ON class.cl_id = s

14、tudent.st_clid,SELECT class.* FROM class left join student ON class.cl_id = student.st_clid WHERE student.st_id is NULL,【例7-24】对班级表class和学生表student进行左外联接,查询没有学生的班级信息。,2010年6月,课件制作人:王亚楠,20,7.4.5 单表和多表联接查询,1. 自联接查询(1个表) 主要用于:相同的信息进行比较查询。 实现:为联接的表指定两个别名,从而在逻辑上相互区分。 2. 多表联接查询(3个及以上表),【例7-25】对学生表student进

15、行自联接,查询与学号为“2005010101”在同一个班的学生的学号和姓名,【例7-26】对学生表student、课程表course和成绩表score进行等值联接,查询学生的姓名、选修的课程名以及所取得的成绩。,2010年6月,课件制作人:王亚楠,21,7.5 联合查询,表R 表S 表R UNION 表S,2010年6月,课件制作人:王亚楠,22,7.5 联合查询(续),联合查询:是指将多个SELECT语句的结果集进行并运算,组合成为一个结果集。 运算符:UINON,【例7-27】对两个SELECT查询进行联合。第一个查询检索学生表student,查询学生的学号、姓名;第二个查询检索教师表te

16、acher,查询教师的编号、姓名。,注意: 运算的结果集必须具有相同的结构 返回的结果集中的列名是第一个SELECT语句中各列的列名 每个SELECT语句本身不能包含ORDER BY子句或COMPUTE子句,2010年6月,课件制作人:王亚楠,23,7.6 子查询,子查询:是一个嵌套在SELECT、INSERT、UPDATE或DELETE语句或其他子查询中的WHERE子句或HAVING子句中的查询。 SELECTFROMWHERE运算符 (SELECT.FROM),外部查询,内部查询,7.6.1 比较子查询 7.6.2 IN子查询 7.6.3 EXISTS子查询,2010年6月,课件制作人:王亚楠,24,7.6.1 比较子查询,比较运算符:(=、 =、! 或 =)引入子查询 子查询返回的结果:是一个值而不是值列表。,【例7-28】检索班级表class、学生表stud

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号