oracle左连接查询和右连接查询随便举个例子谢谢!

oracle左连接查询和右连接查询随便举个例子谢谢!,第1张

1、等值连接是最常见的一种连接查询,通常是在主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用“=”连接相关的表。

2、非等值连接是指在多个表中使用非等号连接,查询在多个表中有非等值关联关系的数据,非等值连接 *** 作符包括>、>=、<、<=、<>以及BETWEENAND、LIKE、IN等。

3、自连接是一种比较特殊的连接查询,数据来源是一个表。

4、左外连接是内连接的一种扩展,不止会返回满足连接条件的记录,还会返回那些不满足连接条件的 *** 作符左边表的其他记录。

5、右外连接和左外连接相似,右外连接不止会返回满足连接条件的记录,还会返回那些不满足连接条件的 *** 作符右边表的其他记录。

假设有A,B两个表。

表A记录如下:

aID aNum

1 a20050111

2 a20050112

3 a20050113

4 a20050114

5 a20050115

表B记录如下:

bID bName

1 2006032401

2 2006032402

3 2006032403

4 2006032404

8 2006032408

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

1left join

sql语句如下:

select from A

left join B

on AaID = BbID

结果如下:

aID aNum bID bName

1 a20050111 1 2006032401

2 a20050112 2 2006032402

3 a20050113 3 2006032403

4 a20050114 4 2006032404

5 a20050115 NULL NULL

(所影响的行数为 5 行)

结果说明:

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的

换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: AaID = BbID)

B表记录不足的地方均为NULL

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

2right join

sql语句如下:

select from A

right join B

on AaID = BbID

结果如下:

aID aNum bID bName

1 a20050111 1 2006032401

2 a20050112 2 2006032402

3 a20050113 3 2006032403

4 a20050114 4 2006032404

NULL NULL 8 2006032408

(所影响的行数为 5 行)

结果说明:

仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充

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

3inner join

sql语句如下:

select from A

innerjoin B

on AaID = BbID

结果如下:

aID aNum bID bName

1 a20050111 1 2006032401

2 a20050112 2 2006032402

3 a20050113 3 2006032403

4 a20050114 4 2006032404

结果说明:

很明显,这里只显示出了 AaID = BbID的记录这说明inner join并不以谁为基础,它只显示符合条件的记录

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

PS:

LEFT JOIN *** 作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1field1 compopr table2field2

说明:table1, table2参数用于指定要将记录组合的表的名称。

field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。

compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。

如果在INNER JOIN *** 作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误

注:left和right是外连接,Inner是内连接。

多看看SQL的帮助就明白了

A表 B表

a b a b

1 3 3 2

2 4 1 4

左连接:

select A,B from A LEFT JOIN B ON Ab=Bb;

结果

1 3

2 4 1 4

右连接:

select A,B from A RIGHT JOIN B ON Ab=Bb;

结果

2 4 1 4

3 2

一句话,左连接就是左边全部保留按条件查出右边,右连接就是右边全部保留按条件查出左边

简单说就是以谁为准就用谁!

以左数据为准去找满足条件的右数据,就用左外连;

以右数据为准去找满足条件的左数据,就用右外连;

INNER JOIN 就不用说了吧

比如A表有某些学生数据,B表部分A表内容中的一部分学生数据+A表没有的学生数据,

那么用左外连接 就是以A表学生数据为准,去找B表内容/或合并出另一个内容。

假设a表有两个字段,Aid、name, b 表也有两字段 Bid,nameid

其中 nameid是Aid在b 表中的外键。

a表有数据如下:

Aid name

1 a

2 b

3 c

b表有数据如下:

Bid nameid

1 1

2 1

3 1

4 2

5 2

用左连接,说白一点就是以左边那个表为标准,左边那表(表a)的所有记录必须得全部出现,例如:

select from a left join b on aAid=bnameid

结果应应该为:

Aid name Bid nameid

1 a 1 1

1 a 2 1

1 a 3 1

2 b 4 2

2 b 5 2

3 c NULL NULL

表a 的 Aid为1的出现了三次,Aid为2的出现了两次,Aid为3的出现了一次,全部都出现了。但因为在表b中没有以Aid为3对应的记录,所以用null来填充。

同样道理,用右连接,说白一点就是以右边那个表为标准,

例如:select from a right join b on aAid=bnameid

结果应该为:

Aid name Bid nameid

1 a 1 1

1 a 2 1

1 a 3 1

2 b 4 2

2 b 5 2

表b的记录必须全部出现,但没有出现 a表中Aid为3的记录,是因为b表中没有以之对应的记录,而且此时是以b表为标准的。这样的比喻不知你看不看得明。

来自>

数据库查询分为 单表查询、连接查询、嵌套查询、集合查询

其中连接查询指涉及两个及以上表的查询,有等值连接、非等值连接、自然连接、自身连接、外连接五种

等值连接和非等值连接指where子句的查询条件(由比较运算符连接起来的条件,比较运算符有= >= <= > < != 等)比如:

select student,sc from student,sc where studentsno=scsno

自身连接是对本身表的连接,即内连接,即给自己取一个别名,当作两张表使用

如查询每一们课的间接先修课

select firstcno,secondcpno from course first ,course second where firstcpno=secondcno

(其中cno为课程号,cpno为先修课号)

外连接为连接信息不全时使用,增加一个万能行,比如学生95003没有选课,那么在选课表(sc)中就没有相应的元组,但是我们想从student表为主体列出每个学生的基本情况及选课情况,若没个学生没有选课,只输出其基本情况,选课信息为空即可,这是就要用到外连接,比如:

select student,sccno,scgrade from studentsc

where studentsno=scsno();

其中scsno() 中的号就是右连接,若号出现在左边,就为左连接

自然连接指在广义笛卡儿积中去掉重复属性列的连接

具体资料请参阅一些数据库书籍:)

肯定是0啊,你的charche中,没有telephone=4210004的。

因为你是左连接,所以userlist表中的telephone=4210004的结果显示出来,可是charche中没有,按照道理应该是空,可是你不是nvl了么,所以就显示0了。

如果是等值连接inner join那么telephone=4210004这一行,应该是不显示的

以上就是关于oracle左连接查询和右连接查询随便举个例子谢谢!全部的内容,包括:oracle左连接查询和右连接查询随便举个例子谢谢!、数据库 *** 作:左连接和右连接到底怎么回事啊,我今天就没怎么搞明白、数据库 *** 作中,左连接,右连接是什么意思,举例说明等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9420222.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存