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

    数据库标准语言SQL.ppt

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

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

    数据库标准语言SQL.ppt

    目 录上一页下一页退 出目 录上一页下一页退 出第五章第五章 数据库标准语言数据库标准语言SQLSQL第六章第六章 查询与视图查询与视图第七章第七章 程序设计基础程序设计基础第八章第八章 表单设计与应用表单设计与应用第十一章第十一章 开发应用程序开发应用程序第九章第九章 菜单设计与应用菜单设计与应用第十章第十章 报表设计报表设计目 录目 录上一页下一页退 出第五章 关系数据库标准语言SQLu本章要点:本章要点:SQL的基本概念的基本概念SQL的数据查询功能:简单查询、嵌套查询、的数据查询功能:简单查询、嵌套查询、联接查询、分组和计算查询、集合的并运算联接查询、分组和计算查询、集合的并运算SQL的数据操作功能:删除(的数据操作功能:删除(DELETESQL)、)、插入(插入(INSERTSQL)、更新()、更新(UPDATESQL)SQL的数据定义功能:表的定义、表的删除、的数据定义功能:表的定义、表的删除、表结构的修改、视图的定义表结构的修改、视图的定义目 录上一页下一页退 出第五章 关系数据库标准语言SQL SQL是结构化查询语言是结构化查询语言Structured Query Language的缩写。查询是的缩写。查询是SQL语言语言的重要组成部分,但不是全部,的重要组成部分,但不是全部,SQL还包含还包含数据定义、数据操纵和数据控制功能等部分。数据定义、数据操纵和数据控制功能等部分。现在所有的关系数据库管理系统都支持现在所有的关系数据库管理系统都支持SQL。FoxPro从从2.5For DOS版就开始支持版就开始支持SQL,现在的现在的VF当然在这方面更加完善。当然在这方面更加完善。目 录上一页下一页退 出表表5.1 SQL命令动词命令动词SQL功能功能 命令动词命令动词 数据查询数据查询 SELECT 数据定义数据定义 CREATE、DROP、ALTER数据操纵数据操纵 INSERT、UPDATE、DELETE 数据控制数据控制 GRANT、REVOKE 目 录上一页下一页退 出SQL语言具有如下主要特点:语言具有如下主要特点:SQL是一种一体化的语言,它包括了数据定义、数据查询、数据是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。工作。SQL语言是一种高度非过程化的语言,它没有必要一步步地告诉语言是一种高度非过程化的语言,它没有必要一步步地告诉计算机计算机“如何如何”去做,而只需要描述清楚用户要去做,而只需要描述清楚用户要“做什么做什么”,SQL语言就可以将要求交给系统,自动完成全部工作。语言就可以将要求交给系统,自动完成全部工作。SQL语言非常简洁。语言非常简洁。SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。语言中以程序方式使用。VF是将是将SQL语言直接融入到自身的语语言直接融入到自身的语言之中,使用起来更方便。言之中,使用起来更方便。目 录上一页下一页退 出查询功能:查询功能:SELECT ALL|DISTINCT.,.FROM,WHEREANDGROUP BY,HAVINGORDER BYASC|DESC,ASC|DESC目 录上一页下一页退 出命令中各参数的含义如下:命令中各参数的含义如下:SELECT是该命令的主要关键字。是该命令的主要关键字。ALL|DISTINCT表示表示ALL和和DISTINCT任选其任选其 一,一,ALL表表示所有的记录,示所有的记录,DISTINCT表示表示 去掉重复记录。去掉重复记录。FROM 说明要查询的数据来自哪个或哪些表,可以对单个说明要查询的数据来自哪个或哪些表,可以对单个表或多个表进行查询;表或多个表进行查询;WHERE说明查询条件,即选择元组说明查询条件,即选择元组的条件;的条件;目 录上一页下一页退 出GROUP BY 短语用于对查询结果进行分组,可以利用短语用于对查询结果进行分组,可以利用它进行分组汇总;它进行分组汇总;HAVING 短语必须跟随短语必须跟随GROUP BY使用,它用来限定使用,它用来限定分组必须满足的条件;分组必须满足的条件;ORDER BY 短语用来对查询的结果进行排序短语用来对查询的结果进行排序目 录上一页下一页退 出简单查询简单查询例例1、从职工关系中检索所有工资值。、从职工关系中检索所有工资值。SELECT 工资工资 FROM 职工职工可以看到在结果中有重复值,若要去掉重复值只需要指定可以看到在结果中有重复值,若要去掉重复值只需要指定DISTINCT短语。短语。SELECT DISTINCT 工资工资 FROM 职工职工目 录上一页下一页退 出2、查询仓库关系中的所有元组。、查询仓库关系中的所有元组。SELECT*FROM 仓库仓库目 录上一页下一页退 出3、查询工资多于、查询工资多于1230元的职工号。元的职工号。SELECT 职工号职工号 FROM 职工职工 WHERE 工资工资 1230目 录上一页下一页退 出 4、查询哪些仓库有工资多于、查询哪些仓库有工资多于1210元的职工。元的职工。SELECT DISTINCT 仓库号仓库号 FROM 职工表职工表 WHERE 工资工资 1210目 录上一页下一页退 出5、查询在仓库、查询在仓库“wh1”或或“wh2”工作,并且工资少于工作,并且工资少于1250元的元的职工号。职工号。SELECT 职工号职工号 FROM 职工表职工表;&(续行符)(续行符)WHERE 工资工资1230)AND(职工职工.仓库号仓库号=仓库仓库.仓库号仓库号注:由表可知,仓库和职工之间存在着一个一对多的联系。当FROM之后的多个关系中含有相同的属性名时,这时必须用关系前缀直接指明属性所属的关系,如职工.仓库号,“.”前关系名,后是属性名目 录上一页下一页退 出2、找出工作在面积大于、找出工作在面积大于400的仓库的职工号以及这些职工工作所在的仓库的职工号以及这些职工工作所在的城市。的城市。SELECT 职工号职工号,城市城市 FROM 仓库仓库,职工表职工表;WHERE (面积面积400)AND(职工表职工表.仓库号仓库号=仓库仓库.仓库号仓库号)目 录上一页下一页退 出嵌套查询嵌套查询 SELECT嵌套查询是一种子查询,子查询的特征是能够将一嵌套查询是一种子查询,子查询的特征是能够将一个查询的结果作为另一个查询的一部分,子查询是对查询结果个查询的结果作为另一个查询的一部分,子查询是对查询结果的查询。在的查询。在SQL中,有些查询不用子查询无法表达。子查询要中,有些查询不用子查询无法表达。子查询要加括号,并且与加括号,并且与SELECT语句的形式类似,也有语句的形式类似,也有FROM子句,以子句,以及可选择的及可选择的WHERE、GROUP BY和和HAVING子句等。子查询中子句等。子查询中的子句与的子句与SELECT语句中的子句格式相同,用于子查询时,它语句中的子句格式相同,用于子查询时,它们执行正常的功能,但是子查询和们执行正常的功能,但是子查询和SELECT语句还是有如下区语句还是有如下区别:别:目 录上一页下一页退 出(1)子查询通常必须生成单字段数据作为其查询结果,即必须)子查询通常必须生成单字段数据作为其查询结果,即必须是一个确定的项。若为一个集合,则需要使用谓词演算查询。是一个确定的项。若为一个集合,则需要使用谓词演算查询。(2)ORDER BY子句不能用于子查询,子查询结果只是被主查子句不能用于子查询,子查询结果只是被主查询内部使用,对用户是不可见的,所以对它们的任何排序都是询内部使用,对用户是不可见的,所以对它们的任何排序都是没有意义的。没有意义的。目 录上一页下一页退 出例例1、哪些城市至少有一个仓库的职工工资为、哪些城市至少有一个仓库的职工工资为1250元?元?SELECT 城市城市 FROM 仓库仓库 WHERE 仓库号仓库号 IN;(SELECT 仓库号仓库号 FROM 职工职工 WHERE 工资工资=1250)目 录上一页下一页退 出2.查询所有职工的工资都多于查询所有职工的工资都多于1210元的仓库的信息。元的仓库的信息。此查询也可描述为:没有一个职工的工资少于或等于此查询也可描述为:没有一个职工的工资少于或等于1210元的仓元的仓库的信息。库的信息。SELECT*FROM 仓库仓库 WHERE 仓库号仓库号 NOT IN;(SELECT 仓库号仓库号 FROM 职工表职工表 WHERE 工资工资=1210)目 录上一页下一页退 出注:尽管在“武汉“的”wh4”仓库还没有职工,但该仓库的信息也被检索出来了,所以必须认真分析检索要求,写出正确的SQL命令。如果要求排除那些还没有职工的仓库,检索要求可以叙述为:检索所有职工的工资都多于1210元的仓库的信息,并且该仓库至少要有一名职工。SELECT*FROM 仓库仓库 WHERE 仓库号仓库号 NOT IN;(SELECT 仓库号仓库号 FROM 职工表职工表 WHERE 工资工资 =1220 AND工资工资=1240)目 录上一页下一页退 出2、从供应商关系中检索出全部公司的信息,不要工厂或其他供应、从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息。这是一个字符串匹配的查询,显然应该使用商的信息。这是一个字符串匹配的查询,显然应该使用LIKE运运算符。算符。SELECT*FROM 供应商供应商 WHERE 供应商名供应商名 LIKE“%公司公司”目 录上一页下一页退 出3、找出不在北京的全部供应商信息。、找出不在北京的全部供应商信息。SELECT*FROM 供应商供应商 WHERE 地址地址!=“北京北京”SELECT*FROM供应商供应商WHERE NOT(地址地址=“北京北京”)NOT的应用范围很广,比如,可以有的应用范围很广,比如,可以有NOT IN、NOT BETWEEN等。若提出和例等。若提出和例1相反的请求,找出工资不在相反的请求,找出工资不在1220元和元和1240元之间的全部职工信息,可以用命令:元之间的全部职工信息,可以用命令:SELECT*FROM 职工表职工表 WHERE 工资工资 NOT BETWEEN 1220 AND 1240目 录上一页下一页退 出排序排序使用使用SQLSELECT可以将查询结果排序,排的短语是可以将查询结果排序,排的短语是ORDER BY,具体格式如下:,具体格式如下:ORDER BY 字段字段1 ASCDESC,字段字段2 ASCDESC 由以上格式可看出,可以按升序(由以上格式可看出,可以按升序(ASC)或降序)或降序(DESC)排序,允许按一列或多列排序。)排序,允许按一列或多列排序。目 录上一页下一页退 出1、按职工的工资值升序检索出全部职工信息。、按职工的工资值升序检索出全部职工信息。SELECT*FROM 职工表职工表 ORDER BY 工资(升序)工资(升序)目 录上一页下一页退 出2、先按仓库号排序,再按工资排序并输出全部职工信息。、先按仓库号排序,再按工资排序并输出全部职工信息。SELECT*FROM 职工表职工表 ORDER BY 仓库号仓库号,工资(升序)工资(升序)注:ORDER BY是对最终的查询结果进行排序,不可以在子查询中使用该短语。目 录上一页下一页退 出简单的计算查询简单的计算查询SQL命令不仅具有一般的检索能力,而且还有计算方式的命令不仅具有一般的检索能力,而且还有计算方式的检索,比如检索职工的平均工资、检索某个仓库中职工的最高检索,比如检索职工的平均工资、检索某个仓库中职工的最高工资值等。用于计算检索的函数有:工资值等。用于计算检索的函数有:(1)COUNT计数计数(2)SUM求和求和(3)AVG计算平均值计算平均值(4)MAX求最大值求最大值(5)MIN求最小值求最小值这些函数可以用在这些函数可以用在SELECT短语中对查询结果进行计算。短语中对查询结果进行计算。目 录上一页下一页退 出1、找出供应商所在地的数目。、找出供应商所在地的数目。SELECT COUNT(DISTINCT 地址地址)FROM 供应商供应商 注:除非对关系中的元组个数进行计数,一般COUNT 函数应该使用DISTINCT。如:SELECT COUNT(*)FROM 供应商 将给出供应商关系中的记录数。目 录上一页下一页退 出2、求支付的工资总数。、求支付的工资总数。SELECT SUM(工资工资)FROM 职工职工 这个结果是职工关系中的工资值的总和,它并不管是否有重复值。这个结果是职工关系中的工资值的总和,它并不管是否有重复值。这时若使用命令:这时若使用命令:SELECT SUM(DISTINCT 工资工资)FROM 职工职工3、求北京和上海的仓库职工的工资总和。、求北京和上海的仓库职工的工资总和。SELECT SUM(工资工资)FROM 职工表职工表 WHERE 仓库号仓库号 IN;(SELECT 仓库号仓库号 FROM 仓库仓库 WHERE 城市城市=”北北京京”OR 城市城市=”上海上海”)4、求所有职工的工资都多于、求所有职工的工资都多于1210元的仓库的平均面积。元的仓库的平均面积。SELECT AVG(面积面积)FROM 职工表职工表 WHERE 仓库号仓库号 NOT IN;(SELECT 仓库号仓库号 FROM 职工表职工表 WHERE 工资工资=1210)目 录上一页下一页退 出注:以上结果的运算包含了没有职工的wh4仓库。若要排除没有职工的仓库,就改为:SELECT AVG(工资工资)FROM 职工表职工表 WHERE 仓库号仓库号 NOT IN;(SELECT 仓库号仓库号 FROM 职工表职工表 WHERE 工资工资=2注:HAVING子句总是跟在GROUP BY子句之后,不可以单独使用。HAVING子句和WHER子句不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组。目 录上一页下一页退 出利用空值查询利用空值查询 在第四章介绍过空值的概念,在第四章介绍过空值的概念,SQL支持空值,当然也可以支持空值,当然也可以利用空值进行查询。利用空值进行查询。IS NULLIS NOT NULL假设在订购单关假设在订购单关系中,一名职工正在准备订购单,但尚未选定供应商,这样若系中,一名职工正在准备订购单,但尚未选定供应商,这样若把信息存入数据库,则供应商号和订购日期两个属性均为空值。把信息存入数据库,则供应商号和订购日期两个属性均为空值。目 录上一页下一页退 出1、找出尚未确定供应商的订购单。、找出尚未确定供应商的订购单。SELECT*FROM 订购单订购单 WHERE 供应商号供应商号 IS NULL注:查询空值是要使用IS NULL,而NULL是无效的,因为空值不是一个确定的值,所以不能用”=”运算符进行比较。目 录上一页下一页退 出2、列出已经确定了供应商的订购单信息。、列出已经确定了供应商的订购单信息。SELECT*FROM 订购单订购单 WHERE 供应商号供应商号 IS NOT NULL目 录上一页下一页退 出别名与自联接查询别名与自联接查询在联接操作中,经常需要使用关系名作前缀,有时这样在联接操作中,经常需要使用关系名作前缀,有时这样显得很麻烦。因此,显得很麻烦。因此,SQL允许在允许在FROM短语中为关系名定义短语中为关系名定义别名,格式为:别名,格式为:目 录上一页下一页退 出比如:如下的联接语句是一个基于比如:如下的联接语句是一个基于4个关系的联接查询,其中必须个关系的联接查询,其中必须使用关系名作前缀;使用关系名作前缀;SELECT 供应商供应商 FROM 供应商供应商,订购单订购单,职工职工,仓库仓库;WHERE 地址地址=”北京北京”AND城市城市=”北京北京”;AND 供应商供应商.供应商号供应商号=订购单订购单.供应商号供应商号;AND 订购单订购单.职工号职工号=职工职工.职工号职工号;AND 职工职工.仓库号仓库号=仓库仓库.仓库号仓库号目 录上一页下一页退 出在上面的查询中,如果使用别名就会简单一些,如下是使用了别在上面的查询中,如果使用别名就会简单一些,如下是使用了别名的同样的联接查询语句。名的同样的联接查询语句。SELECT 供应商供应商 FROM 供应商供应商 S,订购单订购单 P,职工职工 E,仓库仓库 W;WHERE 地址地址=”北京北京”AND城市城市=”北京北京”;AND S.供应商号供应商号=P.供应商号供应商号;AND P.职工号职工号=E.职工号职工号;AND E.仓库号仓库号=W.仓库号仓库号目 录上一页下一页退 出 在这个例子中,别名并不必须的,但是在关系的自联接操在这个例子中,别名并不必须的,但是在关系的自联接操作中,别名就是必不可少的了。作中,别名就是必不可少的了。SQL不仅可以对多个关系实行不仅可以对多个关系实行联接操作,也可以将同一关系与其自身进行联接,这种联接就联接操作,也可以将同一关系与其自身进行联接,这种联接就称为自联接。在可以进行这种自联接操作的关系上,实际存在称为自联接。在可以进行这种自联接操作的关系上,实际存在着一种特殊的递归联系,即关系中的一些元组,根据出自同一着一种特殊的递归联系,即关系中的一些元组,根据出自同一值域的两个不同的属性,可以与另外一些元组有一种对应关系值域的两个不同的属性,可以与另外一些元组有一种对应关系(一对多的联系)。(一对多的联系)。目 录上一页下一页退 出例:例:雇员关系(雇员号,雇号姓名,经理)其中雇员号和经理两个雇员关系(雇员号,雇号姓名,经理)其中雇员号和经理两个属性出自同一个值域,同一元组的这两个属性是属性出自同一个值域,同一元组的这两个属性是“上、下级上、下级”关系。关系。目 录上一页下一页退 出雇员号雇员号 雇员姓名雇员姓名 经理经理目 录上一页下一页退 出雇员号雇员号 雇员姓名雇员姓名 经理经理 E3 赵涌赵涌 E3 E4 钱潮钱潮 E3 E6孙洁孙洁 E6 E8 李咏李咏 经理经理 目 录上一页下一页退 出雇员号雇员号 雇员姓名雇员姓名 雇员姓名雇员姓名 经理经理 E3 赵涌赵涌 赵涌赵涌 E3 E4 钱潮钱潮 钱潮钱潮 E3 E6 孙洁孙洁 孙洁孙洁 E6E8 李咏李咏 李咏李咏 经理经理 目 录上一页下一页退 出例:例:根据雇员关系列出上一级经理及其所领导的职员清单根据雇员关系列出上一级经理及其所领导的职员清单SELECT s.雇员姓名雇员姓名,“领导领导”,e.雇员姓名雇员姓名 FROM 雇员雇员s,雇员雇员e;WHERE s.雇员号雇员号=e.经理经理这里通过定义别名形成了两个逻辑关系,一个是经理关系这里通过定义别名形成了两个逻辑关系,一个是经理关系S,一个是雇员关系一个是雇员关系E,结果在关系,结果在关系S和和E上的联接实现了检索要上的联接实现了检索要求。另外,在求。另外,在SELECT短语中可以有变量,如这里的短语中可以有变量,如这里的“领导领导”。目 录上一页下一页退 出内外层互相关嵌套查询内外层互相关嵌套查询 上面讨论的嵌套查询都是外层查询依赖于内层查询的结果,上面讨论的嵌套查询都是外层查询依赖于内层查询的结果,而内层查询与外层查询无关。事实上,有时也需要内、外层互而内层查询与外层查询无关。事实上,有时也需要内、外层互相关的查询,这里内层查询的条件需要外层查询提供值,而外相关的查询,这里内层查询的条件需要外层查询提供值,而外层查询的条件需要内层查询的结果。层查询的条件需要内层查询的结果。目 录上一页下一页退 出例:在订购单表中加入一个新字段总金额,说明完例:在订购单表中加入一个新字段总金额,说明完 成该订购单成该订购单所应付出的总金额数。所应付出的总金额数。1、列出每个职工经手的具有最高总金额的订购、列出每个职工经手的具有最高总金额的订购 单信息。单信息。SELECT out.职工号职工号,out.供应商号供应商号,out.订购订购单号单号,out.订购日期订购日期,out.总金额总金额;FROM 订购单订购单 out WHERE 总金额总金额=;(SELECT MAX(总金额总金额)FROM 订购单订购单 inner1;WHERE out.职工号职工号=inner1.职工号职工号)目 录上一页下一页退 出 在这个查询中,外层查询和内层查询使用同一个关系,在这个查询中,外层查询和内层查询使用同一个关系,给它们分别指定别名给它们分别指定别名out和和inner1。外层查询提供。外层查询提供out关系中关系中每个元组的职工号值给内层查询使用;内层查询利用这个职每个元组的职工号值给内层查询使用;内层查询利用这个职工号值,确定该职工经手的具有最高总金额的订购单的总金工号值,确定该职工经手的具有最高总金额的订购单的总金额;随后外层查询再根据额;随后外层查询再根据out关系的同一元组的总金额值与关系的同一元组的总金额值与该总金额值进行比较,如果相等,则该元组被选择。该总金额值进行比较,如果相等,则该元组被选择。目 录上一页下一页退 出使用量词和谓词的查询使用量词和谓词的查询ANYALLSOME(子查询)(子查询)NOTEXISTS(子查询)(子查询)ANY、ALL和和SOME是量词,其中是量词,其中ANY和和SOME是同义词,是同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果在进行比较运算时只要子查询中有一行能使结果为真,则结果就为真;而就为真;而ALL则要求子查询中的所有行都使结果为真时,结则要求子查询中的所有行都使结果为真时,结果才为真。果才为真。EXISTS是谓词,是谓词,EXISTS或或NOT EXISTS是用来检查在子查询是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。中是否有结果返回,即存在元组或不存在元组。目 录上一页下一页退 出例:例:1、检索那些仓库中还没有职工的仓库的、检索那些仓库中还没有职工的仓库的 信息。信息。这里的查询是没有职工或不存在职工,所以可以使用谓词这里的查询是没有职工或不存在职工,所以可以使用谓词NOT EXISTS:SELECT*FROM 仓库仓库 WHERE NOT EXISTS;(SELECT*FROM 职工表职工表 WHERE 仓库仓库.仓库号仓库号=职工表职工表.仓库号仓库号)目 录上一页下一页退 出注:这里的内层查询引用了外层查询的表,只有这样使用谓词EXISTS或NOT EXISTS才有意义。所以这类查询也都是内、外层互相关嵌套查询。以上的查询等价于:SELECT*FROM 仓库仓库 WHERE仓库号仓库号NOT IN;(SELECT仓库号仓库号FROM 职工表职工表)目 录上一页下一页退 出2、检索哪些仓库中至少已经有一个职工的仓库的信息。、检索哪些仓库中至少已经有一个职工的仓库的信息。SELECT*FROM 仓库仓库 WHERE EXISTS;(SELECT*FROM 职工表职工表 WHERE 仓库号仓库号=仓库仓库.仓库号仓库号)它等价于:它等价于:SELECT*FROM 仓库仓库 WHERE仓库号仓库号IN;(SELECT仓库号仓库号FROM 职工表职工表)注:NOTEXISTS只是判断子查询中是否有或没有结果返回,它本身并没有任何运算或比较。目 录上一页下一页退 出3、检索有职工的工资大于或等于、检索有职工的工资大于或等于wh1仓库中任何一名职工工资的仓库中任何一名职工工资的仓库号。仓库号。这个查询可以使用这个查询可以使用ANY或或SOME量词。量词。SELECT DISTINCT仓库号仓库号FROM 职工表职工表 WHERE 工资工资=ANY;(SELECT*FROM 职工表职工表 WHERE 仓库号仓库号=”wh1”)它等价于:它等价于:SELECT DISTINCT仓库号仓库号FROM 职工表职工表 WHERE 工工资资=;(SELECT MIN(工资工资)FROM 职工表职工表 WHERE 仓库号仓库号=”wh1”)目 录上一页下一页退 出4、检索有职工的工资大于或等于、检索有职工的工资大于或等于wh1仓库中所有职工工资的仓库号。仓库中所有职工工资的仓库号。这个查询可以使用这个查询可以使用ALL量词。量词。SELECT DISTINCT仓库号仓库号FROM 职工表职工表 WHERE 工资工资=ALL;(SELECT*FROM 职工表职工表 WHERE 仓库号仓库号=”wh1”)它等价于:它等价于:SELECT DISTINCT仓库号仓库号FROM 职工表职工表 WHERE 工资工资=;(SELECT MAX(工资工资)FROM 职工表职工表 WHERE 仓库号仓库号=”wh1”)目 录上一页下一页退 出5.2.12 超联接查询超联接超联接:首先保证一个表中满足条件的元组都在结果表中;然首先保证一个表中满足条件的元组都在结果表中;然 后后 将满足联接条件的元组与另一个表的元组进行联接,不满将满足联接条件的元组与另一个表的元组进行联接,不满 足联接条件的则将应来自另一表的属性值置为空值。足联接条件的则将应来自另一表的属性值置为空值。内部联接内部联接左联接左联接右联接右联接全联接全联接目 录上一页下一页退 出内部联接:只有满足联接条件的记录才出现在查询结果中。内部联接:只有满足联接条件的记录才出现在查询结果中。目 录上一页下一页退 出左联接:即除满足联接条件的记录出现在查询结果中外,左联接:即除满足联接条件的记录出现在查询结果中外,第一个表中不满足联接条件的记录也出现在查询结果中。第一个表中不满足联接条件的记录也出现在查询结果中。目 录上一页下一页退 出右联接:即除满足联接条件的记录出现在查询结果中外,右联接:即除满足联接条件的记录出现在查询结果中外,第二个表中不满足联接条件的记录也出现在查询结果中。第二个表中不满足联接条件的记录也出现在查询结果中。目 录上一页下一页退 出全联接:除满足条件的记录出现,两表中不满足联系条件的记录也出全联接:除满足条件的记录出现,两表中不满足联系条件的记录也出现在查询结果中。现在查询结果中。目 录上一页下一页退 出格式:格式:SELECTFROM Table INNER|LEFT|RIGHT|FULL Join Table ON Join ConditionWHERE目 录上一页下一页退 出例例1:内部联接。:内部联接。Select 仓库仓库.仓库号仓库号,城市城市,面积面积,职工号职工号,工资工资;from 仓库仓库 inner join 职工职工;on 仓库仓库.仓库号仓库号=职工职工.仓库号仓库号例例2:左联接。:左联接。Select 仓库仓库.仓库号仓库号,城市城市,面积面积,职工号职工号,工资工资;from 仓库仓库 left join 职工职工;on 仓库仓库.仓库号仓库号=职工职工.仓库号仓库号目 录上一页下一页退 出例例3:右联接。:右联接。Select 职工职工.仓库号仓库号,城市城市,面积面积,职工号职工号,工资工资;from 仓库仓库 right join 职工职工;on 仓库仓库.仓库号仓库号=职工职工.仓库号仓库号例例4:全联接。:全联接。Select 仓库仓库.仓库号仓库号,职工职工.仓库号仓库号,城市城市,面积面积,职工号职工号,工资工资;from 仓库仓库 full join 职工职工;on 仓库仓库.仓库号仓库号=职工职工.仓库号仓库号目 录上一页下一页退 出例例5:多表联接。找出供应商所在城市及其供货的仓库所在的城:多表联接。找出供应商所在城市及其供货的仓库所在的城市。市。SELECT 仓库仓库.仓库号仓库号,城市城市,供应商名供应商名,地址地址;FROM 供应商供应商 JOIN 订购单订购单 JOIN 职工职工 JOIN 仓库仓库;ON 职工职工.仓库号仓库号=仓库仓库.仓库号仓库号;ON 订购单订购单.职工号职工号=职工职工.职工号职工号;ON 供应商供应商.供应商号供应商号=订购单订购单.供应商号供应商号注:JOIN 的顺序和 ON的顺序正好相反。目 录上一页下一页退 出练习:练习:1.查找每个职工的订购单及订单的供应商名,结果按职工号升查找每个职工的订购单及订单的供应商名,结果按职工号升序排列(左联)。序排列(左联)。2.显示每个学生所先修的课程名及成绩。显示每个学生所先修的课程名及成绩。目 录上一页下一页退 出解答:解答:1.select 职工号职工号,订购单号订购单号,订购单订购单.供应商号供应商号,供应商名供应商名;from 订购单订购单 left join 供应商供应商;on 订购单订购单.供应商号供应商号=供应商供应商.供应商号供应商号 order by 职工号职工号 2.select 学生学生.学号学号,姓名姓名,课程名课程名,成绩成绩 from 学生学生;join 成绩成绩 join 课程课程 on 成绩成绩.课程号课程号=课程课程.课程号课程号;on 学生学生.学号学号=成绩成绩.学号学号目 录上一页下一页退 出知识点总结知识点总结:1.基本概念:超联接、内部联接、左基本概念:超联接、内部联接、左联接、右联接、全联接联接、右联接、全联接 2.学会使用学会使用SQL超联接查询语句。超联接查询语句。目 录上一页下一页退 出集合的并运算集合的并运算SQL支持集合的并(支持集合的并(UNION)运算,即可以将两个)运算,即可以将两个SELECT语句语句的查询结果通过并运算全并成一个查询结果。为了进行并运的查询结果通过并运算全并成一个查询结果。为了进行并运算,要求这样的两个查询结果具有相同的字段个数,并且对算,要求这样的两个查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域,即具有相同的数据类型和取应字段的值要出自同一个值域,即具有相同的数据类型和取值范围。值范围。例:以下语句的结果是城市以北京和上海的仓库信息;例:以下语句的结果是城市以北京和上海的仓库信息;SELECT*FROM 仓库仓库 WHERE 城市城市=”北京北京”;UNION;SELECT*FROM 仓库仓库 WHERE 城市城市=”上海上海”目 录上一页下一页退 出特殊查询特殊查询1.显示部分结果显示部分结果TOP nExpr PERCENT 其中其中nExpr是数字表达式,当不使用是数字表达式,当不使用PERCENT时,时,nExpr是是1至至32767间的整数,说明显示前几个记录;当使间的整数,说明显示前几个记录;当使用用PERCENT时,时,nExpr是是0.01至至99.99间的实数,说明显间的实数,说明显示结果中前百分之几的记录。注意:示结果中前百分之几的记录。注意:TOP短语要与短语要与ORDER BY短语同时使用才有效。短语同时使用才有效。目 录上一页下一页退 出1、查询工资最高的三位职工的信息查询工资最高的三位职工的信息SELECT*TOP 3 FROM 职工表职工表 ORDER BY 工资工资 DESC2、显示工资最低的那、显示工资最低的那30%职工的信息职工的信息SELECT*TOP 30 PERCENT FROM 职工表职工表 ORDER BY 职工职工目 录上一页下一页退 出查询结果去向查询结果去向1、将查询结果存放到数组中、将查询结果存放到数组中 INTO ARRAY ArrayName 一般存放查询结果的数组作为二维数组来使用,每行一条一般存放查询结果的数组作为二维数组来使用,每行一条记录,每列对应于查询结果的一列。查询结果存放在数组中,记录,每列对应于查询结果的一列。查询结果存放在数组中,可以非常方便地在程序中使用。可以非常方便地在程序中使用。将查询到的职工信息存放在数组将查询到的职工信息存放在数组tmp中中 SELECT*FROM 职工表职工表 INTO ARRAY tmp目 录上一页下一页退 出2、将查询结果存放在临时文件中、将查询结果存放在临时文件中 INTO CURSOR 临时文件名临时文件名 该命令产生的临时文件是一个只读的该命令产生的临时文件是一个只读的dbf文件,当查询结文件,当查询结 束后束后该临时文件是当前文件,可以像一般的该临时文件是当前文件,可以像一般的dbf文件一样文件一样 使用,但仅使用,但仅是只读。当关闭文件时该文件将自动删除。是只读。当关闭文件时该文件将自动删除。目 录上一页下一页退 出例:将查询到的职工信息存放在临时例:将查询到的职工信息存放在临时dbf文件文件tmp中中 SELECT*FROM 职工表职工表 INTO CURSOR tmp注:一般利用INTO CURSOR短语存放一些临时结果,如一些复杂的汇总可能需要分阶段完成,需要根据几个中间结果再汇总等,利用该短存放中间结果就非常合适,当使用完后这些临时文件会自动删除。目 录上一页下一页退 出3、将查询结果存放到永久表中、将查询结果存放到永久表中INTO DBF|TABLE 文件名文件名SELECT*TOP 3 FROM 职工表职工表 INTO TABLE highsal ORDER BY 工资工资 DESC4、将查询结果存放到文本文件中、将查询结果存放到文本文件中 TO FILE 文本文件名文本文件名 ADDITIVE 将查询结果存放到文本文件中,扩展名是将查询结果存放到文本文件中,扩展名是.txt,如如果使用果使用ADDITIVE结果将追加在原文件的尾部,结果将追加在原文件的尾部,否则否则将覆盖原有文件。将覆盖原有文件。目 录上一页下一页退 出例:例:将上例查询结果以文本的形式存储在文本文件将上例查询结果以文本的形式存储在文本文件tmp.txt中中SELECT*FROM 职工表职工表 TO tmp WHERE 工资工资500目 录上一页下一页退 出5、将查询结果直接输出到打印机、将查询结果直接输出到打印机 TO PRINTER PROMPT 可直接将查询结果输出到打印机,若使用可直接将查询结果输出到打印机,若使用 了了PROMPT选项,在选项,在开始打印之前会打开打开始打印之前会打开打 印机设置对话框。印机设置对话框。注:若在同一个查询中同时包括了注:若在同一个查询中同时包括了INTO和和TO子句,则子句,则TO子句不子句不起作用。起作用。目 录上一页下一页退 出SQL的操作功能:插入、更新、删除的操作功能:插入、更新、删除1、添加数据、添加数据格式一:格式一:INSERT INTO (,)VALUES(,)格式二:格式二:INSERT INTO 表名表名 FROM ARRAY 数组名数组名|FROM MEMVAR目 录上一页下一页退 出格式一格式一:是向指定的表中插入记录,当插入的不是完整的记录时,可是向指定的表中插入记录,当插入的不是完整的记录时,可以指定字段。以指定字段。VALUES用来给出具体的记录值用来给出具体的记录值格式二格式二:FROM ARRAY说明从指定的数组中插入记录值,说明从指定的数组中插入记录值,FROM MEMVAR说明根据同名的内存变量来插入记录值,如果同名的说明根据同名的内存变量来插入记录值,如果同名的变量不存在,那么相应的字段为默认值或空。变量不存在,那么相应的字段为默认值或空。例:往订购单关系中插入元组例:往订购单关系中插入元组(”e7”,”s4”,”or01”,2001/05/25)目 录上一页下一页退 出可用如下命令:可用如下命令:INSERT INTO 订购单订购单 VALUES(”e7”,”s4”,”or01”,2001/05/25)其中,其中,2001/05/25是日期型字段订购日期的值,请注意这里日期是日期型字段订购日期的值,请注意这里日期型数据的表示方式。型数据的表示方式。对以上情况,假设供应商尚未确定,那么只能先插入职工号和订购单两对以上情况,假设供应商尚未确定,那么只能先插入职工号和订购单两个属性的值,这里可用以下命令:个属性的值,这里可用以下命令:INSERT INTO 订购单订购单(职工号职工号,订购单号订购单号)VALUES(”e7”,”or0

    注意事项

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

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




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

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

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

    收起
    展开