2019《数据库系统原理教学课件》044

上传人:F****n 文档编号:88365792 上传时间:2019-04-25 格式:PPT 页数:128 大小:2.19MB
返回 下载 相关 举报
2019《数据库系统原理教学课件》044_第1页
第1页 / 共128页
2019《数据库系统原理教学课件》044_第2页
第2页 / 共128页
2019《数据库系统原理教学课件》044_第3页
第3页 / 共128页
2019《数据库系统原理教学课件》044_第4页
第4页 / 共128页
2019《数据库系统原理教学课件》044_第5页
第5页 / 共128页
点击查看更多>>
资源描述

《2019《数据库系统原理教学课件》044》由会员分享,可在线阅读,更多相关《2019《数据库系统原理教学课件》044(128页珍藏版)》请在金锄头文库上搜索。

1、1,第4章 SQL语言,4.1 SQL语言概述 4.2 数据定义功能与约束 4.3 数据操纵功能 4.4 数据查询功能与视图,2,查询语句的基本结构,SELECT FROM WHERE GROUP BY HAVING ORDER BY ,3,4.4 数据查询功能与视图,5.4.1 单表查询 5.4.2 查询条件的设置 5.4.3 聚合函数 5.4.4 分组 5.4.5 查询结果的排序 5.4.6 多表连接查询 5.4.7 子查询 5.4.8 视图,4,单表查询,数据源只涉及一张表的查询 选择列,5,查询语句的结构,SELECT FROM ,6,CREATE TABLE 演员( 姓名 char

2、( 20 ), 工号 char ( 10 ), 性别 char (2), PRIMARY KEY (工号 ) ),CREATE TABLE 电影( 片名 char ( 60 ), 导演 char ( 20 ), 年代 datetime, PRIMARY KEY (片名,年代 ) ),CREATE TABLE 出演( 工号 char ( 10 ), 片名 char ( 60 ), 年代 datetime, 片酬 money, PRIMARY KEY (工号,片名,年代 ) ),7,演员,电影,出演,8,查询指定的列,查询演员的姓名与性别 SELECT 姓名,性别 FROM 演员 查询结果,9,查

