SQL中左连接、右连接和内部连接的区别分析

SQL中左连接、右连接和内部连接的区别分析
今天和朋友谈谈,谈谈他们公司的小问题:

表设备表,存储MAC地址,省,市,区。

表B软件表,存储MAC地址,以及软件的名称。

功能是根据各省、市或地区查询软件列表。

猜猜现在是怎么做的

它通过一个省、一个城市或一个区域获取MAC地址,然后查询B表。

这显然是不合理的。为了处理这种多对多的关系,我们为什么不使用多表连接

链表有3种常用的方法:(内部)连接内部等效连接、左连接左连接和右连接右连接。

有差别吗怎么用它以下是一篇文章:

左联接(左连接)返回一个包含左表中所有记录和右表中的连接字段的记录。

右联接(右连接)返回一个包含右表中所有记录和左表中的连接字段的记录。

内部连接(等效连接)只返回两个表中相等连接字段的行。

例子如下:

表A的记录如下:

复制代码代码如下所示:

该援助

1 a20050111

2 a20050112

3 a20050113

4 a20050114

5 a20050115
表B记录如下:

复制代码代码如下所示:

投标bname

一百二十亿零六百零三万二千四百零一

二百二十亿零六百零三万二千四百零二

三百二十亿零六百零三万二千四百零三

四百二十亿零六百零三万二千四百零四

八百二十亿零六百零三万二千四百零八
1.left加入
SQL语句如下所示:

复制代码代码如下所示:

SELECT * FROM加入B a.aid =家左
结果如下:

复制代码代码如下所示:

援助该投标bname

1 a20050111 12006032401

2 a20050112 22006032402

3 a20050113 32006032403

4 a20050114 42006032404

5 a20050115零

(受影响的行数为5行)
结果如下:

左连接是基于一个表的记录,A可以被看作是一个左表,B可以被认为是正确的表,左连接是基于左表。

换句话说,在左表的记录(一)将所有的代表,和右表(B)只会显示符合搜索条件的记录(在例如:a.aid =家)。

缺少B表记录是空的。

2.right加入

SQL语句如下所示:

复制代码代码如下所示:

选择*从右加入B a.aid =家
结果如下:

复制代码代码如下所示:

援助该投标bname

1 a20050111 12006032401

2 a20050112 22006032402

3 a20050113 32006032403

4 a20050114 42006032404

空值82006032408

(受影响的行数为5行)
结果如下:

仔细查看后,您会发现左连接的结果正好相反。这一次是基于正确的表(b),如果表不够,则填充为null。

3.inner加入

SQL语句如下所示:

复制代码代码如下所示:

选择*从innerjoin B a.aid =家
结果如下:

复制代码代码如下所示:

援助该投标bname

1 a20050111 12006032401

2 a20050112 22006032402

3 a20050113 32006032403

4 a20050114 42006032404
结果如下:

很显然,只有一个记录a.aid =家示。这表明内部连接不是基于谁的,它只显示符合的记录。

注:

左连接操作用于将源表中的所有子句的记录组合在一起。使用左连接操作来创建一个左外部连接。左边的外部连接将包含从第一(左)开始的两个表中的所有记录,即使第二个(右)表中没有相应的值的记录。

语法:选择从表1左连接表上table1.field1 compopr table2.field2

解释uff1a

表1、附表2参数用于指定名称的表的记录相结合。

field1,field2参数指定的字段的名称加入,这些字段必须具有相同的数据类型,包含相同的数据类型,但他们并不需要相同的名字

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

如果在内部连接操作中加入包含备忘数据类型或OLE对象数据类型数据的字段,则会出现错误

因此,在我的理解中,sql应该编写这个:

选择从软件表内软件加入软件表设备表。MAC =设备表。MAC设备表。亲= 'xxx'and设备表。市城市= =;
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部