Oracle联合查询详解

2023-11-19

联合查询(多表连接)
概念:多张表连接,合并查询数据

分类:
1.笛卡尔积连接(交叉连接)
语法:
select t1.column1,t1.column2,t2.column1,t2.column2,… from table_name1 t1 cross join table_name2 t2;
select t1.col_list,t2.col_list from table_name1 t1,table_name2 t2;

关键字:cross join

select * from emp t1 cross join dept t2;

数据量:是两张表的数据的乘积

2.内连接
语法:
select t1.col_list,t2.col_list from table_name1 t1 [inner] join table_name2 t2 on t1.column1 = t2.column2;

关键字:inner join … on …

select t1.empno,t1.ename,t1.deptno,t2.deptno,t2.dname from emp t1 join dept t2 on t1.deptno = t2.deptno;

数据量:两张表所关联的数据的条数

3.自然连接(不常用)
语法:
select t1.col_list,t2.col_list from table_name1 t1 natural join table_name2 t2;

关键字:natural join

select * from emp t1 natural join dept t2;

学生表 老师表
id id
teacher_id

数据量:自动根据相同字段相关联,获取相关条件的数据

4.外连接
1)全外连接
语法:
select t1.col_list,t2.col_list from table_name1 t1 full [outer] join table_nema2 t2 on t1.column1 = t2.column2;

关键字:full [outer] join ... on ...

select t1.*,t2.* from emp t1 full join dept t2 on t1.deptno = t2.deptno;

数据量:相关联的数据全部展示,
        并左表数据全部展示,右表数据不匹配,以空值显示,
        右表数据全部展示,左表不匹配,以空值显示

2)左外连接
语法:
select t1.col_list,t2.col_list from table1 t1 left [outer] join table2 t2 on t1.column1 = t2.column2;
select t1.col_list,t2.col_list from table1 t1,table2 t2 where t1.column1 = t2.column2(+)

关键字:left [outer] join … on …

select * from emp t1 left join dept t2 on t1.deptno = t2.deptno;

数据量:左表数据全部展示,右表数据不匹配,以空值显示

3)右外连接
语法:
select t1.col_list,t2.col_list from table1 t1 right [outer] join table2 t2 on t1.column1 = t2.column2;
select t1.col_list,t2.col_list from table1 t1,table2 t2 where t1.column1(+) = t2.column2;

关键字:right [outer] join … on …

select * from emp t1 right join dept t2 on t1.deptno = t2.deptno;

数据量:右表数据全部展示,左表数据不匹配,以空值显示

5.自连接
自连接是一种特殊的连接,自己和自己连接
select t1.col_list,t2.col_list from table1 t1 join table1 t2 t1.column1 = t2.column2;

自连接关键字:可以是任何连接方式

–查询emp表中自己的领导
select t1.empno 员工编号,t1.ename 员工姓名,t1.mgr 领导编号,t2.empno “领导编号(empno)”,t2.ename 领导姓名 from emp t1 join emp t2 on t1.mgr = t2.empno;

6.不等连接
语法:
select t1.col_list,t2.col_list from table1 t1 join table2 t2 on t1.column1 != t2.column2;

select * from emp;
select * from dept;
select * from salgrade;

