SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接)

03-29 8687阅读 0评论

目录

    • 一、连接的介绍
      • 连接是什么?
      • 连接分几种?
        • 条件连接
        • 等值连接
        • 自然连接
        • 二、连接的使用
          • 内连接 INNER JOIN
            • 内连接与等值连接区别
            • 内连接与自然连接区别
            • 外连接 OUTER JOIN
              • 左连接 LEFT JOIN
              • 右连接 RIGHT JOIN
              • 全外连接 FULL JOIN
              • 外连接规则

                一、连接的介绍

                连接是什么?

                连接(Join)是指将两个或多个表中的数据按照一定的条件关联起来,形成一个新的虚拟表。也可以理解为两个表的笛卡尔积中筛选符合条件的行。

                什么是笛卡尔积?

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第1张

                图中名词解析:

                元素:集合中{d1,d2},每一个值称为一个元素,如:d1是一个元素;在表中表示每一行;

                元组:一个元素就是一个元组,所以集合{d1,d2}中有2个元组,一个元组在数据表中指的是一行数据;

                分量:一个元组里的每一个值,如:元组d1的数据是[张三,24,湖北],那么张三就是一个分量;

                域:每一列数据称为一个域,如:元组d1的数据是[张三,24,湖北],元组d2的数据是[李三,25,湖南],那么 张三,李三 就是一个域;

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第2张

                连接分几种?

                三种类型:条件连接、等值连接、自然连接

                条件连接

                条件连接又称为θ连接

                定义:多个表的笛卡尔积中选取满足条件的行的连接(定义和连接定义一样,连接不分家)

                举例:select * from R,S where R.A

                1.现将R和S的笛卡尔积列出(R x S 中的x是笛卡尔积的集合运算符)

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第3张

                2.筛选出符合R.A

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第4张

                等值连接

                等值连接又称为逗号连接

                定义:特殊的条件连接,当条件连接的条件为“=”时,称为等值连接

                举例:

                select * from R,S where R.A = S.A 
                

                如图中圈出的两行则是SQL查询出来的数据

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第5张

                自然连接

                定义:特殊的等值连接,要求多个表有相同的属性字段,条件为相同的属性字段值相等,且再将表中重复的属性字段去掉,称为自然连接。

                举例:

                -- natural join:自然连接,不允许带on/using
                select * from R natural join S
                --上语句等价于下语句
                select R.A,R.B,R.C,S.D where R.A = S.A and R.C = S.C
                

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第6张

                二、连接的使用

                通过上述对连接的介绍,可以看出常使用的内连接、左连接、右连接等都是条件连接的衍生,下面具体看看它们之间的差别及使用。

                内连接 INNER JOIN

                内连接可以称为自然连接、等值连接

                内连接定义:从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。(对比外连接后就能明白了)

                内连接的语法如下:

                select fieldlist from table1 [inner] join table2 on table1.column=table2.column
                
                内连接与等值连接区别

                看定义和语法,是否和等值连接是那么一会事儿,其实是一回事情(等效)可以查看:https://blog.csdn.net/huanghanqian/article/details/52847835

                等值连接一般用where字句设置条件,内连接一般用on字句设置条件,但内连接与等值连接效果是相同的。

                内连接与自然连接区别

                内连接与自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件,连接条件中指出某两字段相等(可以不同名)。

                外连接 OUTER JOIN

                定义:外连接的作用是将关联查询中不满足关联条件的记录显示在结果集中。(内连接会丢失部分信息,外连接则补缺丢失部分信息)

                通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。

                以下是原始表

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第7张

                左连接 LEFT JOIN

                运算符为:⋊

                左外连接是将LEFT JOIN 左侧的表作为主表,结果集中会包含该表所有满足过滤条件的记录,当来自于LEFT JOIN 右侧表的字段时,不满足连接条件的记录值全为NULL。

                举例:

                select * from table1 left join table2 on table1.c=table2.c
                

                结果:

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第8张

                右连接 RIGHT JOIN

                运算符为:⋉

                右外连接是RIGHT JOIN 右侧的表作为主表,结果集中会包含该表所有满足过滤条件的记录,当来自于RIGHT JOIN 左侧表的字段时,不满足连接条件的记录值全为NULL。

                举例:

                select * from table1 right join table2 on table1.c=table2.c
                

                结果:

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第9张

                全外连接 FULL JOIN

                将左连接与右连接并集,可以达到全连接效果,UNION取并集

                举例:

                select * from table1 full join table2 on table1.c=table2.c
                -- 使用union的方式写则是
                select * from table1 left join table2 on table1.c=table2.c
                union
                select * from table1 right join table2 on table1.c=table2.c
                

                结果:

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第10张

                外连接规则

                左连右补,右连左补,全连左右合并

                菜鸟教程的图解

                SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接) 第11张


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,8687人围观)

还没有评论,来说两句吧...

目录[+]