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

754638fb55ea0df8144435cb582b8fd1.png

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

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

7b18c26fafc08dde772fc9e9199ce206.png

外连接 out join

1、left join

63606ee0959803778e06612cfa6b3330.png

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

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

04a6331f322c742b4a72671eb28b127a.png

2、right join

6a0e09cf89a9e20b3b528089e883b338.png

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

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

bf30eda65ad7456ca7c5dba5c0e33164.png

3、full join

dc19be7bb9e945f8ca140b918ee2b959.png

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

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

3cf5104a37e2aedf050c2754305357c9.png

内外连接中on和where的区别

1、inner join ...on 和 where

一样没有区别。

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

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

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

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

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

ae34cb9c6606ea36582d229cd5f3a013.png

原因:

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

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

总结

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值