mysql数据库的左连接,右连接,内链接。有何区别

mysql数据库的左连接,右连接,内链接。有何区别,第1张

一般所说的左连接,外连接是指左外连接,右外连接。做个简单的测试你看吧。

先说左外连接和右外连接:

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

ID NAME

---------- --------------------

1 aaa

2 bbb

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

IDAGE

---------- ----------

1 20

3 30

左外连接:

[TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id

ID NAME IDAGE

---------- -------------------- ---------- ----------

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 IDAGE

---------- -------------------- ---------- ----------

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 IDAGE

---------- -------------------- ---------- ----------

1 aaa 1 20

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

综上所述,你应该能明白了吧?如果不明白请留言。

内连接关键字:inner join;左连接:left join;右连接:right join。 内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反。

1.INNER JOIN (内连接)

        内连接是一种一一映射关系,就是两张表都有的才能显示出来

            SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value

            FROM table_a A

            INNER JOIN table_b B

            ON A.PK = B.PK

2.LEFT JOIN (左连接)

        左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空显示,所谓的左边表其实就是指放在left join的左边的表

用韦恩图表示如下:

                SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value

               FROM table_a A

                LEFT JOIN  table_b B

                ON A.PK = B.PK

3.RIGHT JOIN(右连接)

        右连接正好是和左连接相反的,这里的右边也是相对right join来说的,在这个右边的表就是右表

用韦恩图表示如下:

            SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value

            FROM table_a A

            RIGHT JOIN  table_b B

            ON A.PK = B.PK

4.OUTER JOIN(外连接、全连接){mysql不支持外连接}

        查询出左表和右表所有数据,但是去除两表的重复数据

韦恩图表示如下:

            SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value

            FROM table_a A

            FULL  JOIN table_b B

            ON A.PK = B.PK

悬浮元组:

    在自然连接中,被舍弃的元组被称为悬浮元组

1、 左连接

    是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。左联接的结果集包括 LEFT 子句中指定的左表的所有行,而不仅仅是联接列所 匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

2、 右联接

    是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值

3     全连接:

        是返回两个表中的所有的值,没有对应的数据则输出为空。

         内连接

                       等值连接

                       非等值连接

                       自链接

         外连接

                        左外连接

                        右外连接

                        全外连接

         交叉连接


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7518540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存