首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle 数据库入门之----------------------多表查询

多表查询   SQL> --工资总额 SQL> select sum(sal) from emp;     SUM(SAL)                                                                                                                                                                                              ...                                                                                                                 已选择...                                                                                                                                                                            已选择...SQL> --多个列的分组: 先按照第一个列分组,如果相同,再第二个列分组,以此类推 SQL> --查询平均工资大于2000的部门 SQL> select deptno,avg(sal)   2

58700
您找到你想要的搜索结果了吗?
是的
没有找到

Oracle多表查询、子查询实战练习

DEPTNO FROM EMP E WHERE E.SAL=(SELECT MAX(SAL) FROM EMP M WHERE M.DEPTNO=E.DEPTNO) ORDER BY DEPTNO; --使用多表连接查询...(SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO) ORDER BY DEPTNO; 2.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称 --左自连接和多表查询...DEPT D WHERE M.EMPNO(+)=E.MGR AND E.HIREDATE<M.HIREDATE AND E.DEPTNO=D.DEPTNO ORDER BY E.EMPNO; --相关子查询多表查询...JOB为CLERK的所有部门编号,将该子查询结果命名为A;2.再从EMP表查询与A查询中部门编号相同的员工所在的部门人数,这一步的查询结果命名为B;3.最后从EMP表、DEPT表和B查询中进行多表查询获取...如果不使用DISTINCT,查询结果会出现很多一样的重复数据!*/ 分析:为什么说上面的SQL语句不算完美呢?

1.3K10

快速学习Oracle-多表查询

1.多表连接基本查询 使用一张以上的表做查询就是多表查询 语法: SELECT {DISTINCT} *|列名.....范例:查询员工表和部门表 ?...如果多张表进行一起查询而且每张表的数据很大的话笛卡尔积就会变得非常大,对性能造成影响,想要去掉笛卡尔积我们需要关联查询。...关联之后我们发现数据条数是 14 条,不在是 56 条。 多表查询我们可以为每一张表起一个别名 ? 范例:查询出雇员的编号,姓名,部门的编号和名称,地址 ?...外连接(左右连接) 右连接 当我们在做基本连接查询的时候,查询出所有的部门下的员工,我们发现编号为 40 的部门下没有员工,但是要求把该部门也展示出来,我们发现上面的基本查询是办不到的 ?

41430

Oracle总结【SQL细节、多表查询、分组查询、分页】

这里写图片描述 ---- 多表查询、子查询 当我们一张表不能把数据查询出来的时候,就需要连接其他的表一起查询…. 当我们的查询条件还没知道的时候,我们就可以使用子查询…....一般地,子查询多表查询的功能都是差不多的…....这里写图片描述 连接 在多表查询的时候,我们由于会产生笛卡尔积,于是在笛卡尔积表中会存在很多无关的数据…为了剔除这些数据,我们将用到where字句将笛卡尔积表筛选成有用的数据表 一般地,我们有几种连接:...这里写图片描述 那现在问题来了,在Oracle中有的功能我们可以使用多表查询来完成,有的时候我们又可以使用子查询来完成,那么我们一般选择哪一个呢???? 我们看下图来比较一下他们的优劣: ?...这里写图片描述 综上所述:在Oracle中使用多表查询性能可能比子查询好一些 ---- Oracle分页 在讲解JDBC的时候,我们就已经讲过Oracle与Mysql的分页问题了….详情可以看我的博文:

2.5K100

Oracle学习笔记_04_多表查询

(3)非自连接        vs         自连接 2.笛卡尔集:  所有表中的所有行互相连接    产生条件:(1)多表查询没有连接条件...内连接   :  结果集中不包含一个表与另一个表不匹配的行     外连接   :  两个表在连接过程中除了返回满足连接条件的行以外(这里的数据是内连接查询到的),还返回左(或右)表中不满足条件的行 ,...department_name from employees e join departments d on e.department_id = d.department_id; (2)使用 join.. on..创建多表连接...注:  如果只是列名相同而数据类型不同,则会产生错误。    employees表 和 departments表 有两个相同字段。使用NATURAL  JOIN ,会自动以这两个字段作为连接条件。...以上都是内连接 三.外连接 1.左外连接  左外连接:除了查询到满足条件的行之外,返回左表中不满足条件的行。

