oracle中left join和right join的区别浅谈

通俗的讲:

A   left   join    B    的连接的记录数与A表的记录数同

A   right   join    B    的连接的记录数与B表的记录数同

A   left   join    B    等价B   right   join    A

table    A:

Field_K,    Field_A

1                        a

3                        b

4                        c

table    B:

Field_K,    Field_B

1                        x

2                        y

4                        z

select    a.Field_K,    a.Field_A,    b.Field_K,    b.Field_B

from    a   left   join    b   on    a.Field_K=b.Field_K

Field_K          Field_A          Field_K          Field_B

----------    ----------    ----------    ----------

1                      a                     1                      x

3                      b                     NULL               NULL

4                      c                     4                      z

select    a.Field_K,    a.Field_A,    b.Field_K,    b.Field_B

from    a   right   join    b   on    a.Field_K=b.Field_K

Field_K          Field_A          Field_K          Field_B

----------    ----------    ----------    ----------

1                      a                     1                      x

NULL               NULL               2                      y

4                      c                     4                      z      --

举个例子:

假设a表和b表的数据是这样的。

a                          b

id      name  id      stock 

1  a             1         15

2          b             2         50

3          c                 

select   *   from    a   inner   join    b   on    a.id=b.id

这个语法是连接查询中的内连接,它产生的结果是

两个表相匹配的记录出现在结果列表中。

根据上面的表,出现的结果是这样的

a.id      name      b.id      stock

1        a             1         15

2              b             2         50

----------------------------

select   *   from    a,b   where    a.id=b.id

这个语法是内连接的另外一种写法,其执行结果与inner   join    一样

--------------------------------

select   *   from    a   left/right   join    b   on    a.id=b.id

这个是外连接语法中的左外连接或右外连接

如果是左外连接的话,它将显示a表的所有记录,

select    a.*,b.*   from    a   left   join    b   on    a.id=b.id

查询的结果是这样的:

a.id      name      b.id      stock

1          a         1             15

2                b         2             50

3                c       null         null 

--------------------------------------------

如果是右外连接的话,它将显示b表的所有记录,

select    a.*,b.*   from    a   right   join    b   on    a.id=b.id

查询的结果是这样的:

a.id      name      b.id      stock

1          a         1             15

2                b         2             50

--

select    a.*,b.*   from    a   left   join    b   on    a.k   =    b.k

select    a.*,b.*   from    a   left   outer   join    b   on    a.k   =b.k

----------上面两种一样left    join是left    outer    join的简写

select    a.*,b.*   from    a   left   inner   join    b   on    a.k   =    b.k

没有这种写法,错误的语句.

(0)

相关推荐

  • oracle中 procedure(存储过程)和function(函数)本质区别

    Oracle function里面是可以允许有DML语句的,但是不能在查询的时候使用. 我们常用的function如: select max(a) from table ; 这种调用方式是不能执行带有DML的FUNCTION的. 但是如果不用在SQL里面是可以有的 比如 dbms_output.put_line(func(...));   如果函数里面采用自治事务,是可以有DML 的. 什么是"自治事务": 自治事务是可以在其他事务中调用的独立事务. 自治事务可以使事务离开调用事务的上

  • Spring中的两种代理JDK和CGLIB的区别浅谈

    一.原理区别: Java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理. 1.如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 2.如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3.如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换 如何强制使用

  • Oracle中的Connect/session和process的区别及关系介绍

    Session:在计算机中,尤其是在网络应用中,称为"会话". Session:在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间. Connect.session.process的区别: 一个数据库的Connect可以有一个或多个session,同时connect也可以有一个或多个process. 在专业服务器连接方式中,一个session对应一个process,在共享服务器方式中,一个process可以

  • oracle中all、any函数用法与区别说明

    基础概念 在Oracle中,any()表示括号内任何一个条件,只要有一个满足即可:而all()表示所有的条件都满足才可以. 代码演示 1.all用法 --大于最大值 select * from A where id >= all(select id from A) --这相当于 select * from A where id >= (select max(id) from A) --小于最小值 select * from A where id <= all(select id from

  • oracle中left join和right join的区别浅谈

    通俗的讲: A   left   join    B    的连接的记录数与A表的记录数同 A   right   join    B    的连接的记录数与B表的记录数同 A   left   join    B    等价B   right   join    A table    A: Field_K,    Field_A 1                        a 3                        b 4                        c ta

  • java中equals和等号(==)的区别浅谈

    java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false.JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个eq

  • java中extends与implements的区别浅谈

    1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用2.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个

  • 浅谈java中null是什么,以及使用中要注意的事项

    1.null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,例如: Integer i=null; Float f=null; String s=null; 但是不能把null赋值给基本类型,如int ,float,double等 int k=null ----------编译器会报错cannot convert from null to int 2.null是关键字,像public.static.final.它是大小写敏感的,你不能将

  • java web学习_浅谈request对象中get和post的差异

    阅读目录(Content) •1.get与post的区别 •1.1 get方法 jsp中的代码form表单代码 •1.2 action包中servlet的doGet方法中的代码 •2.运行结果 •2.1 输入数据 •2.2 打印出数据 •3.post方法 •4.对比 •4.1 在输出页面按下F12查看 •5.分析 1.get与post的区别 Get和Post方法都是对服务器的请求方式,只是他们传输表单的方式不一样. 下面我们就以传输一个表单的数据为例,来分析get与Post的区别 1.1 get

  • 浅谈linux中sed命令和awk命令的使用

    本文主要研究的是linux中sed命令和awk命令的使用的相关内容,具体如下. 1.sed命令:没有重定向不会真正修改源文件中的内容 查询语句 ①sed -n '/sbin/p' passwd 表示查询出passwd文件中存在sbin字符的所有行并打印出来,其中两个/表示的是其中的是正则表达式,-n和/p是该命令的参数,需要联合使用 ②sed -n 'xp' passwd x是数字,表示打印出passwd文件中第x行的数据 新增语句 ①sed '1a 这是第一行后面添加的内容' passwd 其

随机推荐