sql 多表查询结果验证

Posted 魔鬼式渐渐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于sql 多表查询结果验证的主要内容,如果未能解决你的问题,请参考以下文章

SQL 多表查询展示

SQL多表查询

sql多表连接查询问题

select 多表关联查询

SQL 多表查询

求SQL多表查询公式。从A表查询结果去关联B表里面的字段