41730

Oracle函数学习(多表联合查询

多表联合查询: –当需要获取的数据分布在多张中,考虑使用联合查询 –SQL92方式 –SQL99方式 –SQL99多表查询 –注意1:依然可以给表添加别名 –注意2:如果使用on或者usering...排序等 –笛卡尔积:使用cross join 关键字 —select 内容 from 表名 cross join select * from emp cross join dept –筛选 –查询员工姓名...select * from emp natural join dept –解决1:使用using关键字 –作用1:指明使用指定的字段对联合查询的结果进行等值筛选 –注意:指明的字段必须是两表的同名同值字段...emp.deptno=dept.deptno where sal>2000 –外连接: –左外连接:select 内容 from 表名 left outer join 表名 on 连接条件 –查询员工姓名...left outer join dept d on e.deptno=d.deptno –右外连接:select 内容 from 表名 right outer join 表名 on 连接条件 –查询员工姓名

1K10

Oracle 查询技巧与优化(二) 多表查询「建议收藏」

——多表查询的技巧与优化方式,下面依旧通过一次例子看一个最简单的多表查询。...)是我在项目中运用最多的形式之一,暂不评论好坏与效率,总之查询结果是很好的展现出来了,接下来就具体研究一下多表查询的几种方式与区别。...在Oracle8i中这样也许还经常是正确的,但Oracle 9i CBO就已经优化了IN和EXISTS的区别,Oracle优化器有个查询转换器,很多SQL虽然写法不同,但是Oracle优化器会根据既定规则进行查询重写...多表查询时的空值处理 如题,假设有以下需求,我需要查询一下性别不为男的学生的录取分数,但在这之前我首先给学生表添加一条报名号(bmh_)为null的学生数据,如下所示: 接下来写查询语句,这里刻意用一下...总结 简单记录一下Oracle多表查询中的各种模式以及个人认为值得注意的一些点和优化方式,希望对读到的同学有所帮助和提高,The End。

1.5K20

数据库-多表查询-连接查询

数据库-多表查询-连接查询 同时查询多张表获取到需要的数据 比如:我们想查询到开发部有多少人,需要将部门表和员工表同时进行查询 多表查询的分类: 准备数据 -- 创建部门表 create table...-- 只查询一张表不能查询出员工名字和部门名字,需要使用多表操作 select * from emp, dept; 完成多表操作的两种方式: 表连接 子查询 1....笛卡尔积 概念 左表的每条数据和右表的每条数据组合成新的数据 如:查询员工表和部门表,查询数据如下,结果就是笛卡尔积的数据 select * from emp,dept; 1566353721827...使用右外连接查询: 基于右连接查询,不管 emp 的数据有没有关联 dept_id, 也可以查询出右表中的所有数据 mysql> select * from dept d right join emp...全外连接查询 full(Mysql不支持,Oracle支持,了解就可以) 在上面的操作中,我们已经执行了 左外连接 和 右外连接。那么如果我们想要两张表的所有数据同时查询出来呢?

13.4K20

oracle--多表联合查询sql92版

sql92学习 -查询员工姓名,工作,薪资,部门名称 sql的联合查询多表查询) --1、sql92标准 ----笛卡尔积:一件事情的完成需要很多步骤,而不同的步骤有很多种方式...--查询员工姓名,工作,薪资,部门名称 select * from emp,dept where emp.deptno=dept.deptno--使用等值链接进行结果筛选 select...ename,job,sal,dname from emp,dept where emp.deptno=dept.deptno;--使用等值链接查询指定字段数据 select ename,job...,sal,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;--多表查询的时候,查看相同字段的值,必须声明所在表 select...;--多表查询中使用别名进行表的区分 select e.ename,e.job,e.sal,e.deptno,d.dname from emp e,dept d where e.deptno=

55810

多表连接查询

