• 数据库操作-内连接外连接


    内连接: 只连接匹配的行
    左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
    右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
    全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。

    /**************************************************************************************/

    表A

    id   name
    1    张
    2    李
    3    王
    表B
    id   address   A_id
    1    北京      1
    2    上海      3
    3    南京      10
    /******************************** left join  左连接*****************************************/
    包容性:A表包容B表,左连接左表是全的.(left join 或 left outer join )
    SQL语句如下:
    SELECT A.name, B.address
    FROM A
    LEFT JOIN B ON A.id = B.A_id
    查询结果为:
    name     address
    张     北京
    李     NULL
    王     上海
    /******************************** right join  右连接*****************************************/
    包容性:B表包容A表,右连接右表是全的.(right join 或 right outer join )
    SQL语句如下:
    SELECT A.name, B.address
    FROM A
    RIGHT JOIN B ON A.id = B.A_id
    查询结果为:
    name     address
    张     北京
    王     上海
    NULL     南京
    /******************************** inner join  内连接*****************************************/
    排他性:A,B表中至少有1个匹配时,才返回行。两表的交集
    SQL语句如下:
    select A.name,B.address from A
    inner join B
    on A.id = B.A_id
    查询结果为:
    name     address
    张     北京
    王     上海
    inner join  内连接等价于下面的sql:
    SELECT A.name, B.address
    FROM A, B
    WHERE A.id = B.A_id
    /******************************** full join  全连接*****************************************/
    注释:全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于
    对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集
    。(full join 或 full outer join )
    SQL语句如下:
    select * from A
    full join B
    查询结果为:
    id     name     id     address A_id
    1     张     1     北京     1
    2     李     1     北京     1
    3     王     1     北京     1
    1     张     2     上海     3
    2     李     2     上海     3
    3     王     2     上海     3
    1     张     3     南京     10
    2     李     3     南京     10
    3     王     3     南京     10
    /******************************** CROSS JOIN(不带条件where...)***********************************/
    注释:返回3*3=9条记录,即笛卡尔积
    SQL语句如下:
    SELECT * FROM A
    CROSS JOIN B
    查询结果为:
    id     name     id     address A_id
    1     张     1     北京     1
    2     李     1     北京     1
    3     王     1     北京     1
    1     张     2     上海     3
    2     李     2     上海     3
    3     王     2     上海     3
    1     张     3     南京     10
    2     李     3     南京     10
    3     王     3     南京     10
    CROSS JOIN等价于:
    select * from A,B
  • 相关阅读:
    Python pip – error: invalid command ‘bdist_wheel’
    css实现文字两端对齐(兼容所有浏览器)
    webpack中的require.context
    node 的path模块中 path.resolve()和path.join()的区别
    react-native项目中遇到的问题
    react-native针对android改变状态栏样式
    createBottomTabNavigator: 怎么在切换tab的时候让页面重新渲染
    当vue页面异步加载的数据想在页面上渲染怎么办
    git分布式版本控制系统
    $router和$route的区别,路由跳转方式name 、 path 和传参方式params 、query的区别
  • 原文地址:https://www.cnblogs.com/menghen/p/12569473.html
Copyright © 2020-2023  润新知