mysql为什么要有左外连接和右外连接?

作者&投稿:子车窦 (若有异议请与网页底部的电邮联系)
mysql左连接和右连接什么区别~

一般所说的左连接,外连接是指左外连接,右外连接。做个简单的测试你看吧。
先说左外连接和右外连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1;

ID NAME
---------- --------------------
1 aaa
2 bbb

[TEST1@orcl#16-12月-11] SQL>select * from t2;

ID AGE
---------- ----------
1 20
3 30
左外连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id;

ID NAME ID AGE
---------- -------------------- ---------- ----------
1 aaa 1 20
2 bbb
右外连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id;

ID NAME ID AGE
---------- -------------------- ---------- ----------
1 aaa 1 20
3 30

从上面的显示你可以看出:左外连接是以左边的表为基准。通俗的讲,先将左边的表全部显示出来,然后右边的表id与左边表id相同的记录就“拼接”上去,比如说id为1的记录。如果没有匹配的id,比如说t1中id为2的t2中就没有。那边就以null显示。
右外连接过程正好相反。

再看内连接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id;

ID NAME ID AGE
---------- -------------------- ---------- ----------
1 aaa 1 20

看到没有? 只有一条记录。内连接就是只取出符合过滤条件的记录 也就是t1.id=t2.id 那么符合t1.id=t2.id的记录只有id=1这一条,所以只显示一条。 不像外连接,是将你作为基准的表(左外连接就是左边表为基准,右外连接就是右边表为基准)的所有行都显示出来。

一、数据集合不同
1、左外连接:是A和B的交集再并上A的所有数据。
2、右外连接:是A和B的交集再并上B的所有数据。
二、语法不同
1、左外连接:SELECT *FROM aLEFT OUTER JOIN bON a.`ageId` = b.`id`。
2、右外连接:SELECT *FROM aright OUTER JOIN bON a.`ageId` = b.`id`。


三、运算方式不同
1、左外连接:其运算方式为:A左连接B的记录=图3公共部分记录集C+表A记录集A1。
2、右外连接:其运算方式为:A右连接B的记录=图3公共部分记录集C+表B记录集B1 。

参考资料来源:百度百科-right join
参考资料来源:百度百科-外连接

以下均为个人看法,不喜勿喷。
(1)写法上的区别
现在是两张表,写起来简单,如果是多张表,多种连接,甚至包含子查询,那么如果只存在左连接或者右连接,那么写法上会麻烦很多。
比如 a left join b on XXX=xxxx
right join c XXX=xxxx
left join d XXX=xxx
where a.xxxx=F.xxxx
等等,甚至更麻烦一些,那么只存在一种连接的话,改写起来就会比较麻烦。
(2)语句只是工具
习惯上我们一般会找一个主表(起主要作用的表),并从它开始写相应的语句,假设只存在一种连接,那么为了写语句就可能会打乱思维方式。语句只是工具,当然是怎么方便怎么来,所以二者相应的都存在。
(3)语言的规范性
我说的是编程语言,只有左没有右,就好像只有前没有后,内部解析的时候可能都是一样的,但是外部写作的时候必须是完整的,如果只有做没有右,那么可能就是缺失的。

简单来看如下范例:

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



不一定,左连接,显示关键词left左边表中的所有数据,右边表数据数据少了补NULL值,数据多了不显示;右连接是以右边为参照,左边少了补NULL,多了删除。
左连接,以左表为参照,显示所有数据。
右连接,以右表为参照,显示所有数据。

这是个好问题 我觉得是因为在某些时候right join允许我们边写sql边思考,而不是全部构思好了再来写

没有表的sql语句怎么换,再说换来换去很麻烦


...全部用mysql数据库不是好好的吗?为什么还要花那么大的人力物力开发...
其本身的并行分布式的解决方案不是很成熟的,比如数据路由、数据复制、全局事务等方面,所以几乎每个厂商都要对mysql做自己的分布式解决方案,而且mysql还在不断的版本更新中,每次新版本发布,自己的分布式解决方案也要做适配,这是做OceanBase的原因之一。2、mysql的开源协议比PostgresSQL的协议的限制要多。3...

为什么会有这么多种的数据库_MySQL
我发现这种方法放在数据库上同样好用:Oracle: 我们需要企业级数据库。MySQL: Oracle不开源。PostgreSQL: MySQL的功能不够多。SQLite: 你可以把我嵌入到任何地方。这样,4种数据库够大家用了。MongoDB: 为什么我们要用join和模式(schema)?CouchDB: 为什么我们要有集合(collection)?Redis: 为什么我们要面向...

移动云云数据库MySQL对比传统自建数据库有什么优势?
相对于传统的自建数据库,移动云云数据库MySQL有以下优势:1、管理简单:移动云云数据库MySQL的管理比传统的自建数据库更加简单,因为移动云平台为您提供了一系列自动化管理工具,如备份、监控、扩容、负载均衡等,使得您不需要太多的技术经验就可以方便地管理您的数据库。2、可扩展性强:如果您的业务增长...

为什么有的公司买了Oracle还要用mysql
安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。如果是大中型应用程序,自然是选择Oracle,如果需求不大,mysql就会是一个很好的选择。

数据库软件都有那些?
企业里常用的数据库软件有Mysql、PostgreSQL、MicrosoftSQLServer、Oracle数据库、MongoDB。1、Mysql。MySQL原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQLAB公司,该公司于2008年被升阳微系统(SunMicrosystems)收购。2009年,甲骨文公司(Oracle)收购升阳微系统公司,MySQL成为Oracle旗下产品。

mysql和sql server有什么区别
应用环境:与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。以上内容参考:百度百科-mySQL ...

SQLserver 和Mysql的区别 各自有什么特点
2、Mysql:Mysql是开放源码软件。SQL Server的特点是可信任。使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序;高效。使得公司可以降低开发和管理他们的数据基础设施的时间和成本;智能。提供了一个全面的平台,可以在用户需要的时候给他发送观察和信息。Mysql的特点是其体积小...

oracle ,mysql 和sqlserver的主要区别有哪些?
但是sqlserver需要收费,mysql不用。三、如果按功能上来说,oracle最为强大,oracle支持递归查询,二后两者不支持;四、三个数据库中,只有sqlserver有完整的图形化操作界面,而oracle与mysql都要借助于其他的第三方数据库图形操作界面,比如oracle用的大多都是plsql。

postgresql和mysql哪个有前途
另外多线程架构和多进程架构之间没有绝对的好坏,oracle在unix上是多进程架构,在windows上是多线程架构。很多pg应用也是24\/7的应用,比如skype. 最近几个版本VACUUM基本不影响PGSQL 运行,8.0之后的PGSQL不需要cygwin就可以在windows上运行。至于说对于事务的支持,mysql和pgsql都没有问题。

为什么MYSQL很少人用视图,MYSQL的视图和MSSQL的视图有什么本质...
问题一:为什么MYSQL很少人用视图?答:mysql并不是很少人用,而是大部分一般直接通过sql查询的方式来实现类似view功能,不愿意 去增加这么一个过程,其实增加view还是有很多好处:简单性。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。安全性。通过视图用户只能查询和修改他们所能见到的数据。逻...

禹王台区13178289993: SQL 什么情况下使用左外连接呢 ? -
淳舍八味: 使用左外连接是为了让左边的表内容都显示出来.而右边的表的内容不要全显示出来了.在这种情况下才需要使用左外连接.

禹王台区13178289993: sql server 什么是全外连接,左外连接,右外连接,它们的区别又是什么? -
淳舍八味: 简单来讲,随便来个例子:A表 B表 id name id name 1 a 1 b 2 b 3 c4 c 左外连接就是以左表为准,去匹配右表,左表有多少条数据,结果就是多少条数据 select * from A left join B on A.id=B.id id name id name 1 a 1 b 2 b null null4 c null null 右外...

禹王台区13178289993: mysql左连接和右连接什么区别 -
淳舍八味: 一般所说的e5a48de588b63231313335323631343130323136353331333363376436左连接,外连接是指左外连接,右外连接.做个简单的测试你看吧. 先说左外连接和右外连接: [TEST1@orcl#16-12月-11] SQL>select * from t1;ID NAME ...

禹王台区13178289993: sql左外连接和右外连接 -
淳舍八味: 两个表: A(id,name) 数据: B(id,name) 数据:(1,学生)(2,老师)(4,校长)左连接结果: select A.*,B.* from A left join B on A.id=B.id; 1 张三 1 学生 2 李四 2 老师 3 王五 NULL NULL右链接结果: select A.*,B.* from A right join B on A....

禹王台区13178289993: MySQL中的左右连接和视图的区别? -
淳舍八味: 联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在.一个视图可以对应一个基本表,也可以对应多个基本表.视图是基本表的抽象和在逻辑意义上建立的...

禹王台区13178289993: SQL中外链接的左外链接和右外链接有什么区别 -
淳舍八味: 左外连接是通过左向外连接引用左表的所有行,而右外连接是通过右向外连接引用右表的所有行.

禹王台区13178289993: mysql的左连接和右连接是什么意思? - 技术
淳舍八味: left join 和 right join 用于将2个或以上表进行连接查询,left join会查出左表里所有数据,查出右表里满足条件的数据,而right join自然就是查出右表里所有数据,查出左表里满足条件的数据

禹王台区13178289993: SQL:左连接,右连接是什么概念啊 -
淳舍八味: SQL中左连接和右连接都属于外连接. 左连接是LEFT JOIN或LEFT OUTER JOIN,左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行.如果左表的某行在右表中没有匹配行,则在相关联的结果集...

禹王台区13178289993: mysql 左连接和右连接的区别 -
淳舍八味: 一般所说的左连接,外连接是指左外连接,右外连接.左连接:select 列1,列2,列N fromtableA left join tableBon tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看]where,having,group by ...照常写. 右连接:select 列1,列2,列N fromtableA right join tableBon tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看]where,having,group by ...照常写.

禹王台区13178289993: sql语句的左右外连接有什么好处,面试题,是好处不是区别 -
淳舍八味: 对于附表,即使不存在对应于主表的数据,也不影响主表的检索结果.比如说(简单举例):学生表(主表),选修课表(附表)因为选修课学生可以选择,也可以不选择.没选择选修课的学生在选修课表中没有记录.当检索条件是外连接时,检索结果会列出所有学生的信息,即使选修课没有记录的学生也能检索到.但如果不是外连接的话,没选课的学生信息在检索结果中就看不到了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网