oracle数据库连接查询

简单查询、复杂查询


简单查询: 单表


复杂查询:

1. 子查询(嵌套查询)

2. 连接查询

 

************************连接查询****************************


一.什么是连接查询


把多张表连接在一起,一块查


二.什么时候使用


数据来自于多张表的时候,要使用连接查询

 

三.连接查询的分类


1. 内连接

2. 外连接

3. 交叉连接

4. 自然连接


****************************************内连接******************************

--需求:查询部门编号为10的员工姓名、薪水、部门名称


--数据来自多张表的时候 使用连接查询

--sql1999

select e.ename,e.sal,d.deptno,d.dname from dept d inner join emp e

on(d.deptno = e.deptno)

where e.deptno=10

 

执行过程: 先拿着左表的第一条记录 和右表的所有记录进行匹配,如果满足

连接条件, 左表的记录和右表记录首尾相连...第一趟


第二趟 拿着左表的第二条记录 和右表的所有记录进行匹配,如果满足连接条件

首尾相连..依次类推

 

--sql1992

select e.ename,e.sal,d.deptno,d.dname from dept d ,emp e

where d.deptno = e.deptno and d.deptno=10


****************************************外连接******************************

分类:

1.左外连接

2.右外连接

3.全外连接

 


一.左外连接


--需求:查询员工姓名、薪水、部门名称

--保证左表的数据都有,要使用左外连接

--左外连接: 在内连接的基础上,保证左表的数据都有

select d.dname,e.ename,e.sal,d.deptno from dept d left outer join emp e

on(d.deptno = e.deptno)

 

outer 可以省略


sql1992


select d.dname,e.ename,e.sal,d.deptno from dept d,emp e

where d.deptno = e.deptno(+)


二.右外连接

在内连接的基础上,保证右表的数据都有,如果左表以空补齐


select d.dname,e.ename,e.sal,d.deptno from emp e right outer join dept d

on(d.deptno = e.deptno)


--sql1992


select d.dname,e.ename,e.sal,d.deptno from dept d,emp e

where d.deptno = e.deptno(+)


三.全外连接


左外连接的查询结果 并上 右外连接的查询结果


--sql1999
select d.dname,e.ename,e.sal,d.deptno from dept d full outer join emp e

on(d.deptno = e.deptno)

 

--sql1992
select d.dname,e.ename,e.sal,d.deptno from dept d,emp e

where d.deptno = e.deptno(+)


UNION

select d.dname,e.ename,e.sal,d.deptno from dept d,emp e

where d.deptno(+) = e.deptno

 

************************交叉连接 cross join (笛卡尔积)****************************

左表中的每一条记录 和右表中的 每一条记录 收尾相连 左边4条 右表14条 查询结果 一共 56条记录

sql 1999

select * from dept cross join emp


sql1992

select * from dept,emp

 


************************自然连接 natural join****************************


有点类似于 内连接,它和内连接的区别有两个


select * from dept natural join emp


(1) 不需要写连接条件


把两张表中 相同的字段(名称相同、类型相同) 自动作为连接条件 给你加上


(2) 会自动的把重复的字段去掉

 

******************************等值连接和非等值连接*****************************


一.等值连接


连接条件相等的为等值连接,刚才学的都属于等值连接


select ename,dname from emp join dept
on (emp.deptno=dept.deptno);//1999sql


select ename,dname from emp join dept
using (deptno);--等同于上面

 


二.非等值连接

连接条件不相等 例如 != > < between 时 连接两张表的数据

 

连接第三张表

--需求: 姓名、薪水、部门名称 、薪水等级


select e.ename,e.sal,d.dname,s.grade from dept d inner join emp e

on (d.deptno = e.deptno) inner join salgrade s

on (e.sal between s.losal and s.hisal)


******************************集合操作*****************************

1.UNION 并集 重复的只显示一次


第一张表的查询结果

UNION

第一张表的查询结果


2.UNION ALL 重复的显示多次


3. INTERSECT 交集


4. MINUS 差集

 

 

 

*****************--演示需求1:按照部门进行分组之后 每个部门赚钱最多的那个人********************


select t.deptno,e.ename,t.max_sal from emp e

inner join

