一、数据准备


1、emp表

delete from emp;
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800.00, null, 20); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600.00, 300.00, 30); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250.00, 500.00, 30); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975.00, null, 20); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250.00, 1400.00, 30); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850.00, null, 30); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450.00, null, 10); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7788, 'SCOTT', 'ANALYST', 7566, to_date('09-12-1982', 'dd-mm-yyyy'), 3000.00, null, 20); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000.00, null, 10); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500.00, 0.00, 30); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7876, 'ADAMS', 'CLERK', 7788, to_date('12-01-1983', 'dd-mm-yyyy'), 1100.00, null, 20); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950.00, null, 30); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000.00, null, 20); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300.00, null, 10); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (8000, 'mercury', 'hh', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300.00, null, 50);

2、dept表

delete from dept;
insert into dept (DEPTNO, DNAME, LOC)
values (10, 'ACCOUNTING', 'NEW YORK'); insert into dept (DEPTNO, DNAME, LOC)
values (20, 'RESEARCH', 'DALLAS'); insert into dept (DEPTNO, DNAME, LOC)
values (30, 'SALES', 'CHICAGO'); insert into dept (DEPTNO, DNAME, LOC)
values (40, 'OPERATIONS', 'BOSTON '); insert into dept (DEPTNO, DNAME, LOC)
values (60, 'test', 'test');

二、oracle连接操作


​ 有5种类型的连接:inner,outer,natural,cross连接,自连接。

1、交叉连接(笛卡尔积,cross join)

  • 说明

    返回的是被连接的两个表的所有数据行的笛卡尔积

  • 写法
select e.*,d.* from emp e cross join dept d;

等价于:
select e.*,d.* from emp e,dept d;
  • 查询结果

2、内连接(inner join)

  • 说明

    返回与连接条件匹配的数据行。(即两表都要存在)

    其中查询条件分为等值连接(比如:=)和不等连接(比如: >、>=、<=、<、!>、!<和<>)。

  • 写法
select e.*,d.* from emp e inner join dept d on e.deptno = d.deptno;

等价于:
select e.*,d.* from emp e join dept d on e.deptno = d.deptno;
  • 查询结果

3、外连接(outer join)

【1】左外连接(left join)

  • 说明

    返回左表所有数据和满足连接条件的右表数据

  • 写法
select e.*,d.* from emp e left join dept d on e.deptno = d.deptno;
  • 查询结果

    其中左表为emp表

【2】右外连接(right join)

  • 说明

    返回右表中所有数据和满足连接条件的表数据

  • 写法
select e.*,d.* from emp e right join dept d on e.deptno = d.deptno;
  • 查询结果

    其中右表为dept表

【3】全连接(full join)

  • 说明

    返回左表和右表中全部数据和满足连接条件的表数据(即为左外连接和右外连接之和)

  • 写法
select e.*,d.* from emp e full join dept d on e.deptno = d.deptno;
  • 查询结果

4、自连接

  • 说明

    连接的表是同一张表,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。(即自己关联自己)

  • 写法
select e.*,e2.* from emp e,emp e2 where e.empno = e2.empno and e.ename=e2.ename;
  • 查询结果

5、自然连接

  • 说明

    自然连接是把两张表中数据类型和名字都相同的字段自动连接起来,返回的字段不会重复(比如原来表a和表b都有字段c,那么只会显示一遍)

  • 写法
select * from emp e  natural join dept d  ;

注意:不能有限定符,比如:

select e.*,d.* from emp e  natural join dept d  ;
  • 查询结果

    ​ deptno只显示了一遍

