• sql 多表查询结果验证


    1.笛卡尔积

    定义:

    设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成的有序对,所有这样的有序对组成的集合
    ,叫做A与B的笛卡尔积,记作AxB.

    上面有一个很关键的词为“有序”,因此,我们来看一个例子:
    例如,A={a,b},B={0,1,2},则
      AxB={<a,o>,<a,1>,<a,2>,<b,0>,<b,1>,<b,2>,}
      BxA={<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b>}

    因此,一般地说,笛卡尔积运算不满足交换律,即AxB≠BxA

    2. sql语句:

    MSSQL的多表查询(笛卡尔积原理)

    验证过程(sql server management sudio):

    建立表A,B,C,D,且每个表都只创建一列

    代码如下:

    创建表

    • create table A (id int not null)
    • create table B (id2 int not null)
    • create table C (id3 int not null)
    • create table D (id4 int not null)

    插入数据

    • insert into A values(1),(2),(3)
    • insert into B values(1),(2),(3)
    • insert into C values(1),(2),(3),(4),(5)
    • insert into D values(1),(2)

    表示:

    A={1,2,3}

    B={1,2,3}

    C={1,2,3,4,5}

    D={1,2}

    查询数据:

    select * from A,B             select * from A,C              select * from A,D              

                               

    笛卡尔积为 B X A              笛卡尔积为 A X C                     笛卡尔积为 D X A       

    总结:

    记  A表的记录行的行数为n,B表的记录行的行数为m

      当 n 》m时,select * from A,B的结果集为笛卡尔积 B X A

      当 n < m时,select * from A,B的结果集为笛卡尔积 A X B

  • 相关阅读:
    redis中插入用户集合的语句,有四个属性
    springmvc的执行流程
    面试问题总结
    程序员
    RESTFUL
    京东京麦商家开放平台的消息推送架构演进之路
    stark组件开发之自动生成URL
    stark组件前戏之项目启动前加载指定文件
    权限分配实现思路
    批量操作权限的页面展示
  • 原文地址:https://www.cnblogs.com/MarsDing/p/9856272.html
Copyright © 2020-2023  润新知