Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 370|回复: 0

[数据库学习]mysql中的左、右、内连接

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-31 00:00:45 | 显示全部楼层 |阅读模式
    下面是例子分析
    表A记录如下:
    aID aNum
    1    a20050111
    2    a20050112
    3    a20050113
    4    a20050114
    5    a20050115  表B记录如下:
    bID bName
    1    2006032401
    2    2006032402
    3    2006032403
    4    2006032404
    8    2006032408  实验如下:
    一、left join(左联接)  sql语句如下:
    SELECT * FROM a LEFT JOIN b ON a.aID =b.bID  结果如下:
    aID    aNum       bID   bName
    1    a20050111  1     2006032401
    2    a20050112  2     2006032402
    3    a20050113  3     2006032403
    4    a20050114  4     2006032404
    5    a20050115  NULL NULL
    (所影响的行数为 5 行)  结果说明:
    left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
    换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
    B表记录不足的地方均为NULL.  二、right join(右联接)  sql语句如下:
    SELECT * FROM a RIGHT JOING b ON a.aID = b.bID
    结果如下:
    aID aNum     bID bName
    1 a20050111 1 2006032401
    2 a20050112 2 2006032402
    3 a20050113 3 2006032403
    4 a20050114 4 2006032404
    NULL NULL 8 2006032408
    (所影响的行数为 5 行)  结果说明:
    仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.  三、inner join(相等联接或内联接)  sql语句如下:
    SELECT * FROM a INNER JOIN b ON a.aID =b.bID  等同于以下SQL句:
    SELECT * FROM a,b WHERE a.aID = b.bID  结果如下:
    aID aNum     bID bName
    1 a20050111 1 2006032401
    2 a20050112 2 2006032402
    3 a20050113 3 2006032403
    4 a20050114 4 2006032404  结果说明:
    很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

    LEFT JOIN操作用于在任何的 FROM 子句中,  组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即
    使在第二个(右边)表中并没有相符值的记录。  语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
    说明:table1, table2参数用于指定要将记录组合的表的名称。
    field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的
    名称。
    compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
    如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 01:05 , Processed in 0.383164 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表