数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询

上传人:E**** 文档编号:89415586 上传时间:2019-05-24 格式:PPT 页数:37 大小:156KB
返回 下载 相关 举报
数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询_第1页
第1页 / 共37页
数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询_第2页
第2页 / 共37页
数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询_第3页
第3页 / 共37页
数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询_第4页
第4页 / 共37页
数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询》由会员分享,可在线阅读,更多相关《数据库技术与应用(第二版)电子教案&参考答案-王小玲 第4章 数据查询(37页珍藏版)》请在金锄头文库上搜索。

1、第4章 数据查询,基本查询、嵌套查询、连接查询 嵌套查询和连接查询,数据库技术与应用基础教材编写组,2,学习目标,了解: SQL语言特点;SQL查询语句SELECT基本组成。 理解: SQL查询语句的用法;SELECT语句语法格式及各项子句的含义;联接查询和嵌套查询的基本概念。 掌握: 查询语句SELECT的综合运用,能进行简单查询、多表联接以及子查询的应用。,数据库技术与应用基础教材编写组,3,4.1 基本查询,4.1.1 简单查询 4.1.2 带条件查询 4.1.3 查询结果处理,数据库技术与应用基础教材编写组,4,4.1 基本查询,数据查询语句SELECT的基本框架是: SELECT-F

2、ROM-WHERE,SELECT语句的语法格式: SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC ,数据库技术与应用基础教材编写组,需要哪些列,从哪些表,根据什么条件,数据库技术与应用基础教材编写组,5,4.1.1 简单查询,简单查询是指无条件查询,其语法格式为: SELECT ALL | DISTINCT TOP

3、n PERCENT FROM table_name 其中: ALL表示输出所有记录,包括重复记录。 DISTINCT表示输出无重复结果的记录。 TOP n指定返回查询结果的前n行数据。 select_list中的选项可以是:、字段名、表达式或函数。,数据库技术与应用基础教材编写组,6,4.1.1 简单查询举例,SELECT all st_name FROM St_Info SELECT DISTINCT St_name FROM St_Info SELECT DISTINCT st_id,St_name FROM St_Info SELECT st_name as 姓名,st_sex AS 性

4、别 FROM St_Info SELECT st_name 姓名,st_sex 性别 FROM St_Info SELECT top 3 St_id FROM S_c_Info SELECT top 20 PERCENT St_id FROM S_c_Info,数据库技术与应用基础教材编写组,7,4.1.1 简单查询,常用聚合函数,数据库技术与应用基础教材编写组,8,4.1.1 简单查询举例,例如,分别查询St_Info表的学生总数和学生的平均年龄 查询学生总数(使用COUNT(*) ) SELECT COUNT(*) AS 总数 FROM St_Info 查询学生的平均年龄(使用AVG) S

