`

oracle基础知识4_多表查询

    博客分类:
  • DB
 
阅读更多

 

   || 符号解释: 字符串连接,相当于 mssql中的 +

 

笛卡尔集:

 

联合两个表 emp, dept 查询数据,那么查询的结果:

1 列是两个表的列数相加

2 行数是这两个表的行数乘积

3 查询结果会在两个表形成笛卡尔集结果后在按照条件筛选得到。

 



 

 

笛卡尔集产生条件:

 

1 查询时省略连接条件

2 连接条件无效

3 所有表中的所有行相互连接

 

为了提高查询效率,应该让where条件的连接条件更有效

学多表下查询就是学连接条件如何写。

 

连接条件分类:

1 等值连接

查询员工信息: 员工号 姓名 月薪 部门名称

select e.empno,e.ename,e.sal,d.dname
    from emp e,dept d
    where e.deptno=d.deptno;

 

2 不等值连接

 select e.empno,e.ename,e.sal,s.grade
    from emp e,salgrade s
    where e.sal between s.losal and s.hisal;

 

3 外连接(在结果集中,包含某些不成立的记录)

看如下写法:

 

按部门统计员工人数

 select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
   from emp e,dept d
   where e.deptno=d.deptno
   group by d.deptno,d.dname

 

部门号 部门名称 人数
10 ACCOUNTING 3
20 RESEARCH 5
30 SALES 6

 

结果: 部门号40无法显示出来,虽然这部门下没人,但是按照题目要求,显示所有部门人数,应该显示40号部门为0人。

未显示原因:因为用条件 e.deptno=d.deptno,表emp中没有deptno=40的记录,因此查询结果必然没有40这项。

 

 

 

 

左外连接: 当where e.deptno=d.deptno不成立的时候,等号左边所代表的表记录 任然被包含

tablea left join tableb on 条件

右外连接: 当where e.deptno=d.deptno不成立的时候,等号右边所代表的表记录 任然被包含

tablea rigth join tableb on 条件

 

使用右外连接,达到需要的效果,语句如下:

select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
   from emp e right join dept d
   on e.deptno=d.deptno
   group by d.deptno,d.dname
   order by d.deptno ;

查询结果如下:

部门号 部门名称 人数
10 ACCOUNTING 4
20 RESEARCH 5
30 SALES 6
40 OPERATIONS 0

 

 

 

4 自连接(通过表的别名,将同一张表视为多张表====>就是自己跟自己连接查询,工作中常涉及到 部门表, 帖子表 设计成自连接查询)

 

select e.ename||'的领导是'||b.ename
   from emp e,emp b
   where e.mgr=b.empno;

 

FORD的领导是JONES
SCOTT的领导是JONES
JAMES的领导是BLAKE
TURNER的领导是BLAKE
MARTIN的领导是BLAKE

 

 

自连接操作不太适合操作太大的表,否则查询的时候产生的笛卡尔集会随着表记录增长而成平方级别的增长

 

 

5 层次查询(遍历的是一棵树,利用递归)

 

分析上面案例,得到领导和下属关系的树结构图如下:



 

 前一次操作的员工号是后一次操作的领导号

select level,empno,ename,sal,mgr
    from emp
    connect by prior empno=mgr
    start with mgr is null
    order by level;  --->  可以修改成 order by 1;   1表示查询条件的第一个字段,即level

 

 

执行的过程:
 1. KING: start with mgr is null ---> empno=7839
 2. where mgr = 7839; ---> 7566 7698 7782
 3. where mgr in (7566 7698 7782)

 

 结果:

LEVEL EMPNO ENAME SAL MGR
1 7839 KING 5000  
2 7566 JONES 2975 7839
2 7698 BLAKE 2850 7839
2 7782 CLARK 2450 7839
3 7902 FORD 3000 7566
3 7521 WARD 1250 7698
3 7900 JAMES 950 7698
3 7934 MILLER 1300 7782

 

 

多表连接查询案例;

查询员工工资大于本部门平均工资的员工信息:(涉及的知识1 子查询 2 多表查询 3 函数 4 分组)

 

select e.empno,e.deptno,e.ename,e.sal,d.avgsal
 from emp e,(select deptno,avg(sal)avgsal from emp group by deptno) d
  where  e.deptno= d.deptno and e.sal > d.avgsal;

 

EMPNO DEPTNO ENAME SAL AVGSAL
7698 30 BLAKE 2850 1566.66667
7499 30 ALLEN 1600 1566.66667
7902 20 FORD 3000 2175
7788 20 SCOTT 3000 2175
7566 20 JONES 2975 2175
7839 10 KING 5000 3687.5
1001 10 Tom_ABCD 6000 3687.5

 

 

 

 

 

 

 

 

  • 大小: 66 KB
  • 大小: 19.5 KB
分享到:
评论

相关推荐

    oracle基础知识考试题_答案.zip

    这个"oracle基础知识考试题_答案.zip"压缩包文件包含了关于Oracle数据库的基础知识学习材料,特别是针对初学者或者准备Oracle相关资格考试的人员。 首先,Oracle数据库的核心概念包括SQL(结构化查询语言)的使用,...

    Oracle基础知识总结_oracle_

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性...

    Oracle数据库基础知识_ISSUE1.0.doc

    这份文档"Oracle数据库基础知识_ISSUE1.0.doc"旨在介绍Oracle数据库的基础知识,帮助初学者理解和掌握Oracle数据库的核心概念。 课程说明部分可能包含课程的目标、教学方法以及相关资料的提供,为学习者提供了整体...

    oracle_instantclient_19_3_windows_x64_19.3.zip

    综上所述,"oracle_instantclient_19_3_windows_x64_19.3.zip"是一个针对64位Windows系统的Oracle数据库客户端工具,它提供了字符集兼容性增强,以及用于数据库连接、查询和管理的基础组件。正确配置和使用Oracle ...

    oracle基础知识以及多表查询笔记

    自学oracle时的笔记,oracle基础入门,常用函数,多表查询范例

    oracle基础知识入门

    对于初学者来说,掌握Oracle基础知识是进入数据库领域的第一步。本文将深入浅出地介绍Oracle数据库的一些核心概念和基本操作,帮助你快速入门。 一、Oracle数据库系统概述 Oracle数据库是由美国Oracle公司开发的,...

    ORACLE-select-query.rar_oracle_多表查询

    本压缩包“ORACLE-select-query.rar”专注于讲解Oracle数据库中的查询技术,特别是多表查询、子查询以及高级子查询。下面将详细探讨这些关键知识点。 首先,基础查询SQL语句是所有数据库操作的基础,它涵盖了SELECT...

    oracle基础知识整理

    以下是一些Oracle基础知识的详细解释: 1. SQL*Plus工具:这是Oracle数据库管理员(DBA)和开发人员常用的命令行界面,用于执行SQL查询和其他数据库操作。`set linesize` 和 `set pagesize` 用于调整输出的行宽和每...

    odt.rar_odt_oracle_oracle O_oracle ODT

    学习和掌握Oracle ODT,开发者需要了解Oracle数据库的基本概念,如SQL语言、PL/SQL编程,以及Visual Studio的基础知识。此外,对于想要深入使用ODT的开发者,还需要熟悉Oracle的其他相关技术,比如Oracle Data ...

    oracle 基础知识整理

    总结,Oracle基础知识涵盖了数据库架构、数据类型、SQL操作、表空间管理以及备份恢复策略等多个方面。掌握这些基础知识对于理解和使用Oracle数据库至关重要,有助于构建高效稳定的企业级数据环境。

    Oracle基础知识

    Oracle 基础知识是学习 Oracle 的基础,它包括了 SQL 概述、数据库概念、表结构、SQL 分类、数据结构、查询语句等内容。 内容 -------- ### SQL 概述 SQL(Structured Query Language)是一种标准化的数据库...

    oracle基础知识回顾与练习.zip

    本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...

    SQL(oracle).rar_oracle_oracle sql_oracle 总结_pl sql_sql

    `oracle_总结`标签提示,这份资料可能是对Oracle数据库使用和管理的关键知识点的汇总,可能包括表的创建、索引的使用、事务管理、视图的创建与应用、数据库备份与恢复策略等。数据库性能优化也是Oracle管理的重要...

    oracle 基础知识总结初学者必备

    ### Oracle基础知识总结初学者必备 Oracle数据库作为一款广泛使用的数据库管理系统,在企业和开发领域扮演着重要的角色。对于初学者而言,掌握其基础知识是非常必要的。本文将根据提供的内容进行深入解析,并结合...

    Oracle-DSI.rar_Oracle-DSI_oracle_oracle dsi_oracle pdf

    Oracle DSI,全称为Oracle Data Services Infrastructure,是Oracle数据库系统中的一个重要组成部分,主要涉及数据服务的基础设施和性能优化。在11gR2版本中,Oracle对DSI进行了显著的改进,以提升整体数据库的性能...

    oracle数据库基础知识

    这是我学习过程中整理的oracle数据库基础知识,里面包含了DML、DDL等相关语句。还解释了什么情况下该用什么样的SQL。包含了很多基础知识。欢迎大家收藏。

    PLSQL.rar_oracle_oracle ppt_oracle projects_plsql ppt_plsql proj

    标签中的"oracle_ppt"可能代表压缩包中含有关于Oracle的PowerPoint演示文稿,这些PPT可能包含了Oracle数据库的基础知识、高级特性、最佳实践等内容,适合学习和培训。"oracle_projects"和"plsql_ppt"、"plsql_...

    oracle基础知识考试题_答案借鉴.pdf

    oracle基础知识考试题_答案借鉴.pdf

Global site tag (gtag.js) - Google Analytics