零点起飞学Oracle之查询数据表.pptx_第1页
零点起飞学Oracle之查询数据表.pptx_第2页
零点起飞学Oracle之查询数据表.pptx_第3页
零点起飞学Oracle之查询数据表.pptx_第4页
零点起飞学Oracle之查询数据表.pptx_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章询问法数据表,询问法数据表对数据表来说是最频繁的操作。 Oracle的SQL查询语法在遵循SQL标准的同时具有独特的优点。 本章详细介绍了Oralce的SQL查询语句。 主要内容包括基本查询、子查询、关节语句、关联语句和阶层化查询。 3.1基本询问法方法是数据库服务器在客户端的请求时检索用户所需的信息材料,用用户确定的格式进行整理然后将结果返回给客户端。 使用select和from子句的查询是一个简单的查询。 select和from子句是查询语句的必需选项。 复杂的查询语句由最简单的基本查询组成。 本节重点介绍如何下载和安装示例数据库脚本,以及Oracle的基本查询语句。 3.1.1安装

2、示例数据库脚本。 安装Oracle 11g时未安装数据库示例。 如果在创建斯坦共和国时未选择安装示例,则可以从官方站点下载并安装Oracle 11g R2数据库示例用户。 在浏览器地址栏中输入Oracle官方网站的网站,然后将其网站数据库到Oracle网站。 可选择的下载地址、3.1.2查询关牛鼻子字select、select语句主要用于查询语句。 select牛鼻子字后面是查询结果中要显示的列名。 从from后面的表中检索这些个的列名。 如果要查询表中的所有数据,可以在选择之后使用 * 来表示对应表中的所有列。 不管查询语句有多复杂,最外层的select命令总是最后执行。 数据查询selec

3、t的基本语法如下: select列名from表名; 【例3-1】询问法简单的询问法员工表employees内的所有员工姓名。 3.1.3条件查询where子句在一个数据表中包含大量相关的记录数据。 在实际的应用中,大多只需要满足要求的记录查询密码的一部分。 在这种情况下,必须使用where条件子句。 where子句用于限定from子句中指定的数据源或每个数据源的运算结果集合。 【例3-2】对职员信息表employees,询问法DEPARTMENT_ID为“90”的职员信息。 【例3-3】本例是from子句的复杂情况,询问法各员工所属部门的具体信息。 3.1.4查询结果的重复记录删除distin

4、ct,查询过程中从表中检索的所有行的数据可能重复。 这是我们不想看的事情。 distinct牛鼻子字可以从返回的结果中删除重复的行,从而使返回的结果更加简单。 【例3-4】在jobs表中,如果询问法员工的最低工资分布状况,则在询问法时会发现重复记录。 为了消除重复的这些个查询密码,可以使用distinct牛鼻子字。 对3.1.5group by子句进行分组。 查询结果可以使用groupby子句对指定的列进行分组。 也就是说,如果将同一列分组,则通常位于where子句之后。 【例3-5】从表employees和表departmens调查各部门的员工总数,分别显示部门编号、部门名、总员工数的信息。

5、 3.1.6过滤分组的having子句。 通常,having子句与group by子句一起使用,并且在对分组结果进行集成修改后,可以使用having子句进一步过滤分组结果。 having和where子句的相似点是定义搜索条件。 要按一定条件过滤组,必须使用having子句。 【例3-6】having子句依赖于group by子句而存在。 例3-5查询部门数多的10人的部门信息记录查询密码。 对3.1.7order by子句进行排序。 orderby子句可以对查询结果进行排序,并可以使用ASC (升序)或DESC (降序)指定升序(从低到高)或降序(从高到低)。 如果省略ASC或DESC,则系统

6、在差动奥尔特中按升序排列。 order by的组合可以指定多个列。 查询的结果按第一列排序,与第一列具有相同值的数据行排序,然后按第二列排序。 order by子句通常写在where子句之后。【例3-7】在jobs表中调查员工的工资分布状况的结果,调查的结果表明没有指定排序规则的情况下,检索结果杂乱无章。 能够将该检索结果按照工资薪金水平低的顺序排列。 3.1.8 order by子句和group by子句。 如果数据库查询中同时存在order by和group by子句,则Oracle将首先执行group by子句,然后再进行排序操作定。 分组是指根据数据表中的所有记录查询密码中的一列或一列

