oracle的内连接 外连接,【Oracle】——内连接、外连接

有些业务复杂的时候,在数据层会涉及到几张数据表联查的情况,最近也是在工作中经常会遇到这一部分的内容,所以特此总结一下。

建表语句

CREATE TABLE userser(NAME VARCHAR(20),sex VARCHAR(20));

INSERT INTO userer values ('张三','男');

INSERT INTO userser values ('李四','男');

INSERT INTO userser values ('王五','男');

INSERT INTO userser values ('赵柳','女');

CREATE TABLE student(NAME VARCHAR(20),sex VARCHAR(20));

INSERT INTO students values ('张三','男');

INSERT INTO students values ('李四','男');

INSERT INTO students VALUES ('莉莉','女');

INSERT INTO students VALUES ('张柳','女');

内连接 inner join

代表的数据查询之后结果,就是把两张表中都有的数据筛选出来,例如根据建表语句,筛选表userser和student中姓名相同的数据。

SELECT u.name 用户姓名,u.sex 用户性别,stu.name 学生姓名,stu.sex 学生性别 FROM u inner JOIN students stu ON u.name = stu.name

外连接 out join

1、left join

以左边的表的数据为主,如果右边的表没有,则查询数据显示为空

SELECT u.name 用户姓名,stu.sex 学生性别 FROM students stu left JOIN userer u ON u.name = stu.name

2、right join

与左连接基本一致,不过是以右侧表为主。

SELECT u.name 用户姓名,stu.sex 学生性别 FROM students stu right JOIN userer u ON u.name = stu.name

3、full join

其实就是左连接和右连接的集合,在连接过程中不存在的数据填充为空

SELECT u.name 用户姓名,stu.sex 学生性别 FROM students stu full JOIN userer u ON u.name = stu.name

内外连接中on和where的区别

1、inner join ...on 和 where

一样没有区别。

SELECT u.name 用户姓名,stu.sex 学生性别 FROM students stu,userer u WHERE u.name = stu.name

inner join...on 与where语句达到的效果一致。

2、外连接中on和where的区别

SELECT u.name 用户姓名,stu.sex 学生性别 FROM students stu LEFT JOIN userer u ON u.name = stu.name WHERE u.sex='男';

SELECT u.name 用户姓名,stu.sex 学生性别 FROM students stu LEFT JOIN userer u ON u.name = stu.name and u.sex='男'

原因:

1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

总结

数据库方面的知识还是必须的多用多练才能熟悉运用。持续学习。。。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值