select *
from emp t1
join dept t2 on t1.deptno = t2.deptno
join salgrade t3 on t1.sal between t3.losal and t3.hisal;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle联合查询详解 的相关文章

  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • SQL UPDATE 语句根据另一个现有行更新列

    基本上我有一个与下表具有相似格式的表格 我想做的是根据这个逻辑更新 Col4 如果 Col2 为空 则用 Col3 更新 Col4 如果 Col2 不为 null 则在 Col1 中查找与 Col2 中的值匹配的值 使用 col3 中的相应
  • 删除表的重复项

    In my activity logs 它包含列 material name user id mod result 这标志着测试是否通过 失败 cert links 不知何故 用户生成了两倍的条目material name与cert lin
  • 如何在 Spring Data 中选择不同的结果

    我在使用简单的 Spring Data 查询或 Query 或 QueryDSL 在 Spring Data 中构建查询时遇到问题 如何选择三列 研究 国家 登录 不同的行 并且查询结果将是用户对象类型的列表 Table User Id S
  • Extbase - 从查询中获取创建的sql

    我想从我的typo3 扩展中获取一些数据库表 该扩展基于 extbase 查询总是不返回任何内容 但数据存在 我试过这个 query this gt createQuery query gt statement SELECT FROM my
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • 如何连续添加起始行和下一行的值

    我只想创建一个 sql 查询 结果就像图片上的那样 类似于 SQL 中的斐波那契数列 Ex Column 1 10 则 Result 列的值为 Result 10 因为这是第一行 然后假设column1第二行的值为50 那么Result第二
  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • Oracle即时客户端和Oracle客户端之间的区别

    Oracle即时客户端和Oracle客户端有什么区别 你能给我解释一下吗 谢谢 Oracle 客户端附带一个安装程序和许多可执行文件 例如 sqlplus tnsping 很完整而且很大 Oracle Instant 客户端是一个基本的轻量
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • SQL 错误:ORA-14006:无效的分区名称

    我正在尝试使用以下 SQL 语句对 Oracle 12C R1 中的现有表进行分区 ALTER TABLE TABLE NAME MODIFY PARTITION BY RANGE DATE COLUMN NAME INTERVAL NUM
  • Oracle JDBC 预取:如何避免 RAM 不足/如何使 oracle 更快高延迟

    使用 Oracle java JDBC ojdbc14 10 2 x 加载包含多行的查询需要很长时间 高延迟环境 这显然是 Oracle JDBC 中的默认预取默认大小 10 每 10 行需要一次往返时间 我正在尝试设置一个激进的预取大小来
  • H2 SQL 日期比较

    在 H2 数据库中 如何在 TIMESTAMP 类型的列上运行查询 SELECT FROM RECORDS WHERE TRAN DATE lt 2012 07 24 Try 2012 07 24
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • 时间序列数据的自连接

    我需要一些帮助来完成我认为应该是相当简单的自连接查询 只需要将两条记录中匹配的开始时间和结束时间合并为一条记录 假设我的表中有以下内容 Time Event 08 00 Start 09 00 Stop 10 30 Start 10 45
  • 如何在PL/SQL中模拟32位有符号整数溢出?

    您知道如何在 Oracle PL SQL 中模拟 32 位整数溢出吗 例如 2147483647 1 2147483648 or 2147483648 1 212147483647 我尝试了 PLS INTEGER 但它引发了溢出异常 我终
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t

