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

 

posted @ 2018-10-26 14:48  魔鬼式渐渐  阅读(379)  评论(0编辑  收藏  举报