自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)庫(kù)開(kāi)發(fā)應(yīng)知應(yīng)會(huì)之笛卡爾積

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
笛卡爾積是指在數(shù)學(xué)中,兩個(gè)集合X和Y的笛卡尓積(Cartesian product),又稱直積,表示為X × Y,第一個(gè)對(duì)象是X的成員而第二個(gè)對(duì)象是Y的所有可能有序?qū)Φ钠渲幸粋€(gè)成員。

 本文轉(zhuǎn)載自微信公眾號(hào)「活在信息時(shí)代」,作者活在信息時(shí)代。轉(zhuǎn)載本文請(qǐng)聯(lián)系活在信息時(shí)代公眾號(hào)。

很多數(shù)據(jù)庫(kù)開(kāi)發(fā)人員都聽(tīng)說(shuō)過(guò)笛卡爾積的概念,也可能偶爾碰上過(guò)因?yàn)镾QL語(yǔ)句或者數(shù)據(jù)表數(shù)據(jù)問(wèn)題而產(chǎn)生的笛卡爾積問(wèn)題。但是很多人對(duì)于笛卡爾積產(chǎn)生的原因和如何避免還是有些一知半解。所以我們今天就簡(jiǎn)單明了地給大家介紹一下什么情況下會(huì)產(chǎn)生笛卡爾積問(wèn)題,以及如何避免。

一、什么是笛卡爾積

笛卡爾積是指在數(shù)學(xué)中,兩個(gè)集合X和Y的笛卡尓積(Cartesian product),又稱直積,表示為X × Y,第一個(gè)對(duì)象是X的成員而第二個(gè)對(duì)象是Y的所有可能有序?qū)Φ钠渲幸粋€(gè)成員。

假設(shè)集合A={a, b}有兩個(gè)元素,集合B={0, 1, 2}有三個(gè)元素,則兩個(gè)集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}有2*3為6個(gè)元素。

在SQL查詢語(yǔ)句中,出現(xiàn)笛卡爾積的情況都是出現(xiàn)在關(guān)聯(lián)查詢上,具體包括下面兩種。我們以下面兩張表為例,給大家介紹一下。

第一張表是雇員表:有20條數(shù)據(jù),如下圖:

第二張表為工資表:也有二十條數(shù)據(jù),如下圖:

二、數(shù)據(jù)表關(guān)聯(lián)查詢時(shí),如果連接沒(méi)有ON條件,會(huì)出現(xiàn)全部笛卡爾積

對(duì)于以上的兩張表,如果我們查詢

select * from employees, salary

結(jié)果為:

可以看出,一共出現(xiàn)了20*20=400條數(shù)據(jù)。即出現(xiàn)了全部笛卡爾積。

三、數(shù)據(jù)表關(guān)聯(lián)查詢時(shí),如果ON條件字段是非唯一字段,會(huì)出現(xiàn)部分笛卡爾積

以上面的數(shù)據(jù)為例,如果我們以ejob字段進(jìn)行連接的話,語(yǔ)句如下:

select * from employees, salary where employees.ejob=salary.ejob

結(jié)果為:

可以看出,由于ejob不是唯一字段,最終出現(xiàn)了36條結(jié)果,也就是出現(xiàn)了部分笛卡爾積。

四、如何才能不出現(xiàn)笛卡爾積的查詢結(jié)果

為避免出現(xiàn)查詢結(jié)果為笛卡爾積的冗余數(shù)據(jù)情況,應(yīng)該在連接查詢時(shí),使用唯一字段進(jìn)行連接。

責(zé)任編輯:武曉燕 來(lái)源: 活在信息時(shí)代
相關(guān)推薦

2022-09-04 19:43:05

程序員數(shù)據(jù)庫(kù)

2011-05-20 13:33:14

SQL

2021-05-22 10:01:45

PythonPython列表Python程序開(kāi)發(fā)

2023-05-06 07:24:22

程序員視頻算法

2022-11-04 07:12:24

JavaScript基準(zhǔn)測(cè)試

2022-07-20 00:03:10

Python列表字典推導(dǎo)

2011-08-30 09:14:49

SQL ServerJOIN條件笛卡爾乘積

2022-12-02 07:16:29

MySQL函數(shù)日期

2022-11-09 07:18:18

驅(qū)動(dòng)測(cè)試BDD

2024-05-06 12:49:15

Linux文件系統(tǒng)

2011-08-22 16:08:46

IOS開(kāi)發(fā)數(shù)據(jù)庫(kù)

2018-05-17 11:06:52

數(shù)據(jù)庫(kù)SQL Server設(shè)計(jì)方案

2021-04-15 10:01:18

Sqlite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)知識(shí)

2011-08-02 16:43:26

iPhone開(kāi)發(fā) Ssqlite3 數(shù)據(jù)庫(kù)

2011-08-11 10:37:48

2023-05-10 08:41:40

二叉樹(shù)遍歷算法

2010-09-30 09:11:01

2021-09-06 10:24:12

鴻蒙HarmonyOS應(yīng)用

2010-09-30 08:27:48

2021-04-12 10:00:47

Sqlite數(shù)據(jù)庫(kù)CMD
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)