7、进行分组。 分组查询必须使用group by子句。 group by子句指定分组标准,根据标准分割数据源,并循环处理每个组的数据。 使用order by子句对分组结果进行排序。 【例3-8】在例3-5中,从表employees和表departmens中询问法,可以得到各部门的员工总数、部门编号、部门名称、总员工数的信息。 查询后,可按各部门的员工总数按升序排序。 3.1.9当您使用order by和distinct、order by子句和distinct牛鼻子字作为云同步时,请注意,如果指定了SELECT DISTINCT,则order by子句中的项将出现在选择列表中。 【例3-9】从表em

8、ployees可以得到员工的工资状况。 在询问法时,显示员工姓名和员工工资,最后按工资的升序排列。3.2子查询、子查询通常可以嵌套在select、insert、update、delete语句中,也可以嵌套在其他子查询中。 只要可以使用表达式,就可以使用子查询。 子查询也称为内部查询或内部选择,包含子查询的语句也称为外部查询或外部选择。 子查询是本质上嵌入的select语句。 由于子查询是在外部查询返回的结果定径套中执行的,因此效率一定很低。 一般来说,子查询可以用于查询条件。 3.2子查询,【例3-10】例如,departments表列出了所有部门信息,但是当前部门有员工,而部分部门当前没有员

9、工。 使用表employees、departments查询员工存储在部门有员工的部门信息中。 3.3联盟语句可以使用集合运算来实现,即使有不同的查询结果数据定径套,但希望以一定的关系连接它们来构成数据定径套。 在Oracle数据库中,PL/SQL提供的运算符包括union、union all、intersect和minus。 这些个的集合运算都是二元运算,运算结果依然是一个查询密码集合。 最基本的运算是并行、交叉、差运算。 求3.3.1和集合,在PL/SQL中,可以用union运算符实现集合和的运算。 使用union运算符将两个或多个查询的结果合并成一个结果定径套。 此结果定径套包含联合查询中

10、所有查询的所有行。 union操作不同于使用连接连接两个表中的列的校正操作。 3.3.1求和集合,其基本语法如下: selectcommand union|unionallselectcommand.其中,select command表示一个查询表达式,该表达式将与另一个查询规范或查询表达式返回的数据合并的数据传回。 union指定组合多个结果定径套并作为单个结果定径套返回,ALL将所有行并入结果。 这包括重复的行。 如果未指定此残奥仪表,则删除重复的行。 以下是使用union求3.3.1和并将两个查询结果定径套组合在一起时必须满足的条件: 组合了union运算符的语句在所有选择列表中的表达式

11、数必须相同。 在union中组合的结果定径套的对应列或每个查询中使用的列必须具有相同的数据类型。 使用union运算符组合的每个语句的对应结果定径套中的列顺序必须相同,因为union运算符按每个查询中指定的顺序一对一地比较每列。 【例10-13】数据库中存在2个表格employees和employeenew,分别存储有参加公司的现有员工和新参加的员工的信息。 3.3.2求和集合,union all运算和union运算都是和集合运算。但是,“union all”并不只是简单地合并两个运算结果定径套,而排除重复数据。 这是与union运算的最大区别。 【例3-14】数据库中存在2个表格employ

12、ees和employeenew,调查表格中员工的名字和上位号码。 可以使用union all代替union来执行SQL语句,而无需删除重复的记录查询密码。 3.3.3求交,使用intersect运算实现集合交叉运算,返回intersect运算符左右两个查询返回的非重复值。 【例3-15个员工表employees和employeenew属于同一上位,询问法同名的员工姓名和上位号码的信息。 3.3.4求差定径套,minus算子可实现定径套差的运算。 也就是说,从左查询返回找不到右查询的所有非重复值。 【例3-16】使用MINUS运算符实现集合差运算。 3.3.5针对混合运算、这些个4种集合运算un