5、ELECT AVG(YEAR(GETDATE()- YEAR(Born_date) AS 平均年龄 FROM St_info,数据库技术与应用基础教材编写组,9,4.1.2 带条件查询,语法格式为: WHERE search_condition 如列出St_Info表中年龄在20岁以上学生记录。 SELECT * FROM St_Info WHERE YEAR(GETDATE()- YEAR(Born_date)20,这是一个关系表达式,数据库技术与应用基础教材编写组,10,4.1.2 带条件查询,WHERE子句中的条件运算符,数据库技术与应用基础教材编写组,11,4.1.2 带条件查询举例,

6、【例4.6】对s_c_info表,列出选修“大学计算机基础”和“体育”两门课的学生信息。 SELECT * FROM s_c_info e INNER JOIN c_info d ON e.c_no = d.c_no WHERE d.c_name IN (大学计算机基础, 体育) 【例4.7】对st_info表,列出年龄在18到19之间的学生名单。 SELECT * FROM st_info WHERE YEAR(GETDATE()-YEAR(born_date) BETWEEN 18 AND 19,数据库技术与应用基础教材编写组,12,4.1.2 带条件查询举例,【例4.8】对st_info

7、表,列出所有的姓“王”的学生名单。 SELECT * FROM st_info WHERE st_name LIKE 王% 【例4.9】对st_info表,列出所有Telephone为空值的学生的信息。 SELECT st_info_id,st_info_name FROM st_info WHERE Telephone IS NULL,数据库技术与应用基础教材编写组,13,4.1.3 查询结果处理,排序输出(ORDER BY) 语法格式为: ORDER BY order_by_expression1ASC|DESC,order_by_expression2ASC|DESC , 【例4.10】

8、对st_info表,按性别顺序列出学生的信息,性别相同的再按年龄由小到大排序。 SELECT * FROM st_info ORDER BY st_sex,born_date DESC,数据库技术与应用基础教材编写组,14,4.1.3 查询结果处理,重定向输出(INTO) 语法格式为:INTO new_table 【例4.11】对s_c_info和c_info表,查询出选修“大学计算机基础”所有学生的信息,并将结果存入newstudent表中。 操作的语句为: SELECT s_c_info.st_id,c_info.c_name,s_c_info.score INTO newstudent

9、FROM s_c_info INNER JOIN c_info ON s_c_info.c_no = c_info.c_no WHERE c_info.c_name = 大学计算机基础,数据库技术与应用基础教材编写组,15,4.1.3 查询结果处理,输出合并(UNION) 语法格式为: UNION ALL 【例4.12】对c_info表,列出课程编号为“9710011”或“9720033”的课程名称和学分。 SELECT c_name,c_credit FROM c_info WHERE c_no=9710011 UNION SELECT c_name,c_credit FROM c_info

10、 WHERE c_no=9720033,数据库技术与应用基础教材编写组,16,4.1.3 查询结果处理,分组统计(GROUP BY) 语法格式为: GROUP BY group_by_expression1 ,group_by_expression2, 筛选(HAVING) 语法格式为: HAVING 【例4.15】对s_c_info表,列出平均成绩大于80的课程编号和平均成绩。 SELECT c_no, AVG(score) as 平均成绩 FROM s_c_info GROUP BY c_no HAVING AVG(score)=80,数据库技术与应用基础教材编写组,17,4.1.3 查询

11、结果处理,使用COMPUTE和COMPUTE BY子句汇总 【例4.16】列出st_info表中“材料科学0601班”学生的年龄及平均年龄(即年龄的明细行和汇总行)。 SELECT st_id,YEAR(GETDATE()- YEAR(born_date) as 年龄 FROM st_info WHERE cl_name = 材料科学0601班 ORDER BY st_id COMPUTE sum(YEAR(GETDATE()- YEAR(born_date),数据库技术与应用基础教材编写组,18,4.2 嵌套查询,4.2.1 单值嵌套查询 4.2.2 多值嵌套查询,数据库技术与应用基础教材编

12、写组,19,4.2 嵌套查询,嵌套查询(子查询) 在一个SELECT 语句的WHERE 子句或HAVING 子句中嵌套另一个SELECT 语句的查询称为嵌套查询,又称子查询。 嵌套查询的类型 单值嵌套查询 多值嵌套查询,数据库技术与应用基础教材编写组,20,4.2.1 单值嵌套查询,单值嵌套查询 子查询的返回结果是一个值的嵌套查询称为单值嵌套查询 。 【例4.18】对student_db数据库,列出选修“大学计算机基础”的所有学生的学号和成绩。 操作的语句为: SELECT st_id,score FROM s_c_info WHERE c_no=(SELECT c_no FROM c_inf

13、o WHERE c_name=大学计算机基础),数据库技术与应用基础教材编写组,21,4.2.2 多值嵌套查询,多值嵌套查询 子查询的返回结果是结果集的嵌套查询称为多值嵌套查询。 若某个子查询的返回值不止一个,则必须在WHERE子句中指明如何使用这些返回值。通常使用条件运算符: ANY(SOME) ALL IN,数据库技术与应用基础教材编写组,22,4.2.2 多值嵌套查询举例,使用ANY运算符 【例4.19】对student_db数据库,列出选修“9710011”即“大学计算机基础”的学生的成绩比选修“29000011”即“体育”的学生的最低成绩高的学生的学号和成绩。 操作的语句为: SEL

14、ECT st_id,score FROM s_c_info WHERE c_no=9710011 and scoreANY (SELECT score FROM s_c_info WHERE c_no=29000011),数据库技术与应用基础教材编写组,23,4.2.2 多值嵌套查询举例,使用ALL运算符 【例4.20】对student_db数据库,列出选修“29000011”即“体育”的学生的成绩比选修“9710011”即“大学计算机基础”的学生的最高成绩还要高的学生的学号和成绩。 操作的语句为: SELECT st_id,score FROM s_c_info WHERE c_no=290

15、00011 and scoreALL (SELECT score FROM s_c_info WHERE c_no=9710011),数据库技术与应用基础教材编写组,24,4.2.2 多值嵌套查询举例,使用IN运算符 【例4. 21】对student_db数据库,列出选修“29000011”即“体育”或选修“9710011”即“大学计算机基础”的学生学号和成绩。 操作的语句为: SELECT st_id,score FROM s_c_info WHERE c_no IN (SELECT c_no FROM c_info WHERE c_name=大学计算机基础 OR c_name=体育),数据

16、库技术与应用基础教材编写组,25,4.3 连接查询,4.3.1 连接查询概述 4.3.2 内连接 4.3.3 外连接,数据库技术与应用基础教材编写组,26,4.3 连接查询,连接查询的概念 一个查询同时涉及两个或两个以上的表,则称之为连接查询。 可以根据各个表之间的逻辑关系从两个或多个表中检索数据。 连接查询的类型 内连接(Inner join) 外连接(Outer join) 交叉联接(Cross join) 连接查询的建立 在SELECT语句的WHERE子句中建立 在连接FROM子句中建立,数据库技术与应用基础教材编写组,27,4.3.1 连接查询概述,在SELECT语句的WHERE子句中建立连接 当需要对两个或多个表连接时,可以指定连接的列,在WHERE子句中给出连接条件,在FROM子句中指定要连接的表。 【例4.22】对student_db数据库输出所有学生的成绩单,要求给

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

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

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