1. 程式人生 > >sql 多表查詢結果驗證

sql 多表查詢結果驗證

插入數據 create reat sql語句 ont creat 卡爾 nbsp 總結

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的多表查詢(笛卡爾積原理)

驗證過程:

建立表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 多表查詢結果驗證