13、ion运算、uion all运算、intersect运算、minus运算,Oracle行政许可混合运算。 在混合运算中,这些个4个运算的优先顺序相同。 也就是说,按从左到右的顺序进行。 【例3-17】intersect和union all的混合运算如下所示。 【例3-18】首先,在进行了表employees和表employeenew的和运算之后,可以求出employees表和其和的差。 3.4连接查询在实际的操作中,通常需要从两个以上的表中向云同步查询相关数据,连接是满足这些个需要的技术。 使用连接,可以基于表之间的逻辑关系从两个或多个表中检索数据。 Oracle提供的表连接包括自然连接、内部

14、连接、外部连接和交叉连接。 3.4.1自然连接查询。 自然连接是一种比较特殊的等值连接,它自动对表中具有相同名称的列进行回查询密码匹配。 自然连接自动确定同名列并形成匹配。 连接后只剩下一列。 【例3-19】表employees和表jobs都包含job_id列。 两者可以进行自然连接操作。 3.4.1自然连接查询、自然连接实际上是自动指定搜索条件的。 这里包括两个内容。 首先,自然的连接行必须是同名的。 此外,所有相同的列都是搜索条件。 自然连接和笛卡尔乘积的区别在于笛卡尔乘积可以随时获得两个数据表的所有记录查询密码的两个组合。 如果两个数据表中存在相同的等级,则Oracle将使用相同的等级作

15、为搜索标准。 相当于强制添加了条件where t1.column=t2.column。 但是,如果两个表不存在相同的列,则Oracle不添加搜索条件。 其效果相当于笛卡儿积。 例如,表departments和表jobs不在同一列,两者进行自然连接的结果定径套与笛卡儿积相同。3.4.2内连接查询、内连接是一般的多表查询,使用关牛鼻子字inner join。 其中可以省略inner,并且可以仅使用join关牛鼻子字来表示内连接。 如果要使用内连接查询多个表,则必须在from子句中定义on子句。 【例3-20】使用内部连接,询问法员工信息和有员工的部门名称,将job_id的值设为“ST_CLERK”

16、。3.4.3使用外连接查询、内连接进行多表查询时,返回的查询结果定径套仅包含满足查询条件和连接条件的行。 内连接将删除与另一个表中的行不匹配的行,而外连接将扩展内连接的结果定径套,该结果将返回部分或全部不匹配的行以及所有匹配的行。 这主要取决于外部连接的类型。 外部连接有左(外部)连接和右(外部)连接。 由于内部连接没有左右的区别,所以习惯将左外部连接和右外部连接简称为左连接和右连接。 3.4.3外连接查询,1左连接左连接的运算使用left join。 左连接的连接条件的左表没有限制。 【例3-21】在employees表中插入新的记录查询密码,使用左连接询问法员工信息和有员工的部门名称,要求

17、将job_id的值设为“IT_PROG”。3.4.3外连接查询,2 .右连接右连接运算使用right join。 对于右连接,右表没有限制。 【例3-22】与左连接相反,右连接将运算符右侧的表作为基表相关联。 右连接的运算符是right join,使用右连接重写示例3-21。3.4.3外连接查询、3 .外连接的简单写作实践使用left join和right join作为外连接,不仅仅是为了确定是否基于数据源。 因此,Oracle提供了外连接的简化表示法,在where条件下用()标识附属数据源中的列,并且省略了left join/right join和on关牛鼻子字。 【例3-23】可以用外部连

18、接的简单的改写方法改写例3-21。3.4.3外部连接查询、4简化标记的优劣较多时,使用简化标记会缩短查询密码长度,使基础表的调整变得容易。 例如,使用wheree.department _ id ()=d.department _ id将表d指定为基表,如果需要转换基表,则只需调整()的位置。 wheree.department _ id=d.department _ id ()。但是,如果在from子句中指定了多个数据源,则使用左/右关记数法字更容易维护。 3.4.3外连接查询,5完全连接完全连接实际上是左连接和右连接的组合。 也就是说,如果两个数据源使用完全连接,则首先进行左连接,然后进行右连接,最后删除重复的记录查询密码,得到完全连接。 完全连接必须使用full join牛鼻子字,使用on牛鼻子字指定连接条件。 【实施例3-24】例如,可以使用full join获得表employees和表departments的完整连接。 在3.5阶层化查询、关系数据库中,同一数据表中的不同查询密码之间存在平行关系。 但是,各记录查询密码之间也可能存在“父

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论