数据库左连接、右连接、内连接、全连接

数据库左连接、右连接、内连接、全连接,第1张

1INNER JOIN (内连接)

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

            SELECT APK AS A_PK,AValue AS A_Value,BPK AS B_PK,BValue AS B_Value

            FROM table_a A

            INNER JOIN table_b B

            ON APK = BPK;

2LEFT JOIN (左连接)

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

用韦恩图表示如下:

                SELECT APK AS A_PK,AValue AS A_Value,BPK AS B_PK,BValue AS B_Value

               FROM table_a A

                LEFT JOIN  table_b B

                ON APK = BPK;

3RIGHT JOIN(右连接)

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

用韦恩图表示如下:

            SELECT APK AS A_PK,AValue AS A_Value,BPK AS B_PK,BValue AS B_Value

            FROM table_a A

            RIGHT JOIN  table_b B

            ON APK = BPK;

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

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

韦恩图表示如下:

            SELECT APK AS A_PK,AValue AS A_Value,BPK AS B_PK,BValue AS B_Value

            FROM table_a A

            FULL  JOIN table_b B

            ON APK = BPK;

悬浮元组:

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

1、 左连接

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

2、 右联接

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

3     全连接:

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

         内连接

                       等值连接

                       非等值连接

                       自链接

         外连接

                        左外连接

                        右外连接

                        全外连接

         交叉连接

inner

join

语句,还应该有个on

一般是两个表进行联合查询时候用到的语句。

inner

join

你可以理解为正联,通俗的讲,这个语句只显示符合on后面条件的值。

支持地不好。我一直用SQL,最近做一个小项目,为了安装方便,想用MDB的数据库,结果在选择里看到一个SQLCE,高兴坏了,就这样用起来了。查了资料,包括英文的,支持inner

join

比如"select

productCode,Classname

FROM

product

INNER

JOIN

product_class

ON

productproductclass=product_classid",

也支持"SELECT

productCode,Classname

FROM

product

p

INNER

JOIN

product_class

c

ON

pproductclass=cid",

但不支持"SELECT

productCode,Classname

FROM

product

p

INNER

JOIN

(select

id,classname

from

product_class)

as

c

ON

pproductclass=cid"

我是希望用最后一种办法的,这样jion之前就已经过滤了,这样速度快(SQLServer里是这样样)

关于SQL数据库中cross join 和inner join用法上的区别

举个简单的例子吧,从结果来理解比较具体些。

a表

name sex

张三 男

李四 女

b表

name age

李四 30

王五 23

1\全外连接

select aname,asex,bname,bage

from a full outer join b on aname=bname

结果如下,

name sex name age

张三 男 NULL NULL

李四 女 李四 30

NULL NULL 王五 23

关联字段name,左表有而右表没有的,如张三,bname,bage都为NULL,加上左右两边都有的就是左连接的结果;而右表有而左表表没有的,如王五,aname,asex都为NULL,加上左右两边都有的就是右连接的结果;左右两边都有的如,李四,这就是内连接。

--测试代码

--建立测试数据

create

table

#ta1(id

integer

,

aa

char(1))

create

table

#ta2(id

integer

,

aa

char(1))

insert

into

#ta1

select

1,'a'

insert

into

#ta1

select

2,'b'

insert

into

#ta2

select

1,'a'

insert

into

#ta2

select

3,'b'

insert

into

#ta2

select

4,'c'

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

--完全测试

select

aid,aaa,bid,baa

from

#ta1

a

inner

join

#ta2

b

on

aid=bid

/结论:

左表的id必须完全跟右表的id一致,不匹配的不显示

/

--左链接测试

select

aid,aaa,bid,baa

from

#ta1

a

left

join

#ta2

b

on

aid=bid

/

结论:

以左表作为基准,右表能匹配上的就显示出来,不匹配的就显示成NULL,

记录个数满足左表

/

--右连接测试

select

aid,aaa,bid,baa

from

#ta1

a

right

join

#ta2

b

on

aid=bid

/

和左连接一样,只是以右表为基准了

/

以上就是关于数据库左连接、右连接、内连接、全连接全部的内容,包括:数据库左连接、右连接、内连接、全连接、数据库中INNER JOIN的意思。、sqlce数据库查询时支持 inner join吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9343320.html

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

发表评论

登录后才能评论

评论列表(0条)

保存