随机推荐

  • 【测试】三张图解读 CI/CD

    文章目录 前言 CI CD 的概述 CI持续集成 Continuous Integration 持续集成小结 CD 持续交付 Continuous Delivery 持续交付小结 CD 持续部署 Continuous Deployment
  • Robotframework-ride / selenium 浏览器驱动插件下载地址

    chromedriver 驱动下载地址 http chromedriver storage googleapis com index html geckodriver 驱动下载地址 https github com mozilla geck
  • Vue第5天知识点:promise:异步函数与回调函数的说明嵌套、promise基本语法、解决回调函数问题以及优化、封装axios的发送、面试题循环队列以及宏任务与微任务、async和await

    promise 异步函数 与 回调函数的说明 异步函数 定时器setTimeout ajax 异步函数的执行 不会阻塞主线程代码的执行 回调函数 把一个函数当成参数传递 将来特定的时机调用 这个函数就叫回调函数 什么时候会用到回调函数 异步
  • Python之pdf内容读取

    import pandas as pd import pdfplumber with pdfplumber open r C Users 2023 02 开发 pdf as pdf for page in pdf pages 输出文本内容
  • 给出三个整数,判断大小

    7 2 比较大小 给出三个整数 判断大小 输入格式 给出三个整数a b c 输出格式 在一行中依次从小到大的顺序输出 两数之间有一个空格 无多余空格 输入样例 在这里给出一组输入 例如 2 1 5 输出样例 在这里给出相应的输出 例如 1
  • 串口接收中断进不去,如何解决

    串口配置代码 void USART Configuration void GPIO InitTypeDef GPIO InitStructure USART InitTypeDef USART InitStructure RCC APB2P
  • 自动化软件测试流程的七个步骤包括哪些内容

    自动化测试一般是指软件测试的自动化技术 自动化软件测试流程是把以人为驱动的测试行为转化为机器语言执行的一种过程 通常 在设计了测试用例并通过评审之后 由测试人员根据测试用例中描述的规程一步步执行测试 得到实际结果与期望结果的比较 在此过程中
  • Promise 捕获错误

    你好 我是南一 这是我在准备面试八股文的笔记 如果有发现错误或者可完善的地方 还请指正 万分感谢 前言 今天做项目时 遇到Promise抛出错误捕获不到的情况 然后我就去找了 阮一峰ES6入门重新学了一遍 又加深了对Promise的理解 分
  • 清除访问局域网密码缓存( samba )

    整了个samba的服务器 创建了两个用户 一个管理员用户 拥有全部的读写权限 另一个普通用户 只有部分文件夹得读写权限 xp在你第一次登录后会记住这个密码 以后登录都是直接登录 因此 给两个用户之间的切换带来不便 于是乎 找谷哥帮忙 谢谢谷
  • @前端vue-video-player 插件多视频获取后端数据的插件实践

    前端vue video player 插件多视频获取后端数据的插件实践总结 npm install npm install vue video player S 提醒 一定要用npm 一定要用npm 不要用cnpm 会报错 否则会报 The
  • 解决Android SDK / Android Studio(IntelliJ IDEA)更新不了(被墙)的问题

    昨天更新android sdk时 发现developer android com被墙了 手上也没有代理 再者android sdk manager更新有个不太好的地方是 只有一台机更新还好 但如果有多台机要更新 每台机都要重新下载一遍 那效
  • 神秘又强大的@SpringBootApplication注解

    一 前言 大部分的配置都可以用Java类 注解来代替 而在SpringBoot项目中见的最多的莫过于 SpringBootApplication注解了 它在每个SpringBoot的启动类上都有标注 这个注解对SpringBoot的启动和自
  • 解决VSCode中查看ESP32日志乱码

    问题现象 在VSCode的Monitor中查看ESP32输出的日志乱码 如下图 原因 在VSCode中IDF默认的Monitor串口波特率为460800 然而ESP32输出Log的串口波特率默认为115200 因串口波特率不匹配导致Moni
  • 墙裂推荐!pycharm装上这 14 个插件后,简直就是无敌的存在!!

    pycharm是一款强大的python集成开发环境 带有一整套python开发工具 今天就给大家介绍几款非常好用的插件 首先插件的下载方法 进入File gt Settings gt Plugins 根据需要搜索插件名称 记得是在Marke
  • jmeter 安装配置

    一 进入官网 http jmeter apache org 1 第一步进入官网如下图 2 选择进行下载 下载下来为一个压缩包 解压即可 3 下载完成后 然后就进行解压 要注意版本对应的java要求 解压完成后就要配置环境变量了 4 环境变量
  • C++中的compare比较字符串

    在C语言中的字符串比较使用的strcmp函数 但在C 中使用的是compare函数 格式 字符串A compare 字符串B 其中还可以指定子串比较 格式 A compare 0 3 B 4 3 说明字符串A中的从下标为0开始的3个字符和字
  • java中的NIO和IO

    今天看到一篇文章 其中提到了NIO 之前没使用过 今天拿出来学习下 做个个人分享 IO指的是流式处理 I对用的是Input O对应的是OutPut 也就是我们常用的IO IO流的数据来源可以是键盘 文件 网络等等 下面是其类图的划分 具体这
  • html字符实体

    比如我们想在网页上面显示一个 lt 小于符号 但是 lt 在HTML中是文档标记的开始语言 如果我们直接使用 lt 会出差错 所以我们就会一些实体名称来代替 显示结果 描述 实体名称 实体编号 空格 nbsp 160 lt 小于号 lt 6
  • python 无向图的生成

    import random n int input please input n m int input please input m v int input please input vote print int random unifo
  • Oracle联合查询详解

    联合查询 多表连接 概念 多张表连接 合并查询数据 分类 1 笛卡尔积连接 交叉连接 语法 select t1 column1 t1 column2 t2 column1 t2 column2 from table name1 t1 cro