• sql表连接的几种方式


    这里有两张表TableA和TableB,分别是姓名表和年龄表,用于我们例子的测试数据:

    表连接有几种?
    sql表连接分成外连接内连接交叉连接。
    一.外连接
    概述:
    外连接包括三种,分别是左外连接、右外连接、全外连接。
    对应的sql关键字:LEFT/RIGHT/FULL OUTER JOIN,通常我们都省略OUTER关键字,写成LEFT/RIGHT/FULL JOIN。
    在左、右外连接中都会以一种表为基表,基表的所有行、列都会显示,外表如果和条件不匹配则所有的外表列值都为NULL。
    全外连接则所有表的行、列都会显示,条件不匹配的值皆为NULL。
     
        1.左外连接示例:
        sql语句:  select * from TableA left join TableB on TableA.id=TableB.id
        结果:
        注释:TableA(基表)中所有的行列都显示了,第三行的条件不匹配所有TableB(外表)的值都为NULL。
       2.右外连接示例:
        sql语句: select * from TableA right join TableB on TableA.id=TableB.id
        结果:
        注释:TableB(基表)中所有的行列都显示了,第三行的条件不匹配所有TableA(外表)的值都为NULL。
       3.全外连接示例:
        sql语句:select * from TableA full join TableB on TableA.id=TableB.id
        结果:
        注释:TableA和TableB的所有行列都显示了,条件不匹配的行的值为NULL
    二.内连接

    概述:内连接是用比较运算符比较要连接的列的值的连接,不匹配的行不会被显示。sql关键字JOIN 或者INNER JOIN,通常我们写成JOIN
    例子:
        select * from TableA JOIN TableB on TableA.id=TableB.id
    结果:
    注释:只返回条件匹配的行
     
    以上写法等效于:
        select * from TableA,TableB where TableA.id=TableB.id
        select * from TableA cross join TableB where TableA.id=TableB.id (cross join 后只能用where不能用on)
    三.交叉连接
    概念:没有where条件的交叉连接将产生连接表所涉及的笛卡尔积。即TableA的行数*TableB的行数的结果集。(TableA 3行*TableB 3行=9行)
    sql语句:
        select * from TableA cross join TableB
    结果:
    注释:返回3*3=9行数据,即笛卡尔积。
     
    以上写法等效于:
    select * from TableA,TableB
  • 相关阅读:
    windows 按时自动化任务
    Linux libusb 安装及简单使用
    Linux 交换eth0和eth1
    I.MX6 GPS JNI HAL register init hacking
    I.MX6 Android mmm convenient to use
    I.MX6 GPS Android HAL Framework 调试
    Android GPS GPSBasics project hacking
    Python windows serial
    【JAVA】别特注意,POI中getLastRowNum() 和getLastCellNum()的区别
    freemarker跳出循环
  • 原文地址:https://www.cnblogs.com/tinyj/p/10035143.html
Copyright © 2020-2023  润新知