(select deptno,max(sal) max_sal from emp group by deptno) t

on(e.deptno = t.deptno and e.sal = t.max_sal)


*****************************演示需求2:求每个部门的平均薪水的等级********************

 

--演示需求2:求每个部门的平均薪水的等级

select t.deptno,t.avg_sal,s.grade from

(select deptno,avg(sal) avg_sal from emp group by deptno) t

inner join salgrade s

on(t.avg_sal between s.losal and s.hisal)

 

*******************特殊的连接查询---自关联************************


需求: SMITH的上司叫什么


--需求: SMITH的上司叫什么

--1. 先查SMITH上司的编号

select mgr from emp where ename='SMITH'

--2.7902这个员工的姓名

select ename from emp where empno=7902

--合并

 

现在的需求: 把所有员工的姓名 和它的上司叫什么同时显示出来


自关联: 一张表当两张表使用,自己和自己进行连接查询,叫做自关联

 

select employee.ename,manager.ename from emp manager

right join emp employee

on(manager.empno = employee.mgr)

转载于:https://www.cnblogs.com/MrTanJunCai/p/9907393.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精美的手机界面设计素材和线框图设计工具推荐

在制作界面原型的时候&#xff0c;如果有现成的界面基础元素可以使用的话&#xff0c;设计师就可以非常快速的完成原型的制作&#xff0c;能够节省大量的时间和精力。在这篇文章&#xff0c;我向大家分享45套非常有用的 UI 和 Wireframe 套件素材包&#xff0c;帮助设计们用于 …

c语言求数列的和_例15:C语言求Fibonacci数列的前30个数

例15&#xff1a;求Fibonacci数列的前30个数。这个数列有以下特点&#xff1a;第1,2两个数为1,1,。从第三个数开始&#xff0c;该数是其前两个数之和。&#xff08;斐波那契不死神兔&#xff09;解题思路&#xff1a;从前两个月的兔子数可以推出第3个月的兔子数。设第1个月的兔…

哈工大未来计算机院士,中国双一流大学拥有院士校友数排名,这是真实力!哈工大依然很强...

原标题&#xff1a;中国双一流大学拥有院士校友数排名&#xff0c;这是真实力&#xff01;哈工大依然很强校友是一个神奇的资源&#xff0c;就是曾经在同一个学校、大学、研究院(所)进行学习、工作和进修的人&#xff0c;就称为校友&#xff0c;以学校为标准&#xff0c;并不以…

Java对象实习

Java将出现在源代码中的字符串竞争者存储在池中。 换句话说&#xff0c;当您有如下代码时&#xff1a; String a "I am a string"; String b "I am a string";变量a和b将具有相同的值。 不只是两个相等的字符串&#xff0c;而是完全相同的字符串。 用Ja…

GT sport赛道详解 - Dragon Trail | 龙之径

参考&#xff1a;GT sport所有赛道简介 今天的心情变化挺大&#xff0c;从绝望放弃到豁然开朗。 前言&#xff1a;GT sport有个排位赛&#xff0c;是每位sim赛车手提升自己等级的唯一途径&#xff0c;其中一个排位赛就是龙之径II&#xff08;逆时针跑&#xff09;&#xff0c;我…

优秀网页设计:带给你灵感的联系页面设计

在设计网站的时候&#xff0c;我们需要考虑到各个方面&#xff0c;从页眉到脚&#xff0c;从着陆页&#xff08;landing page&#xff09;到关于页&#xff08;about us page&#xff09;&#xff0c;还有联系页面&#xff08;contact page&#xff09;都要考虑。联系页面是网站…

LeetCode 494. Target Sum

作为一个超级小白&#xff0c;最近开始寻找互联网公司的就业机会&#xff0c;可是无奈代码关难过。于是最近开始刷LeetCode上的习题。 这道题其实可以转换为典型的动态规划01背包问题。它的描述如下&#xff1a; You are given a list of non-negative integers, a1, a2, ..., …

前端项目难点及解决方法_预埋件施工重点难点的解决方法

点击箭头处“蓝色字”&#xff0c;关注我们哦&#xff01;&#xff01;关于施工重难点的问题&#xff0c;可根据主体结构施工情况&#xff0c;想从根本上解决几大重难点&#xff0c;必须严格按照设计图纸及规范要求放线定位&#xff0c;将预埋件施工精度控制合格率&#xff0c;…