【oracle】-表连接类型:内连接,外连接...的更多相关文章

  1. 【cl】多表查询(内、外连接)

    交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行    a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.u ...

  2. Oracle内链接+外连接详解

    inner join(内连接) 内连接也称为等同连接,返回的结果集是两个表中所有相匹配的数据,而舍弃不匹配的数据.也就是说,在这种查询中,DBMS只返回来自源表中的相关的行,即查询的结果表包含的两源表 ...

  3. mongodb 多表关联处理 : 内嵌以及连接(手动引用、DBref) 、aggregate中$lookup

    MongoDB与关系型数据库的建模还是有许多不同,因为MongoDB支持内嵌对象和数组类型.MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link).那么何时Embed何时Li ...

  4. Orcle数据库 表的 内置函数 内链接 外连接 相关练习题

  5. 关于数据库的左,右,内,外连接,Union和Union all---------笔记

    1.左连接 select a.filed1,a.filed2,b.filed1 from a (左表) left join b(右表) on a.commonfiled = b.commonfiled ...

  6. SQL Tuning 基础概述04 - Oracle 表的类型及介绍

    Tables A table describes an entity such as employees. You define a table with a table name, such as ...

  7. Oracle表添加主键、外键

    1.创建表的同时创建主键约束 (1)无命名 create table student ( studentid int primary key not null, studentname varchar ...

  8. 知识点:Oracle+表连接方式(内连接-外连接-自连接)+详解 来自百度文库

    Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)        (2)右外连接(右边的表不加限制)        (3)全外连接(左右 ...

  9. mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化

    先附上数据. CREATE TABLE `course` ( `cno` ) NOT NULL, `cname` ) CHARACTER SET utf8 NOT NULL, `ctime` ) NO ...

随机推荐

  1. __stdcall、__cdcel和__fastcall三者的区别

    转自:https://www.cnblogs.com/huhewei/p/6080143.html 一.概述 __stdcall.__cdecl和__fastcall是三种函数调用协议,函数调用协议会 ...

  2. Java实现上传文件到指定服务器指定目录(ChannelSftp实现文件上传下载)

    package com.tianyang.task.utils; import java.io.File;import java.io.FileInputStream;import java.io.I ...

  3. 题解:2018级算法第六次上机 C6-危机合约

    题目描述 样例: 实现解释: 没想到你也是个刀客塔之二维DP 知识点: 动态规划,多条流水线调度?可以看做一种流水线调度 坑点: 输入内容的调整(*的特殊判定),开头结尾的调整策略 从题意可知,要做的 ...

  4. MYSQL 之 JDBC(四): 增删改查(二)通过ResultSet执行查询操作

    /** * ResultSet:结果集.封装了使用JDBC进行查询的结果. * 1. 调用Statement对象的executeQuery(sql)方法 * 2. ResultSet返回的实际上就是一 ...

  5. java 数据结构(三):java常用类 三 日期时间API

    JDK 8之前日期时间API 1.获取系统当前时间:System类中的currentTimeMillis()long time = System.currentTimeMillis();//返回当前时 ...

  6. redis(十九):Redis 架构模式,特点

    单机版 特点:简单 问题: 1.内存容量有限 2.处理能力有限 3.无法高可用. 主从复制 Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的 ...

  7. 爬虫前篇 /https协议原理剖析

    爬虫前篇 /https协议原理剖析 目录 爬虫前篇 /https协议原理剖析 1. http协议是不安全的 2. 使用对称秘钥进行数据加密 3. 动态对称秘钥和非对称秘钥 4. CA证书的应用 5. ...

  8. Java数据类型自动转换(++ ,+=)

    在算术表达式中的自动类型转换 数据从类型范围小的自动向数据范围大的转换 整数向浮点数转换(包括long类型向float转换) 例子: char类型的范围内与整数之间转换依据ASCII表 强制转换会丢失 ...

  9. 十分钟快速搭建Python+Selenium自动化测试环境(含视频教程)

    文章首发于微信公众号:爱码小哥 准备安装包: 一:安装python:   双击python-3.7.6.exe执行文件 2.点击下一步正在安装: 3.如图所示表示安装完成: 校验环境是否安装成功:   ...

  10. CAS底层原理与ABA问题

    CAS定义 CAS(Compare And Swap)是一种无锁算法.CAS算法是乐观锁的一种实现.CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B.当预期值A和内存值V相同时,将内存值V修 ...