欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第4章SQL关系数据库的标准.ppt

    • 资源ID:60172327       资源大小:831KB        全文页数:60页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第4章SQL关系数据库的标准.ppt

    第4章SQL关系数据库的标准 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望概述概述SQL的的发展发展和现状和现状(1)SQL(结构化查询语言结构化查询语言Structured Query Language),是在是在1974年由年由Boyce和和Chamberlin提出的提出的(2)19751979,IBM San Jose Research Lab的的关系数据库管理系统原型关系数据库管理系统原型System R实施了这种实施了这种语言语言(3)SQL-86是第一个是第一个SQL标准标准概述概述SQL的发展的发展和和现状现状(4)SQL-89、SQL-92(SQL2)、SQL-99(SQL3)(5)大部分)大部分DBMS产品都支持产品都支持SQL,成为成为操作数据库的标准语言操作数据库的标准语言(6)有方言,支持程度不同)有方言,支持程度不同概述概述SQL的的特点特点和功能和功能 综合统一综合统一高度非过程化高度非过程化面向集合的操作方式面向集合的操作方式以同一种语法结构提供两种使用方法以同一种语法结构提供两种使用方法语言简捷,易学易用语言简捷,易学易用概述概述SQL的特点和的特点和功能功能 数据定义数据定义(DDL)Create、Drop、Alter数据操纵数据操纵(DML)数据查询:数据查询:Select数据修改:数据修改:Insert、Update、Delete数据控制数据控制(DCL)Grant、Revoke交互式交互式SQL一般一般DBMS都提供联机交互工具都提供联机交互工具用户可直接键入用户可直接键入SQL命令对数据库进行操作命令对数据库进行操作由由DBMS来进行解释来进行解释嵌入式嵌入式SQL能将能将SQL语句嵌入到高级语言(宿主语言)语句嵌入到高级语言(宿主语言)使应用程序充分利用使应用程序充分利用SQL访问数据库的能力、访问数据库的能力、宿主语言的过程处理能力宿主语言的过程处理能力概述概述SQL的形式的形式概述概述SQL体系结构体系结构(1 1)一个)一个)一个)一个SQLSQL数据库是表(数据库是表(数据库是表(数据库是表(TableTable)的集合。的集合。的集合。的集合。(2 2)一一一一个个个个表表表表或或或或者者者者是是是是基基基基本本本本表表表表,或或或或者者者者是是是是一一一一个个个个视视视视图图图图。基基基基本本本本表表表表是是是是实实实实际际际际存存存存储储储储在在在在数数数数据据据据库库库库中中中中的的的的表表表表,而而而而视视视视图图图图是是是是由由由由若若若若干干干干基基基基本本本本表表表表或或或或其它视图构成的查询语句定义的。其它视图构成的查询语句定义的。其它视图构成的查询语句定义的。其它视图构成的查询语句定义的。(3 3)一一一一个个个个基基基基本本本本表表表表对对对对应应应应一一一一个个个个或或或或多多多多个个个个存存存存储储储储文文文文件件件件,一一一一个个个个存存存存储储储储文文文文件也可存放一个或多个基本表。件也可存放一个或多个基本表。件也可存放一个或多个基本表。件也可存放一个或多个基本表。(4 4)用用用用户户户户可可可可以以以以用用用用SQLSQL语语语语句句句句对对对对视视视视图图图图和和和和基基基基本本本本表表表表进进进进行行行行查查查查询询询询操操操操作作作作。在用户看来,视图和基本表是一样的,都是关系。在用户看来,视图和基本表是一样的,都是关系。在用户看来,视图和基本表是一样的,都是关系。在用户看来,视图和基本表是一样的,都是关系。SQL的数据查询的数据查询数据查询是数据库应用的核心功能数据查询是数据库应用的核心功能一、基本结构一、基本结构Select A1,A2,.,AnFrom r1,r2,.,rmWhere P;A A1 1,A,A2 2,.,A,.,An n(p(r1r1.rm)SelectSelectWhereWhereFromFromSelect语句的含义语句的含义对对 From 子句中的各关系,作笛卡儿子句中的各关系,作笛卡儿积(积()对对 Where 子句中的逻辑表达式进行选子句中的逻辑表达式进行选择(择()运算,找出符合条件的元组运算,找出符合条件的元组根据根据 Select 子句中的属性列表,对上子句中的属性列表,对上述结果作投影(述结果作投影()操作操作结果集,查询操作的对象是关系,结结果集,查询操作的对象是关系,结果还是一个关系,是一个结果集果还是一个关系,是一个结果集二、单表查询二、单表查询Select子句(选择表中若干列)子句(选择表中若干列)Where子句(选择表中若干行)子句(选择表中若干行)Order By子句(对查询结果排序)子句(对查询结果排序)聚集函数聚集函数单表查询单表查询选择表中的若干列选择表中的若干列 对应于关系代数的对应于关系代数的投影投影()运算,用以列出运算,用以列出查询结果集中的期望属性。查询结果集中的期望属性。查询指定的列查询指定的列 Select 学号,学生学号,学生 From 学生;学生;目标列表达式目标列表达式目标列表达式中各个列的先后顺目标列表达式中各个列的先后顺序可以与表中的顺序不一致,我序可以与表中的顺序不一致,我们可以根据用户的需求改变列的们可以根据用户的需求改变列的顺序顺序单表查询单表查询选择表中的若干列选择表中的若干列 查询全部列查询全部列 星号星号*:按关系模式中属性的顺序排列:按关系模式中属性的顺序排列显式列出属性名:按用户顺序排列显式列出属性名:按用户顺序排列Select*From 学生;学生;查询经过计算的值查询经过计算的值 例例1:查询全体学生的姓名及其出生年份:查询全体学生的姓名及其出生年份Select 姓名,姓名,2002-年龄年龄 From 学生;学生;单表查询单表查询选择表中的若干列选择表中的若干列更名更名为结果集中的某个属性改名为结果集中的某个属性改名为结果集中的某个属性改名为结果集中的某个属性改名使结果集更具可读性使结果集更具可读性使结果集更具可读性使结果集更具可读性Select Select 学号,姓名学号,姓名学号,姓名学号,姓名 as as 学生姓名学生姓名学生姓名学生姓名From From 学生;学生;学生;学生;Select Select 姓名姓名姓名姓名 as as 学生姓名学生姓名学生姓名学生姓名,2002 2002 年龄年龄年龄年龄 as as 出生年份出生年份出生年份出生年份From From 学生;学生;学生;学生;单表查询单表查询选择表中的若干元组选择表中的若干元组 消除取值重复的行消除取值重复的行 Select 子句的缺省情况是保留重复元组子句的缺省情况是保留重复元组(ALL),),可用可用 Distinct 去除重复元组去除重复元组Select 所在系所在系 From 学生;学生;等价于等价于Select All 所在系所在系 From 学生;学生;Select Distinct 所在系所在系 From 学生;学生;查询满足条件的元组查询满足条件的元组 查询满足指定条件的元组可以通过查询满足指定条件的元组可以通过Where子句来实现子句来实现where子句对应与关系代数中的子句对应与关系代数中的选择选择()使使where子句中的逻辑表达式返回子句中的逻辑表达式返回True值值的元组,是符合要求的元组,将被选择的元组,是符合要求的元组,将被选择出来出来Where 子句子句运算符运算符比较:比较:比较:比较:=、=、=、!=!=、!、!、not+not+确定范围:确定范围:确定范围:确定范围:Between A and BBetween A and B、Not Between A and BNot Between A and B确定集合:确定集合:确定集合:确定集合:ININ、NOT INNOT IN字符匹配:字符匹配:字符匹配:字符匹配:LIKELIKE,NOT LIKENOT LIKE空值:空值:空值:空值:IS NULLIS NULL、IS NOT NULLIS NOT NULL多重条件:多重条件:多重条件:多重条件:ANDAND、OROR、NOTNOTWhere 子句子句比较大小比较大小例例2:查询城环系全体学生的名单:查询城环系全体学生的名单例例3:查询所有年龄在:查询所有年龄在20岁以下的学生姓名岁以下的学生姓名及其年龄及其年龄例例4:查询考试成绩有不及格的学生的学号:查询考试成绩有不及格的学生的学号Where 子句子句确定范围确定范围谓词谓词谓词谓词BETWEENANDBETWEENAND和和和和NOT NOT BETWEENANDBETWEENAND可以用来查找属性值在(或不可以用来查找属性值在(或不可以用来查找属性值在(或不可以用来查找属性值在(或不在)指定范围内的元组。在)指定范围内的元组。在)指定范围内的元组。在)指定范围内的元组。例例例例5 5:查询年龄在:查询年龄在:查询年龄在:查询年龄在18-2018-20岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄例例例例6 6:查询年龄不在:查询年龄不在:查询年龄不在:查询年龄不在18-2018-20岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄岁之间的学生的姓名和年龄Where 子句子句确定集合确定集合谓词谓词IN可以用来查找属性值属于指定集合的元组。可以用来查找属性值属于指定集合的元组。NOT IN用来查找属性值不属于指定集合的元组。用来查找属性值不属于指定集合的元组。例例7:查询城环系、地空学院学生的姓名和性别:查询城环系、地空学院学生的姓名和性别例例8:查询年龄不是:查询年龄不是18、20、22岁的学生的姓名岁的学生的姓名Where 子句子句Like字符匹配:字符匹配:字符匹配:字符匹配:LikeLike、Not LikeNot Like与使用与使用与使用与使用=和和和和!=!=字符串比较运算符相比,使用通配符可字符串比较运算符相比,使用通配符可字符串比较运算符相比,使用通配符可字符串比较运算符相比,使用通配符可使使使使 LIKE LIKE 运算符更加灵活运算符更加灵活运算符更加灵活运算符更加灵活通配符通配符通配符通配符%匹配任意字符串匹配任意字符串匹配任意字符串匹配任意字符串_ _ 匹配任意一个字符匹配任意一个字符匹配任意一个字符匹配任意一个字符指定范围指定范围指定范围指定范围(a-f)a-f)或集合或集合或集合或集合(abcdef)abcdef)中的任中的任中的任中的任何单个字符。何单个字符。何单个字符。何单个字符。不属于指定范围不属于指定范围不属于指定范围不属于指定范围(a-f)a-f)或集合或集合或集合或集合(abcdef)abcdef)的任何单个字符。的任何单个字符。的任何单个字符。的任何单个字符。大小写敏感大小写敏感大小写敏感大小写敏感Where 子句子句Like例例例例9 9:列出汪姓的学生的学号、姓名:列出汪姓的学生的学号、姓名:列出汪姓的学生的学号、姓名:列出汪姓的学生的学号、姓名Select Select 学号,姓名学号,姓名学号,姓名学号,姓名From From 学生学生学生学生Where Where 姓名姓名姓名姓名 LIKE LIKE 汪汪汪汪%;例例例例1010:列出汪姓且单名的学生的学号、姓名:列出汪姓且单名的学生的学号、姓名:列出汪姓且单名的学生的学号、姓名:列出汪姓且单名的学生的学号、姓名例例例例1111:列出姓汪、邹的学生的学号、姓名:列出姓汪、邹的学生的学号、姓名:列出姓汪、邹的学生的学号、姓名:列出姓汪、邹的学生的学号、姓名例例例例1212:例出不姓汪、邹的学生的学号、姓名:例出不姓汪、邹的学生的学号、姓名:例出不姓汪、邹的学生的学号、姓名:例出不姓汪、邹的学生的学号、姓名Where 子句子句转义符转义符 escape 例例13:列出课程名称中带有:列出课程名称中带有_的课号及课的课号及课名名。Select 课程号,课程名称课程号,课程名称From 课程课程Where课程名称课程名称LIKE%_%escape Where 子句子句空值查询空值查询 例例14:查询所有选了课而没有考试成绩的学生的:查询所有选了课而没有考试成绩的学生的学号和课程号学号和课程号Select 学号,学号,课程号课程号From 课程课程Where 成绩成绩 Is NuLL;例例15:查询所有有:查询所有有001号课的成绩的学生的学号号课的成绩的学生的学号Order ByOrder By子句(对查询结果排序)子句(对查询结果排序)n n指定结果集中元组的排列次序指定结果集中元组的排列次序n n耗时耗时n nASC(缺省)、缺省)、DESCn n对于空值,若升序,含空值的元组最先对于空值,若升序,含空值的元组最先显示;若降序,则反之显示;若降序,则反之例例例例1616:列出:列出:列出:列出城环城环城环城环系中的男生的学号、姓名、年系中的男生的学号、姓名、年系中的男生的学号、姓名、年系中的男生的学号、姓名、年龄,并按年龄进行排列(升序)龄,并按年龄进行排列(升序)龄,并按年龄进行排列(升序)龄,并按年龄进行排列(升序)Order ByOrder By子句子句实例实例例例例例1717:列出:列出:列出:列出城环城环城环城环系中的男生的学号、姓名、年龄,系中的男生的学号、姓名、年龄,系中的男生的学号、姓名、年龄,系中的男生的学号、姓名、年龄,并按年龄进行降序排列。并按年龄进行降序排列。并按年龄进行降序排列。并按年龄进行降序排列。S Select elect 学号、姓名、年龄学号、姓名、年龄学号、姓名、年龄学号、姓名、年龄F From rom 学生学生学生学生WWhere here 性别性别性别性别=男男男男 OOrder By rder By 年龄年龄年龄年龄 DescDesc;例例例例1818:查询全体学生情况,查询结果按所在系的:查询全体学生情况,查询结果按所在系的:查询全体学生情况,查询结果按所在系的:查询全体学生情况,查询结果按所在系的系名升序排列,同一系中的学生按年龄降序排列。系名升序排列,同一系中的学生按年龄降序排列。系名升序排列,同一系中的学生按年龄降序排列。系名升序排列,同一系中的学生按年龄降序排列。聚合函数聚合函数把一列中的值进行聚合运算,返回单值的函数把一列中的值进行聚合运算,返回单值的函数把一列中的值进行聚合运算,返回单值的函数把一列中的值进行聚合运算,返回单值的函数五个预定义的聚合函数五个预定义的聚合函数五个预定义的聚合函数五个预定义的聚合函数平均值:平均值:平均值:平均值:AvgAvgAvgAvg(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )总和:总和:总和:总和:SumSumSumSum(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )最小值:最小值:最小值:最小值:MinMinMinMin(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )最大值:最大值:最大值:最大值:MaxMaxMaxMax(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )计数:计数:计数:计数:CountCountCountCount(ALL|DISTINCTALL|DISTINCTALL|DISTINCTALL|DISTINCT )Count(*)Count(*)、Count(Distinct)Count(Distinct)SUMSUM、AVGAVG的的的的字段类型必须字段类型必须字段类型必须字段类型必须是数值型是数值型是数值型是数值型聚合函数聚合函数实例实例例例19、查询学生总人数。、查询学生总人数。Select Count(*)From 学生;学生;例例20、查询选修了课程的学生人数。、查询选修了课程的学生人数。例例21、计算课程号为、计算课程号为001的课程的平均值、并的课程的平均值、并查询它的最高分和最低分。查询它的最高分和最低分。聚合函数聚合函数Group By子句子句n将查询结果集按某一列或多列的将查询结果集按某一列或多列的值值分组,值相分组,值相等的为一组,一个分组以一个元组的形式出现等的为一组,一个分组以一个元组的形式出现n只有出现在只有出现在Group By子句中的属性,才可出现子句中的属性,才可出现在在Select子句中子句中例例22:统计各系学生的人数。:统计各系学生的人数。Select 所在系,所在系,count(*)as 学生数目学生数目From 学生学生Group By 所在系;所在系;聚合函数聚合函数Having子句子句n针对聚合函数的结果值进行筛选(选择),它针对聚合函数的结果值进行筛选(选择),它作用于分组计算结果集作用于分组计算结果集n跟在跟在Group By子句的后面,子句的后面,没有没有Group By则则针对全表针对全表例例23:列出具有两门(含)以上不及格的学生的:列出具有两门(含)以上不及格的学生的学号、不及格的课目数学号、不及格的课目数。nWhere和和Having的区别的区别聚合函数聚合函数 Null聚合函数忽略聚合函数忽略NullnCount:不计不计nSum:不将其计入不将其计入nAvg:具有 Null 的的元组元组不参与不参与nMax/Min:不参与不参与例例24:Select count(sdept)From 学生 Select Avg(sage)From 学生若一个查询同时涉及两个以上的表,若一个查询同时涉及两个以上的表,则称之为则称之为连接查询连接查询,包括:,包括:内连接内连接自连接自连接外连接外连接复合条件连接复合条件连接三、连接查询三、连接查询n n它是条件连接,这个条件称为它是条件连接,这个条件称为它是条件连接,这个条件称为它是条件连接,这个条件称为连接条件连接条件连接条件连接条件或或或或连接谓词连接谓词连接谓词连接谓词n n可以是等值连接,也可以是不等值连接可以是等值连接,也可以是不等值连接可以是等值连接,也可以是不等值连接可以是等值连接,也可以是不等值连接n n新的关系的属性集是参加连接的关系的新的关系的属性集是参加连接的关系的新的关系的属性集是参加连接的关系的新的关系的属性集是参加连接的关系的属性的组合,不去除重复属性属性的组合,不去除重复属性属性的组合,不去除重复属性属性的组合,不去除重复属性n nInnerInner是缺省的连接方式是缺省的连接方式是缺省的连接方式是缺省的连接方式n n也可以用笛卡儿积也可以用笛卡儿积也可以用笛卡儿积也可以用笛卡儿积+选择的方法实现选择的方法实现选择的方法实现选择的方法实现内连接(内连接(Inner Join)例例例例2525、查询每个学生的全部信息及其选课情况、查询每个学生的全部信息及其选课情况、查询每个学生的全部信息及其选课情况、查询每个学生的全部信息及其选课情况SELECT SELECT 学生学生学生学生.*,.*,选课选课选课选课.*.*FROM FROM 学生学生学生学生 INNER JOIN INNER JOIN 选课选课选课选课 ON ON 学生学生学生学生.学号学号学号学号=选课选课选课选课.学号学号学号学号;SELECT SELECT 学生学生学生学生.*,.*,选课选课选课选课.*.*FROM FROM 学生学生学生学生 ,选课选课选课选课Where Where 学生学生学生学生.学号学号学号学号=选课选课选课选课.学号学号学号学号;内连接内连接实例实例例例例例2626、查询每一门课的先修课、查询每一门课的先修课、查询每一门课的先修课、查询每一门课的先修课SELECT Distinct f.*SELECT Distinct f.*FROM FROM 课程课程课程课程 f Inner Join f Inner Join 课程课程课程课程 S SOn F.On F.课程编号课程编号课程编号课程编号=S.S.先修课程编号先修课程编号先修课程编号先修课程编号;自连接自连接它是条件连接,且条件是必需的。它是条件连接,且条件是必需的。若一个关系中的元组在另一个关系中没有相匹配的若一个关系中的元组在另一个关系中没有相匹配的元组,则这些元组会在连接结果中出现,并在另一元组,则这些元组会在连接结果中出现,并在另一个关系的其他属性位置上放上个关系的其他属性位置上放上Null,而不是像而不是像Inner 那样被忽略。那样被忽略。新的关系的属性集是参加连接的关系的属性的组合,新的关系的属性集是参加连接的关系的属性的组合,不去除重复属性不去除重复属性有左外连接、右外连接、全外连接有左外连接、右外连接、全外连接外连接(外连接(Outer Join)左外连接(左外连接(Left Outer Join):):SELECT*FROM 学生学生 LEFT JOIN 选课选课 ON 学生学生.学号学号=选课选课.学号学号;右外连接(右外连接(Right Outer Join):):SELECT*FROM 学生学生 RIGHT JOIN 选课选课 ON 学生学生.学号学号=选课选课.学学号号;全外连接(全外连接(Full Outer Join):):SELECT*FROM 学生学生 FULL JOIN 选课选课 ON 学生学生.学号学号=选课选课.学号学号;外连接外连接左外连接、右外连接、全外连接左外连接、右外连接、全外连接例例27、查询选修、查询选修001号课程且成绩在号课程且成绩在90分以上的所有学分以上的所有学生信息。生信息。SELECT*FROM 学生学生 INNER JOIN 选课选课 ON 学生学生.学号学号=选课选课.学号学号WHERE 选课号选课号=001 and 选课选课.成绩成绩90;例例28、查询每个学生的学号、姓名、选课的课程名和成、查询每个学生的学号、姓名、选课的课程名和成绩。绩。复合条件连接复合条件连接四、子查询(嵌套查询)四、子查询(嵌套查询)子查询是子查询是子查询是子查询是嵌套嵌套嵌套嵌套在另一查询中的在另一查询中的在另一查询中的在另一查询中的 Select-From-Where Select-From-Where 表达式表达式表达式表达式(Where/HavingWhere/Having)SQLSQL允许多层嵌套,由允许多层嵌套,由允许多层嵌套,由允许多层嵌套,由内而外地内而外地内而外地内而外地进行分析,子查询的结果作为进行分析,子查询的结果作为进行分析,子查询的结果作为进行分析,子查询的结果作为父查询的查找条件父查询的查找条件父查询的查找条件父查询的查找条件可以用多个简单查询来构成复杂查询,以增强可以用多个简单查询来构成复杂查询,以增强可以用多个简单查询来构成复杂查询,以增强可以用多个简单查询来构成复杂查询,以增强SQLSQL的查询能力的查询能力的查询能力的查询能力子查询中不使用子查询中不使用子查询中不使用子查询中不使用 Order By Order By 子句,子句,子句,子句,Order ByOrder By子句只能对最终查子句只能对最终查子句只能对最终查子句只能对最终查询结果进行排序询结果进行排序询结果进行排序询结果进行排序返回单值的子查询,只返回返回单值的子查询,只返回一行一列一行一列父查询与父查询与单值单值子查询之间用比较运算符进行连接子查询之间用比较运算符进行连接运算符:运算符:运算符:运算符:、=、=、=、例例例例2929:找出与:找出与:找出与:找出与0001504200015042同龄的学生同龄的学生同龄的学生同龄的学生子查询子查询单值比较单值比较Select*From 学生学生Where 年龄年龄=(Select 年龄年龄 From 学生学生 Where 学号学号=00015042);子查询返回子查询返回多行一列多行一列运算符:运算符:In、All、Some|Any、Exists子查询子查询多值多值标量值与子查询返回集中的某一个相等,标量值与子查询返回集中的某一个相等,true IN IN 被用来测试多值中的成员被用来测试多值中的成员被用来测试多值中的成员被用来测试多值中的成员例例例例3030:查询选修:查询选修:查询选修:查询选修 C01C01课程的学生的学号、姓名。课程的学生的学号、姓名。课程的学生的学号、姓名。课程的学生的学号、姓名。Select Select 学号学号学号学号,姓名姓名姓名姓名From From 学生学生学生学生Where Where 学号学号学号学号 ININ(Select Select 学号学号学号学号 From From 选课选课选课选课Where Where 学号学号学号学号=C01)C01);子查询子查询子查询子查询多行多行多行多行1 1列列列列子查询子查询多值成员多值成员In例例例例3131、查询选修了查询选修了查询选修了查询选修了 数据库数据库数据库数据库 的学生的学号和姓名的学生的学号和姓名的学生的学号和姓名的学生的学号和姓名子查询子查询多值成员多值成员InSelect Select 学号学号学号学号,姓名姓名姓名姓名From From 学生学生学生学生Where Where 学号学号学号学号 ININ (Select(Select 学号学号学号学号 From From 选课选课选课选课 Where Where 课程号课程号课程号课程号 ININ (Select(Select 课程号课程号课程号课程号From From 课程课程课程课程Where Where 课程名称课程名称课程名称课程名称=数据库数据库数据库数据库);查询数据库查询数据库查询数据库查询数据库的课程号的课程号的课程号的课程号查询选择了数据库查询选择了数据库查询选择了数据库查询选择了数据库课的学生的学号课的学生的学号课的学生的学号课的学生的学号多值比较:多值比较:多行一列多行一列父查询与多值子查询之间的比较需用父查询与多值子查询之间的比较需用All来连接来连接标量值标量值s比子查询返回集比子查询返回集R中的每个都大时,中的每个都大时,sAll R 为为True All表示所有表示所有 all、all、=all、all all 等价于等价于 not in例例32:查询女生中年龄比男生都小的女生的姓名:查询女生中年龄比男生都小的女生的姓名子查询子查询多值比较多值比较 ALLSelect 姓名姓名 From 学生学生 Where 年龄年龄 Some R为为True 或或 s Any R为为True Some(早期用早期用Any)表示某一个表示某一个,只要有一个即返回真只要有一个即返回真 some、some、=some、some=some 等价于等价于 in、some 不等价于不等价于 not in 子查询多值比较Some/Any例例33:找出不是最小年龄的学生:找出不是最小年龄的学生 子查询子查询多值比较多值比较Select*From 学生学生Where 年龄年龄 some(Select 年龄年龄 From 学生学生);Select*From 学生学生Where 年龄年龄 (Select min(年龄年龄)From 学生学生);例例34:找出具有最高平均成绩的学生的学号及平均成绩。:找出具有最高平均成绩的学生的学号及平均成绩。子查询子查询多值比较多值比较Select 学号学号,avg(成绩成绩)From 选课选课Group By 学号学号 Having avg(成绩成绩)=all(Select avg(成绩成绩)From 选课选课 Group By 学号学号);Exists+子查询用来判断该子查询是否返回元组子查询用来判断该子查询是否返回元组当子查询的结果集非空时,当子查询的结果集非空时,Exists为为True当子查询的结果集为空时,当子查询的结果集为空时,Exists为为False不关心子查询的具体内容,因此用不关心子查询的具体内容,因此用 Select*具有外部引用的子查询,称为相关子查询具有外部引用的子查询,称为相关子查询(Correlated Queries)外层元组的属性值作为内层子查询的条件外层元组的属性值作为内层子查询的条件Not Exists子查询子查询存在判断存在判断Exists 例例35:列出选修了:列出选修了C01课程的学生的学号、姓名课程的学生的学号、姓名Select 学号学号,姓名姓名From 学生学生Where Exists(Select*From 选课选课 Where 选课选课.学号学号=学生学生.学号学号 And 课程号课程号=C01);子查询子查询Correlated&Exists 例例36:列出得过:列出得过100分的学生的学号、姓名分的学生的学号、姓名Select 学号学号,姓名姓名From 学生学生Where Exists(Select*From 选课选课Where 选课选课.学号学号=学生学生.学号学号 And成绩成绩=100)子查询子查询Correlated&Exists 例例38:列出没有选:列出没有选C01课程的学生的学号、姓名课程的学生的学号、姓名Select 学号学号,姓名姓名From 学生学生Where Not Exists(Select*From 选课选课Where 选课选课.学号学号=学生学生.学号学号 And课程号课程号=C01)子查询子查询Correlated&Not Exists例例39:查询选修了所有课程的学生的姓名:查询选修了所有课程的学生的姓名(For All)Select 姓名姓名From 学生学生Where Not Exists(Select*From 课程课程Where Not Exists(Select*From 选课选课Where 学生学生.学号学号=选课选课.学号学号 And选课选课.课程号课程号=课程课程.课程号课程号)这门课他没选这门课他没选这样的课是不存在的这样的课是不存在的子查询子查询Correlated&Not Exists例例40:查询至少选修了学生:查询至少选修了学生00015042选修的全部课程的学生学号选修的全部课程的学生学号Select Distinct 学号学号From 课程课程 课程课程1Where Not Exists(Select*From 课程课程 课程课程2Where 课程课程2.学号学号=00015042 AND Not Exists(Select*From 选课选课 选课选课3Where 选课选课3.学号学号=选课选课1.学号学号 And选课选课3.课程号课程号=课程课程2.课程号课程号)子查询子查询Correlated&Not Exists四、四、SQL的集合操作的集合操作SQL的结果集是元组的集合的结果集是元组的集合多个多个 Select 语句的结果可以进行集合操作,使语句的结果可以进行集合操作,使结果为结果为“集合集合”SQL-92支持支持参加集合操作的关系(结果集)必须是参加集合操作的关系(结果集)必须是相容相容的的SQL的集合操作的集合操作相容相容属性个数必须一致属性个数必须一致对应的类型必须一致对应的类型必须一致属性名无关属性名无关最终结果集采用第一个结果的属性名最终结果集采用第一个结果的属性名缺省为自动去除重复元组缺省为自动去除重复元组除非显式说明除非显式说明ALLOrder By放在整个语句的最后放在整个语句的最后SQL的集合操作的集合操作并并union(并,对应与关系代数的并,对应与关系代数的),标准),标准SQL都支持的都支持的采用集合的观点,合成多个查询的结果采用集合的观点,合成多个查询的结果select-without-order by.UNION ALL select-without-order by.UNION ALL select-without-order by .ORDER BY integer ASC|DESC,.例例4242:查询城环系的学生:查询城环系的学生或者或者年龄不大于年龄不大于1919岁岁的学生,并按年龄倒排序。的学生,并按年龄倒排序。例例4343:查询选修了课程:查询选修了课程C01C01或或C02C02的学生的学生SQL的集合操作的集合操作并并intersect(交,对应与关系代数的交,对应与关系代数的),并不),并不是所有的是所有的DBMS都支持都支持例例4444:查询城环系的学生:查询城环系的学生与与年龄不大于年龄不大于1919岁岁的学生的交集。的学生的交集。SQL的集合操作的集合操作交交except(差,对应与关系代数的差,对应与关系代数的-),并不是),并不是所有的所有的DBMS都支持都支持例例4545:查询计算机系的男生与年龄不大于:查询计算机系的男生与年龄不大于1919岁岁的学生的差值。的学生的差值。SQL的集合操作的集合操作差差设有三个关系:学生设有三个关系:学生设有三个关系:学生设有三个关系:学生(学号,姓名,年龄,性别学号,姓名,年龄,性别学号,姓名,年龄,性别学号,姓名,年龄,性别)选课选课选课选课(学号,课程号,成绩学号,课程号,成绩学号,课程号,成绩学号,课程号,成绩)1 1、检索刘老师所授课程的课程号、课程名、检索刘老师所授课程的课程号、课程名、检索刘老师所授课程的课程号、课程名、检索刘老师所授课程的课程号、课程名2 2、检索年龄大于、检索年龄大于、检索年龄大于、检索年龄大于2020岁的男同学的学号和姓名岁的男同学的学号和姓名岁的男同学的学号和姓名岁的男同学的学号和姓名3 3、检索至少选修刘老师所授课程中一门课的学生姓名、检索至少选修刘老师所授课程中一门课的学生姓名、检索至少选修刘老师所授课程中一门课的学生姓名、检索至少选修刘老师所授课程中一门课的学生姓名4 4、检索王同学不学的课程的课程号、检索王同学不学的课程的课程号、检索王同学不学的课程的课程号、检索王同学不学的课程的课程号5 5、检索至少选修两门课的学生学号、检索至少选修两门课的学生学号、检索至少选修两门课的学生学号、检索至少选修两门课的学生学号6 6、检索全部学生都选修的课程号与课程名、检索全部学生都选修的课程号与课程名、检索全部学生都选修的课程号与课程名、检索全部学生都选修的课程号与课程名7 7、检索选修课程包括刘老师所授课程的学生学号、检索选修课程包括刘老师所授课程的学生学号、检索选修课程包括刘老师所授课程的学生学号、检索选修课程包括刘老师所授课程的学生学号

    注意事项

    本文(第4章SQL关系数据库的标准.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开