小学计算机课5年级第一课,人教版(2015)小学信息技术 五年级下册 第1课 录制声音真轻松 教案...

人教版(2015)小学信息技术 五年级下册 第1课 录制声音真轻松 教案第1课录制声音真轻松教学目标知识与技能:1、了解Audacity软件的界面。2、能够掌握声音录制和编辑的方法。3、了解声音文件的基本格式及转换方法。过程与方法:? ? ? ?兴趣是最好的老师,是最强大的动力,本节课…

MySQL 基础语句

1 USE qy97;/*使用数据库*/2 CREATE TABLE book (bid INT PRIMARY KEY AUTO_INCREMENT,bname VARCHAR(50),price DOUBLE);/*创建表格*/3 DESC book;/*查看表格的格式*/4 ALTER TABLE book MODIFY price INT;/*修改列的类型 MODIFY*/5 ALTER TABLE book CHANGE bname bnames V…

视差滚动(Parallax Scrolling)技术在网页中应用的精美案例

视差滚动&#xff08;Parallax Scrolling&#xff09;是一种独特的网页内容表现形式&#xff0c;其基本原理是让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来出色的视觉体验。作为今年网页设计的热点趋势&#xff0c;越来越多的网站应用了这项技术…

用Java可外部化

在理解Externalizable接口之前&#xff0c;您需要了解序列化。您可以在java中的序列化上阅读有关序列化的更多信息。 Java提供一种称为序列化的机制&#xff0c;以按字节顺序或字节顺序持久化Java对象&#xff0c;其中包括对象的数据以及有关对象的类型和存储在对象中的数据类…

批量删除html网页,批量删除.html · panghuamama/Clearly Local - Gitee.com

&#xfeff;批量删除$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.html; };…

apache camel 相关配置_使用apache camel从表中选择数据-问答-阿里云开发者社区-阿里云...

我希望能够使用Camel连续轮询数据库以从表中选择数据。我已经在我的Spring Boot应用程序中配置了Camel。这是我正在使用的配置build.gradle&#xff1a;implementation org.apache.camel:camel-jdbc-starter:2.24.0implementation org.apache.camel:camel-sql-starter:2.24.0Ro…

一些喜欢的诗词句子

原文链接&#xff1a;一些喜欢的诗词句子其一一些喜欢的诗词句子其二 清纳兰性德《酒泉子谢却荼蘼》 谢却荼蘼&#xff0c;一片月明如水。 篆香消&#xff0c;犹未睡&#xff0c;早鸦啼。 嫩寒无赖罗衣薄&#xff0c;休傍阑干角。 最愁人&#xff0c;灯欲落&#xff0c;燕还飞。…

[Swift]LeetCode1020. 飞地的数量 | Number of Enclaves

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

推荐30个新鲜出炉的精美 jQuery 效果

jQuery 是最流行和使用最广泛的 JavaScript 框架&#xff0c;它简化了HTML文档遍历&#xff0c;事件处理&#xff0c;动画以及Ajax交互&#xff0c;帮助Web开发人员更快速的实现各种精美的界面效果。jQuery 的易扩展性吸引了来自全球的开发者来共同编写 jQuery 插件&#xff0c…

Java常见陷阱

总览 Java是一种极简主义的语言&#xff0c;具有比其他语言故意更少的功能&#xff0c;尽管如此&#xff0c;Java仍然具有产生奇怪效果的边缘情况&#xff0c;甚至具有令人惊讶的效果的一些常见情况也会使您轻而易举。 如果您习惯于阅读另一种语言&#xff0c;则可以轻松地以错…

python高阶函数介绍_python高级特性和高阶函数及使用详解

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

会计专业计算机技能大赛,会计技能大赛策划

会计技能大赛策划一&#xff0e;活动背景会计是一个基于理论和实践相结合的学科&#xff0c;对于经管学院&#xff0c;会计专业是一个新创建的专业&#xff0c;缺少相应的会计实践。作为会计专业的学生&#xff0c;在不断学习理论的同时&#xff0c;我们更应该加强实践操作能力…