3、询全部列,查询全体演员的记录 SELECT * FROM 演员 查询结果,10,数据库管理系统中的函数,getdate() 取当前的系统日期 year(date) 取日期时间型参数date的年份 month(date) day(date) ,11,使用常量列和计算列,查询电影的片名以及拍摄距今时间 SELECT 片名, 拍摄距今, year(getdate()-year(年代), 年 FROM 电影 查询结果,12,改变列标题,计算列、函数列和常量列的显示结果都没有列标题,通过指定列的别名可以改变查询结果的列标题 改变列标题的语法: 列名 | 表达式 AS 列标题 或:列标题 列名 | 表达式

4、,13,改变列标题的示例,查询电影的片名以及拍摄距今时间 SELECT 片名, year(getdate()-year(年代) AS 拍摄距今年限 FROM 电影 查询结果,14,演员,电影,出演,15,查询结果中相同行被自动消除,查询数据库中的电影拍摄年代 SELECT year(年代) AS 拍摄年代 FROM 电影 查询结果,16,5.4 数据查询功能与视图,5.4.1 单表查询 5.4.2 查询条件的设置 5.4.3 聚合函数 5.4.4 分组 5.4.5 查询结果的排序 5.4.6 多表连接查询 5.4.7 子查询 5.4.8 视图,17,查询语句的结构,SELECT FROM WH

5、ERE ,18,常用查询条件,19,查询条件:比较运算1,查询女演员的姓名 SELECT 姓名 FROM 演员 WHERE 性别女,20,查询条件:比较运算2,查询拍摄距今超过10年电影的片名 SELECT 片名 FROM 电影 WHERE year(getdate()-year(年代) 10 查询结果,21,字符匹配的条件运算符,用于查找指定列中符合匹配模式的元组 列名 NOT LIKE 匹配串中可包含如下四种通配符 _ 匹配任意一个字符; % 匹配0个或多个字符; 匹配 中的任意一个字符; 不匹配 中的任意一个字符,22,查询条件的设置:字符匹配 1,查询 “张”“王”“李”姓演员的情况

6、SELECT 姓名 FROM 演员 WHERE 姓名 LIKE 张王李% 查询结果,23,查询条件的设置:字符匹配 2,查询姓名第2个字不是“菲”或者“优” 的演员的情况 SELECT 姓名 FROM 演员 WHERE 姓名 LIKE _菲优% 查询结果,24,查询条件的设置:字符匹配 3,查询姓名由2个字组成的演员的情况 SELECT 姓名 FROM 演员 WHERE 姓名 LIKE _ _ 查询结果,25,判断空值的条件运算符,空值(NULL)表示不确定的值 判断取值为空的语句格式: 列名 IS NULL 判断取值不为空的语句格式: 列名 IS NOT NULL,26,涉及空值的查询,查询

7、有片酬记录的出演情况,SELECT * FROM 出演 WHERE 片酬 IS NOT NULL,查询结果,27,多重条件的组织,在WHERE子句中可以使用逻辑运算符AND和OR来组成多重条件查询 用AND连接的条件表示必须全部满足所有的条件的元组才被选中 用OR连接的条件表示只要满足其中一个条件的元组即被选中,28,多重条件查询 1,查询王姓女演员的情况,SELECT * FROM 演员 WHERE 姓名 LIKE 王% AND 性别女,查询结果,29,多重条件查询 2,查询王姓演员和全体男演员的情况 SELECT * FROM 演员 WHERE 姓名 LIKE 王% OR 性别男 查询结果

8、,30,确定范围的条件运算符,BETWEENAND和 NOT BETWEENAND 格式 列名 | 表达式 NOT BETWEEN 下限值 AND 上限值,31,查询条件的设置:确定范围 1,查询拍摄距今5至10年的电影,SELECT 片名 FROM 电影 WHERE year(getdate()year( 年代) BETWEEN 5 AND 10,32,查询条件的设置:确定范围 2,查询拍摄距今5至10年的电影 SELECT 片名 FROM 电影 WHERE year(getdate()year( 年代) = 5 AND year(getdate()year( 年代) = 10,33,查询条

9、件的设置:确定范围 3,查询拍摄距今不到5年或者10年以上的电影 SELECT 片名 FROM 电影 WHERE year(getdate()year( 年代) NOT BETWEEN 5 AND 10 查询结果,34,查询条件的设置:确定范围 4,查询拍摄距今不到5年或者10年以上的电影 SELECT 片名 FROM 电影 WHERE year(getdate()year( 年代) 10,35,集合的条件运算符,IN和NOT IN 格式 列名 NOT IN (集合),36,查询条件的设置:确定集合 1,查询拍摄距今为5,10或者15年的电影 SELECT 片名 FROM 电影 WHERE y

10、ear(getdate() - year( 年代) IN (5, 10, 15) 查询结果,37,查询条件的设置:确定集合 2,查询拍摄距今为5,10或者15年的电影 SELECT 片名 FROM 电影 WHERE year(getdate()year( 年代) = 5 OR year(getdate()year( 年代) = 10 OR year(getdate()year( 年代) = 15,38,查询条件的设置:确定集合 3,查询拍摄距今年限不是5,10或者15的电影 SELECT 片名 FROM 电影 WHERE year(getdate() - year( 年代) NOT IN (5

11、, 10, 15) 查询结果,39,查询条件的设置:确定集合 4,查询拍摄距今年限不是5,10或者15的电影 SELECT 片名 FROM 电影 WHERE year(getdate()year( 年代) != 5 AND year(getdate()year( 年代) != 10 AND year(getdate()year( 年代) != 15,40,5.4 数据查询功能与视图,5.4.1 单表查询 5.4.2 查询条件的设置 5.4.3 聚合函数 5.4.4 分组 5.4.5 查询结果的排序 5.4.6 多表连接查询 5.4.7 子查询 5.4.8 视图,41,使用计算函数汇总数据,计算

12、函数= 集合函数= 聚合函数= 聚集函数 对一组值进行计算并返回一个单值,42,SQL提供的计算函数,COUNT( * ): 统计表中元组个数 COUNT( ): 统计本列列值个数 MAX( ):求列值最大值 MIN( ):求列值最小值 SUM( ): 计算列值总和 AVG( ): 计算列值平均值,43,使用计算函数的注意事项,在SELECT,HAVING子句中使用 计算函数不能直接出现在WHERE子句中 如果使用了计算函数或者分组,那么 SELECT子句中的列必须是计算函数或者是分组依据列 SUM 与AVG只能用于数值类型的列,参数可以是计算列 要求只有一个参数 除COUNT(*)外,其他函

13、数在计算过程中均忽略NULL值,44,出演表例子,45,COUNT函数的使用 1,查询演员出演的总人次数 查询演员出演记录的总条数,SELECT COUNT(*) FROM 出演 SELECT COUNT(演员姓名) FROM 出演 SELECT COUNT(片名) FROM 出演 SELECT COUNT(年代) FROM 出演 SELECT COUNT(片酬) FROM 出演 查询结果,46,COUNT函数的使用 2,查询有片酬记录的总条数,SELECT COUNT(片酬) AS 片酬记录条数 FROM 出演 查询结果,47,COUNT函数的使用 3,查询出演表中不同演员的人数,SELEC

14、T COUNT(DISTINCT 演员姓名) AS 演员总数 FROM 出演 查询结果,48,SUM函数的使用 1,查询出演表中支付的片酬总数,SELECT SUM(片酬) AS 总片酬 FROM 出演 查询结果,49,SUM函数的使用 2,查询梁朝伟的片酬总数 SELECT 演员姓名,SUM(片酬) AS 总片酬 FROM 出演 WHERE 演员姓名 梁朝伟 查询结果 列 出演.演员姓名 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。,50,SUM函数的使用 3,查询梁朝伟的片酬总数 SELECT SUM(片酬) AS 梁朝伟的总片酬 FROM 出演 WHE

15、RE 演员姓名 梁朝伟 查询结果,51,AVG函数的使用 1,查询每人次出演支付的片酬平均数 SELECT AVG(片酬) AS 平均片酬 FROM 出演 查询结果,52,NULL对计算函数的影响,SELECT AVG(片酬), SUM(片酬)/COUNT(片酬), SUM(片酬)/COUNT(*) FROM 出演 查询结果,53,AVG函数的使用 2,查询梁朝伟的平均片酬 SELECT 演员姓名,AVG(片酬) AS 平均片酬 FROM 出演 WHERE 演员姓名 梁朝伟 查询结果 列 出演.演员姓名 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。,54,A

16、VG函数的使用 3,查询梁朝伟的平均片酬,SELECT AVG(片酬) AS 梁朝伟的平均片酬 FROM 出演 WHERE 演员姓名 梁朝伟 查询结果,55,MIN与MAX函数的使用 1,查询出演表中支付的最高片酬,SELECT MAX(片酬) AS 最高片酬 FROM 出演 查询结果,56,MIN与MAX函数的使用 2,查询最低片酬以及获得最低片酬的演员姓名 SELECT 演员姓名,MIN(片酬) AS 最低片酬 FROM 出演 查询结果 列 出演.演员姓名 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。,57,MIN与MAX函数的使用 3,查询最低片酬以及有关演员的姓名 SEL

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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