概述

表连接分为内连接和外连接

内连接

内连接实际上就是利用where子句对两张表形成的笛卡尔集进行筛选,我们前面学习的查询都是内连接,也是在开发过程中用的最多的连接查询。

基本语法:

select  字段1,字段2,. . .  from 表1  inner join 表2  on  条件 . . .

select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno; 等同于

select emp.ename,dept.dname from emp inner join dept on emp.deptno=dept.deptno;

外连接

左外连接     (如果左侧的表完全显示我们就说是左外连接)

右外连接      (如果右侧的表完全显示我们就说是右外连接)

完全外连接    (完全显示两个表,没有匹配的记录置为空)

SQL> create table stu(id number,name varchar2(32));

SQL> create table exam(id number,grade number);

实际应用

显示所有人的成绩,如果没有成绩,也要显示该人的姓名和ID号,成绩显示为空。

select stu.name,stu.id,exam.grade from stu,exam where stu.id=exam.id;

上面我们使用的内连接:它的特点是只有两张表同时匹配,才被选择。

使用左外连接:

select stu.name,stu.id,exam.grade from stu left join exam on stu.id=exam.id;

如果stu(左表)的记录没有和exam任何一条记录匹配,也要被选中。

怎么判断一张表是左边,如果在left join左边,就是左表。

另外一种写法:

select stu.name,stu.id,exam.grade from stu,exam where stu.id=exam.id(+);

右连接(显示所有成绩,如果没有名字匹配,显示空)

select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;

完全外连接(显示所有成绩和所有人的名字,如果相应的匹配值,则显示空)

说明:有外联,指定是右边的表如果没有和左边任何一条记录匹配,也要被选中。

另外还有一种写法:

select stu.name,stu.id,exam.grade from stu,exam where stu.id(+)=exam.id;

把(+)写在左边,就表示右外联。

小结:实际上左外联和右外联是可以互为转换

显示所有人的成绩,如果没有成绩,也要显示该人的姓名和ID号,成绩显示为空。

(1)select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;

(2)select stu.name,stu.id,exam.grade from stu,exam where stu.id(+)= exam.id;

(3)select stu.name,stu.id,exam.grade from exam left join stu on stu.id=exam.id;

(4)select stu.name,stu.id,exam.grade from stu,exam where exam.id= stu.id(+);

完全外连接(显示所有成绩和所有人的名字,如果相应的匹配值,则显示空)

即:两个表查询,不管有没有匹配,全都显示。

select stu.name,stu.id,exam.grade from stu full outer join exam on stu.id=exam.id;

oracle表内连接和外连接的更多相关文章

  1. Oracle内连接、外连接、右外连接、全外连接小总结

    数据库版本:Oracle 9i 表TESTA,TESTB,TESTC,各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 ...

  2. Oracle 内连接和外连接

    内连接用于返回满足连接条件的记录:而外连接则是内连接的扩展,它不仅会返回满足连接条件的所有记录,而且还会返回满足不满足连接条件的记录!从Oracle9i开始,可以在From 子句中指定连接语法.语法如 ...

  3. SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)

    SQL Fundamentals || Oracle SQL语言 一.多表查询基本语法 在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积. 多表查 ...

  4. oracle中的内连接和外连接区别

    表t_user1,t_user2,t_user3,各有id,name两列 id name 1 10A 2 20A id name 1 10B 3 30B id name 1 10C 4 40C 连接分 ...

  5. oracle 内连接、外连接、自然连接、交叉连接练习

    oracle 内连接.外连接.自然连接.交叉连接练习 --查询员工信息 select * from emp; --查询部门信息 select * from dept; --需求:查询员工姓名.薪资和所 ...

  6. 【Oracle】内连接、外连接、(+)的使用

    表各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 40C 连接分为两种:内连接与外连接. A.内连接 内连接,即最常见 ...

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

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

  8. 【Oracle学习笔记-4】内连接和外连接的区别

    参考链接(非常棒) 摘要 下面主要以两个例子进行说明: 例子1: 表A结构如下: select * from A | 表B结构如下: select * from B 两个表要做连接,就必须有个连接字段 ...

  9. SQL多表联合查询(交叉连接,内连接,外连接)

    连接查询:     交叉连接:   交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积,也就是返回第一个表中符合查询条件的数据航数乘以第二个表中符合,查询条件的数据行数,例如department ...

随机推荐

  1. Ubuntu中安装gdal python版本

    安装过程: python包是从C++包中编译出来的,所以需要将源码下载进行编译安装 1.GDAL中的矢量数据处理OGR依赖于Geos,在安装GDAL之前要安装Geos Geos的下载地址:http:/ ...

  2. npm常用命令及版本号

    npm 包管理器的常用命令 测试环境为node>=8.1.3&&npm>=5.0.3 1, 首先是安装命令 //全局安装 npm install 模块名 -g //本地安装 ...

  3. 如何在TypeScript中使用JS类库

    使用流程 1.首先要清除类库是什么类型,不同的类库有不同的使用方式 2.寻找声明文件 JS类库一般有三类:全局类库.模块类库.UMD库.例如,jQuery是一种UMD库,既可以通过全局方式来引用,也可 ...

  4. Linux下读写UART串口的代码

    Linux下读写UART串口的代码,从IBM Developer network上拿来的东西,操作比較的复杂,就直接跳过了,好在代码能用,记录一下- 两个实用的函数- //////////////// ...

  5. day18 15.自定义连接池

    我们写的是连接池吗?Connection对象绝对不能关.现在写的玩意不是连接池.因为现在讲的是JDBC,连接池也是JDBC里面的,人家那是SUN公司定义的标准.标准,你那不是标准.既然是标准,你做连接 ...

  6. (转)Sql server中 如何用sql语句创建视图

    1.视图的作用 视图的作用: 第一点:使用视图,可以定制用户数据,聚焦特定的数据. 解释:     在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,     采购人员,可以需要一些与其 ...

  7. php分页查询的简单实现代码

    <body><h1>分页查询</h1><?phpinclude("DADB.class.php");$db=new DADB();$tj= ...

  8. 根据一个分类id 获取这个分类底下所有子分类的商品信息,根据下面方法查询出所有有关分类id 再 根据这些id去商品表里查询所有商品信息

    /** * 检测该分类下所有子分类,并输出ID(包括自己) * 数据库字段 catid pid */ function getChildrenIds ($sort_id){ include_once ...

  9. Vue--vue中的组件、组件绑定事件和数据、私有组件、子组件,父子组件参数互传

    一.公有组件以及组件的使用和特点 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  10. JAVA的一次编译,到处执行,你知道多少?

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangyongxia921/article/details/28117155   一.对AVA的迷茫 ...