加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【Oracle】——内连接、外连接

发布时间:2020-12-12 14:54:44 所属栏目:百科 来源:网络整理
导读:有些业务复杂的时候,在数据层会涉及到几张数据表联查的情况,最近也是在工作中经常会遇到这一部分的内容,所以特此总结一下。 建表语句 CREATE TABLE userser(NAME VARCHAR(20),sex VARCHAR(20));INSERT INTO userer values ('张三','男');INSERT INTO user

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

建表语句

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的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

总结

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读