书签 分享 收藏 举报 版权申诉 / 46
上传文档赚钱

类型第四章数据查询课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5094658
  • 上传时间:2023-02-10
  • 格式:PPT
  • 页数:46
  • 大小:264KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第四章数据查询课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第四 数据 查询 课件
    资源描述:

    1、第五章第五章 关系数据库标准语言关系数据库标准语言SQL一、SQL概述结构化查询语言全称全称:Structured Query Language内容内容:数据定义、数据操纵、数据查询和数据控制。特点特点:w简结w 一体化语言w高度非过程化w 命令交互使用SQL 命令动词表SQL 功能命令动词数据查询SELECT数据定义CREATE、DROP、ALTER数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE查询技巧查询技巧首先读题义,从中抽出关键字打开查询的表、先浏览,从中找线索从题目中提取所要信息,作为条件对所得的条件进行有效的组合完善查询SQL中的数据查询语句中的数

    2、据查询语句数据库中的数据很多时侯是为了查询的,因此,数据查是数据库的核心操作。而在SQL语言中,查询语言中有一条查询命令,即SELECT语句。4.5.1 基本查询语句基本查询语句【格式】SELECT ALL|DISTINCT FROM 【功能】无条件查询。【功能】无条件查询。【说明】ALL:表示显示全部查询记录,包括重复记录。DISTINCT:表示显示无重复结果的记录。简单查询简单查询例5.1 从职工关系中检索所有工资值分析分析:关系指二维表,工资是要显示的结果字 段,没有条件。方法方法:把信息插入SQL语句。结果表示结果表示:SELE 工资 FROM 职工语句说明语句说明:SELECT:字段

    3、名(或查询的结果)FROM:来源于哪张表。DISTINCT:是否要去掉等值的字段。例5.1 检索仓库关系中的所有元组 SELE*FROM 仓库*:是通配符,表示所仓库表的中字段.此题中可以:SELE 仓库号,城市,面积 FROM 仓库例5.2:检索工资多于1230元的职工号 条件:工资多于1230 等价于工资1230 显示字段:职工号 来源表:职工表 SELE 职工号 FROM 职工 WHERE 工资1230例:检索哪些仓库有工资多于1210元的职工分析:工资多于1210元等价于工资1210 仓库:是要显示的字段信息,用仓库号 来表示.SELE DIST 仓库号 FORM 职工 WHERE 工

    4、资1210 例:5.5给出在仓库“WH1”或“WH2”工作,并且工资少于1250元的职工号条件:(仓库号=“WH1”OR 仓库号=“WH2”)AND 工资1250 语句:SELE 职工号 FROM 职工 WHERE(仓库号=“WH1”OR 仓库号=“WH2”)AND 工资1250 二、连接查询连接查询【说明】在一个数据库中的【说明】在一个数据库中的多个表之间多个表之间一般都存在一般都存在着着某些联系某些联系,在一个查询语句中同时,在一个查询语句中同时涉及到两个涉及到两个或两个以上的表时或两个以上的表时,这种查询称之为连接查询,这种查询称之为连接查询(也称为多表查询也称为多表查询)。在多表之间查

    5、询必须处理)。在多表之间查询必须处理表与表之间的连接关系。表与表之间的连接关系。SELECT ALL|DISTINCT FROM ,表,表2.WHERE 简单的联接查询针对多张表,一张表的结果要依靠另一张表为条件,才能查出.把两张表联接起来,形成逻辑上的一张表.技巧:找两张表之间的公共字段及联接条件结构:SELE FROM 表1,表2 WHER AND 联接条件(或者两张表的公共字段)联接条件:表名.字段名(或者表的别名.字段名)例5.6 找出工资多于1230元的职工号和他们所在城市.注意:一张表查出不能完成,结果需要两张表,职工表只有职工号,而仓库表有中只有城市.他们的公共字段为仓库号.联接

    6、条件:职工.仓库号=仓库.仓库号 一般条件:工资1230 两张表:职工,仓库 显示字段:职工号,城市 语句:SELE 职工号,城市 FROM 职工,仓库 WHERE (工资1230)AND(职工.仓库号=仓库.仓库号)例:找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市.分析条件:面积400 联接条件:(职工.仓库号=仓库.仓库号)查询涉及表:仓库,职工 查询结果字段:职工号,城市 SELE 职工号,城市 FROM 仓库,职工 WHERE(面积400)AND(职工.仓库号=仓库.仓库号)嵌套查询外查询的条件来自内查询的结果在SQL语句中,一个SELECTFROMWHERE语句称

    7、为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询或子查询。IN:属于关系,返回多个值NOT IN:不属于关系联接条件:公共字段名 IN(SELE 公共字段名 相当于联接中条件 表1.公共字段名=表2.公共字段名例题:哪些城市至少有一个仓库的职工工资1250元?SELE 城市 FROM 仓库表 WHERE 仓库号 IN(SELE 仓库号 FROM 职工 WHERE 工资=1250)IN:属于关系,返回多个值注意:仓库号 IN(SELE 仓库号相当于连接的条件:仓库.仓库号=职工.仓库号例:查询所有职工的工资都于1210元的仓库 的信息.SE

    8、LE*FROM 仓库 WHERE 仓库号 NOTIN(SELE 仓库号 FROM 工资=1210)分析没有错,但实际错了。应该为SELE*FROM 仓库 WHERE 仓库号NOT IN(SELE 仓库号 FROM 工资WHERE 工资=1210)AND(工资=1240)例:从供应商关系中检索出全部公司的信息,不工厂或其它供应商的信息.SELE*FROM 供应商 WHERE LIKE”%公司”例:找出不在北京的全部供应商信息.SELECT*FROM 供应商 WHERE 地址!=“北京”或者SELE*FROM 供应商 WHERE NOT(地址=“北京”)注:地址!=“北京”与NOT(地址=“北京”

    9、)等价只是两种不同的表达方式五、排序ORDER BY ASC/DESCASC升序,可以不用.DESC 降序例:按职工的工资值升序索出全部职工信息.SELE*FROM 职工 ORDER BY 工资 ASC例、先按仓库号排序,再按工资排序并输 出全部职工信息。注:这句话可这样叙述,对职工表的仓库号进行排序,如果仓库号相同再按工资排序。SELE*FROM 职工 ORDER BY 仓库号 DESC,工资注:ORDE BY 不能用在子查询中例:按职工的工资值升序检索出全部职工 信息。SELE*FROM 职工 ORDER BY 工资 降序:在所面加 DESC 例:先按仓库号排序,再按工资排序并输 出全部职

    10、工信息。对多个字段进行排序:SELE*FROM 职工ORDER BY 仓库号,工资简单的计算查询COUNT()-计数SUM()-求和AVG()-求平均值MAX()-求最大值MIN()-求最小值查询产生新字段查询中新字段查询中新字段:在查询的结果中多一个统计或计算的字段。定义格式定义格式:SELE SUM(工资)AS 总工资总工资 FROM 职工例例1:SELECT AVG(工资)AS 平均工资例例2:SELECT COUNT(职工号)AS 职工个数例:找出供应商所在地址的数目SELE COUNT(DIST 地址)FROM 供应商DIST 相同的地址例:求支付的工资总数SELE SUM(工资)F

    11、ROM 职工例:求北京和上海的仓库职工的工资总和SELE SUM(工资)FROM 职工,仓库 WHERE(城市=“北京”OR城市=“上海”)AND(职工.仓库号=仓库.仓库号)SELE SUM(工资)FROM 职工 WHERE 仓库号 IN(SELE 仓库号 FROM 仓库 WHERE 城市=“北京”OR城市=“上海”)例:求所有职工的工资都多于1210元的仓库的平均面积.SELE AVG(面积)AS 平均面积 FROM 仓 库 WHERE 仓库号 not IN(SELE 仓库号 FROM 职工 WHERE 工资=1210)and 仓库号 IN(SELE 仓库号 FROM 职工)例:求在WH2

    12、仓库工作的职工的最高工资值.SELE MAX(工资)FROM 职工 WHERE 仓库号=“WH2”分组与计算查询结构结构:GROUP BY HAVING 什么时候使用分组什么时候使用分组:需要统计统计、计算计算每个仓库每个职工,每个学生等含有“每个每个”提示信息需用。分组字段分组字段:如每个职工就是职工号,每个学生就是学生的学号限定条件:至少选修两门以课,至少两个职工例例:求每个每个仓库的职工的平均工资 GROUP BY 一般跟在WHERE后,如果没有就跟在FROM 之后SELE 仓库号,AVG(工资)FROM 职工 GROUP BY 仓库号例例:求至少有两个职工的每个仓库的平均 工资。SEL

    13、E 仓库号,COUNT(*),AVG(工资)FROM 职工 GROUP BY 仓库号 HAVING COUNT(*)=2八、利用空值查询空值空值:指不确定的值判断为不为空判断为不为空:IS NULL(空)IS NOT NULL例例:找出尚未确定供应商的订购单尚未确定供应商的订购单。SELE*FROM 订购单 WHERE 供应商号 IS NULL不能用=NULL例例:列出已经确定了供应商的订购单信息。SELE*FROM 订购单 WHERE 订购信息 IS NOT NULL九、别名和自联接查询别名:别名不是必须的,但是在关系的自联别名:别名不是必须的,但是在关系的自联接操作中,别名必不可少接操作中

    14、,别名必不可少作用作用:一般用在多表查询或多字段查询上公共的字段:公共的字段:作为联接条件:别名别名1.字段名=别名别名2.字段名自联接自联接:指同一关系中与其自身联接一张表使用两次时,区分两次的使用情况一张表使用两次时,区分两次的使用情况例:根据雇员关系列出上一级经理及所领导的职工清单。SELE S.雇员名,“领导领导”,E.雇员雇员姓名 FROM 雇员 S,雇员 E WHERE S.雇员号=E.经理常量:领导“雇员号雇员姓名经理E3赵涌E4钱潮E3E6孙洁E3E8李渌E6十、内外层相关嵌套查询十、内外层相关嵌套查询这张表查询的结果要依靠这张表的另一个查询条件而取得,采用自我嵌套的方法来实现

    15、。方法:嵌套条件为 别名1.公共字段=别名2.公共字段员工号相同进行比较。自嵌套和自联接的区别自嵌套和自联接的区别:自联接通过公共的记录来联接,自嵌套通过公共字段来联接例:列出每个职工经手的具有最高总金额的订购单信息。SELE OUT.职工号,OUT.供应商号,OUT.订购日期,OUT.总金额 FROM 订购单 OUTWHERE 总金额=(SELE MAX(总金额)FROM 订购单 INNER1 WHERE OUT.职工号=INNER1.职工号)十一、使用量词查询ANY、SOME:查询的结果一行为真则结果为真。ALL:子查询中所有行为为真查询的结果就为真NOT EXISTS:检查子查询中是否有

    16、结果返回。NOT EXISTS与与NOT IN之间联系之间联系:可以相互转换,WHERE NOT EXISTS(SELECT*WHERE A.仓库号仓库号=B.仓库号仓库号等价于仓库号仓库号 NOT IN(SELECT 仓库号仓库号 区别:区别:NOT EXISTS指是否存在一个返回结果,NOT IN 指具体的返回值。检索那些仓库中还没有职工的仓库的信息。这里的查询是没有职工或不存在职工,所以可以使用谓词NOT EXISTS:SELECT*FROM 仓库 WHERE NOT EXISTS;(SELECT*FROM 职工 WHERE 仓库号=仓库仓库号)注意:这里的内层查询引用了外层查询的表,只

    17、有这样使用谓词EXISTS或NOT EXISTS才有意义。所以这类查询也都是内、外层互相关嵌套查询。以上的查询等价于:SELECT*FROM 仓库 WHERE 仓库号 NOT IN;(SELECT 仓库号 FROM 职工)检索那些仓库中至少已经有一个职工的仓库的信息。SELECT*FROM 仓库 WHERE EXISTS;(SELECT*FROM 职工 WHERE 仓库号=仓库仓库号)它等价于:SELECT*FROM 仓库 WHERE 仓库号 IN(SELECT 仓库号 FROM 职工)注意:NOT EXISTS 只是判断子查询中是否有或没有结果返回,它本身并没有任何运算或比较。检索有职工的工

    18、资大于等于WH1仓库中任何一名职工工资的仓库号。这个查询可以使用ANY或SOME量词。SELECT DISTINCT仓库号 FROM 职工 WHERE 工资=ANY;(SELECT 工资 FROM 职工 WHERE 仓库号=“WH1”)它等价于:SELECT DISTINCT仓库号 FROM 职工 WHERE 工资=;(SELECT MIN(工资)FROM 职工WHERE 仓库号=“WH1”)检索有职工的工资大于或等于WH1仓库中所有职工工资的仓库号。这个查询使用ALL量词。SELECT DISTINCT仓库号 FROM 职工 WHERE 工资=ALL (SELECT 工资 FROM 职工 W

    19、HERE 仓库号=“WH1”)它等价于:SELECT DISTINCT仓库号 FROM 职工 WHERE 工资=;(SELECT MAX(工资)FROM 职工WHERE 仓库号=“WH1”)十二、超联接查询内联接n格式:表1 INNER JOIN表2 on 联接条件n满足条件:两张表都有的联接记录。左联接n格式:表1 LEFT JOIN表2 ON 联接条件n满足条件:两张表都有的联接记录,且满足左表中(表1)的记录右联接n格式:表1 RIGHT JOIN 表2 ON 联接条件n满足条件:两张表都有的联接记录,且满足右表中(表2)的记录全联接n格式:表1 FULL JOIN 表2 ON 联接条件

    20、n 满足条件:两张表都有的联接记录,且满足右表中(表1)和表2所有的记录内部联接,即只有满足联接条件的记录才 出现在查询结果中。SELECT 仓库仓库号,城市,面积,职工号,工资;FROM 仓库(INNER)JOIN 职工;ON 仓库仓库号=职工仓库号 等价:SELECT 仓库仓库号,城市,面积,职工号,工资;FROM 仓库,职工 WHERE 仓库仓库号=职工仓库号左联接:即除满足联接条件的记录出现在查询结果中外,第一个表中不满足联接条件的记录也出现在查询结果中。SELECT 仓库仓库号,城市,面积,职工号,工资;FROM 仓库 LEFT JOIN 职工 ON 仓库.仓库号=职工.仓库号右联接

    21、:即除满足联接条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中。SELECT 仓库仓库号,城市,面积,职工号,工资;FROM 仓库 LEFT JOIN 职工 ON 仓库.仓库号=职工.仓库号全联接:即除满足联接条件的记录出现在查询结果中外,两个表中不满足联接条件的记录也出现在查询结果中。SELECT 仓库仓库号,城市,面积,职工号,工资;FROM 仓库 LEFT JOIN 职工 ON 仓库.仓库号=职工.仓库号注:JION 的位置和ON联接条件相反 SELECT 仓库仓库号,城市,面积,职工号,工资 FROM 供应商 JION 订购单 JION 职工 JION 仓

    22、库 ON 仓库.仓库号=职工.仓库号 ON 订购单.职工号=职工.职工号 ON 供应商号.供应商号=订购单.供应商号.十三、集合的并运算将两个SELE 的查询结果合并成一个查询结果,要求:相同的字段,值域,数据类型,取值范围.例:显示结果为北京和上的仓库信息:SELE*FROM 仓库 WHERE 城市=“北京”;UNION SELE*FROM 仓库 WHERE 城市=“上海”等价于:SELE*FROM 仓库 WHERE 城市=“北京”OR 城市=“上海”十四十四 查询去向查询去向1.浏览方式显示记录(一般就是浏览)2.将查询结果存放到数组中(INTO ARRA 数组名)3.将查询结果存放在临时文件中(INTO CURSOR TMP)4.将查询结果存放在永久的表中(INTO TABLE/DBF 表名)5.将查询结果存放在文本文件中(TO FILE 文本.TXT)6.将查询结果直接输出打印机中(TO PRINTER)

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第四章数据查询课件.ppt
    链接地址:https://www.163wenku.com/p-5094658.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库