连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。...一、多表连接查询概述 1.1、什么是多表查询 连接是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获取数据。...所以这就是我们的多表查询。 1.2、多表查询的作用 比如: 我们想查询员工A的名字和他所在的部门的名字,则需要使用多表查询。 那么我们使用一条 SQL 语句查询多张表,因为查询结果在多张不同的表中。...这就是多表查询的作用。...1.3、多表查询分类 多表查询可以分为二类查询: **内连接:**隐匿内连接、显示内连接 **外连接:**左外连接、右外连接 1.4、笛卡尔积现象 1.4.1、数据准备 创建表和数据 #部门表 create

1.4K20

【MySQL数据库】多表关系与多表联合查询

目录 MySQL多表关系 一对一 一对多 多对多 MySQL外键约束 创建外键 数据插入 删除 多表联合查询 交叉连接查询 内连接查询 外连接查询查询关键字 自关联 MySQL多表关系 MySQL...多表联合查询 交叉连接查询 • 交叉连接查询返回被连接的两个表所有数据行的笛卡尔积 • 笛卡尔积 可以理解为一张表的每一行去和另外一张表的任意一行进行匹配...• 假如 A 表有 m 行数据, B 表有 n 行数据,则返回 m*n 行数据 • 笛卡尔积会产生很多冗余的数据,后期的其他查询可以在该集合的基础上进行条件筛选...EXISTS 该子查询如果“有数据结果”(至少返回一行数据), 则该EXISTS() 的结果为“true”,外层查询执行 该子查询如果“没有数据结果”(没有任何数据返回),则该EXISTS()的结果为...“false”,外层查询不执行 EXISTS后面的子查询不返回任何实际数据,只返回真或假,当返回真时 where条件成立 注意,EXISTS关键字,比IN关键字的运算效率高,因此,在实际开发中,特别是大数据量时

2.7K20

数据库,单表查询,多表查询,子查询

数据库查找方式进阶 一.单表查询 1.查看表单选择段落 1.disinct 所有内容去重:select disinct * from 表名称; 指定字段去重:select disinct 字段 from...限制显示记录 对于单页表操作 limit start count 其中start可以不填,不填默认从0开始,0是第一天记录 start表示起始位置,count 表示记录的数量 对于多页操作 分页原理:先查询数据条数...1) * b limit s b 6.正则匹配 语法 :where 字段名称 regexp '正则表达式' 注意:正则表达式不包括特殊字符如\w 二.多表查询 1.笛卡尔积查询 语法:select *from...表1,表2 他会把多个表每行与另外个表统统匹配上,其中会有一些脏数据,我们可以用里面值的关系进行连接 2.内连接查询 其本质就是笛卡尔积查询 区别是把,变成 join 且不能用where,要先用on根据里面值的关系拼接好了再用...by dept_id having avg(age) > 25); "多表查询方式: 先把数据拼接到一起 在加以筛选" select dept.name from emp inner join dept

5.3K40

【MySQL数据库】多表关系与多表联合查询

​​目录MySQL多表关系一对一一对多多对多MySQL外键约束创建外键数据插入删除多表联合查询交叉连接查询内连接查询外连接查询查询关键字自关联MySQL多表关系MySQL表与表之间的三种关系一对多关系...-- 注意必须先给主表添加数据添加从表数据 -- 注意给从表添加数据时,外键列的值不能随便写,必须依赖主表的主键列删除主表的数据被从表依赖时,不能删除,否则可以删除从表的数据可以随便删除多表联合查询​编辑...交叉连接查询 •交叉连接查询返回被连接的两个表所有数据行的笛卡尔积 •笛卡尔积可以理解为一张表的每一行去和另外一张表的任意一行进行匹配 •假如A表有m行数据,B表有n行数据,则返回m*n行数据 •笛卡尔积会产生很多冗余的数据...返回的数据类型单行单列:返回的是一个具体列的内容,可以理解为一个单值数据;单行多列:返回一行数据中多个列的内容;多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围;多行多列:查询返回的结果是一张临时表...), 则该EXISTS() 的结果为“true”,外层查询执行该子查询如果“没有数据结果”(没有任何数据返回),则该EXISTS()的结果为“false”,外层查询不执行EXISTS后面的子查询不返回任何实际数据

2.9K30
领券