zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    LeetCode_4——寻找两个有序数组的中位数
    Java的CAS与ABA问题
    跨域问题解决
    解决git-for-windows官网下载速度慢的问题
    Java对观察者模式的支持
    Java动态代理
    设计模式七大原则
    UML中的类图关系
    布隆过滤器(Bloom Filter)与Hash算法
    Ubuntu16安装fabric1.4.4环境
  • 原文地址:https://www.cnblogs.com/MarsDing/p/9856272.html
Copyright © 2011-2022 走看看